Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Unified Diff: gpu/command_buffer/service/program_cache_unittest.cc

Issue 998423005: Updated shader program caching to account for transform feedback varyings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/program_cache_unittest.cc
diff --git a/gpu/command_buffer/service/program_cache_unittest.cc b/gpu/command_buffer/service/program_cache_unittest.cc
index 7a4cbcdb1274521f8b60a409adcaf9a516b258de..b1e40d404be93ef74f82871a7bbd1161f28f6143 100644
--- a/gpu/command_buffer/service/program_cache_unittest.cc
+++ b/gpu/command_buffer/service/program_cache_unittest.cc
@@ -20,14 +20,19 @@ class NoBackendProgramCache : public ProgramCache {
Shader* /* shader_a */,
Shader* /* shader_b */,
const LocationMap* /* bind_attrib_location_map */,
+ const std::vector<std::string>* /* transform_feedback_varyings */,
+ GLenum /* transform_feedback_buffer_mode */,
const ShaderCacheCallback& /* callback */) override {
return PROGRAM_LOAD_SUCCESS;
}
- void SaveLinkedProgram(GLuint /* program */,
- const Shader* /* shader_a */,
- const Shader* /* shader_b */,
- const LocationMap* /* bind_attrib_location_map */,
- const ShaderCacheCallback& /* callback */) override {}
+ void SaveLinkedProgram(
+ GLuint /* program */,
+ const Shader* /* shader_a */,
+ const Shader* /* shader_b */,
+ const LocationMap* /* bind_attrib_location_map */,
+ const std::vector<std::string>* /* transform_feedback_varyings */,
+ GLenum /* transform_feedback_buffer_mode */,
+ const ShaderCacheCallback& /* callback */) override {}
void LoadProgram(const std::string& /* program */) override {}
@@ -35,7 +40,9 @@ class NoBackendProgramCache : public ProgramCache {
void SaySuccessfullyCached(const std::string& shader1,
const std::string& shader2,
- std::map<std::string, GLint>* attrib_map) {
+ std::map<std::string, GLint>* attrib_map,
+ const std::vector<std::string>* varyings,
+ GLenum buffer_mode) {
char a_sha[kHashLength];
char b_sha[kHashLength];
ComputeShaderHash(shader1, a_sha);
@@ -45,6 +52,8 @@ class NoBackendProgramCache : public ProgramCache {
ComputeProgramHash(a_sha,
b_sha,
attrib_map,
+ varyings,
+ buffer_mode,
sha);
const std::string shaString(sha, kHashLength);
@@ -56,13 +65,18 @@ class NoBackendProgramCache : public ProgramCache {
ProgramCache::ComputeShaderHash(shader, result);
}
- void ComputeProgramHash(const char* hashed_shader_0,
- const char* hashed_shader_1,
- const LocationMap* bind_attrib_location_map,
- char* result) const {
+ void ComputeProgramHash(
+ const char* hashed_shader_0,
+ const char* hashed_shader_1,
+ const LocationMap* bind_attrib_location_map,
+ const std::vector<std::string>* transform_feedback_varyings,
+ GLenum transform_feedback_buffer_mode,
+ char* result) const {
ProgramCache::ComputeProgramHash(hashed_shader_0,
hashed_shader_1,
bind_attrib_location_map,
+ transform_feedback_varyings,
+ transform_feedback_buffer_mode,
result);
}
@@ -88,8 +102,8 @@ TEST_F(ProgramCacheTest, LinkStatusSave) {
std::string shader_b = shader2;
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
cache_->GetLinkedProgramStatus(
- shader_a, shader_b, NULL));
- cache_->SaySuccessfullyCached(shader_a, shader_b, NULL);
+ shader_a, shader_b, NULL, NULL, GL_NONE));
+ cache_->SaySuccessfullyCached(shader_a, shader_b, NULL, NULL, GL_NONE);
shader_a.clear();
shader_b.clear();
@@ -97,33 +111,35 @@ TEST_F(ProgramCacheTest, LinkStatusSave) {
// make sure it was copied
EXPECT_EQ(ProgramCache::LINK_SUCCEEDED,
cache_->GetLinkedProgramStatus(
- shader1, shader2, NULL));
+ shader1, shader2, NULL, NULL, GL_NONE));
}
TEST_F(ProgramCacheTest, LinkUnknownOnFragmentSourceChange) {
const std::string shader1 = "abcd1234";
std::string shader2 = "abcda sda b1~#4 bbbbb1234";
- cache_->SaySuccessfullyCached(shader1, shader2, NULL);
+ cache_->SaySuccessfullyCached(shader1, shader2, NULL, NULL, GL_NONE);
shader2 = "different!";
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ NULL, GL_NONE));
}
TEST_F(ProgramCacheTest, LinkUnknownOnVertexSourceChange) {
std::string shader1 = "abcd1234";
const std::string shader2 = "abcda sda b1~#4 bbbbb1234";
- cache_->SaySuccessfullyCached(shader1, shader2, NULL);
+ cache_->SaySuccessfullyCached(shader1, shader2, NULL, NULL, GL_NONE);
shader1 = "different!";
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ NULL, GL_NONE));
}
TEST_F(ProgramCacheTest, StatusEviction) {
const std::string shader1 = "abcd1234";
const std::string shader2 = "abcda sda b1~#4 bbbbb1234";
- cache_->SaySuccessfullyCached(shader1, shader2, NULL);
+ cache_->SaySuccessfullyCached(shader1, shader2, NULL, NULL, GL_NONE);
char a_sha[ProgramCache::kHashLength];
char b_sha[ProgramCache::kHashLength];
cache_->ComputeShaderHash(shader1, a_sha);
@@ -133,18 +149,21 @@ TEST_F(ProgramCacheTest, StatusEviction) {
cache_->ComputeProgramHash(a_sha,
b_sha,
NULL,
+ NULL,
+ GL_NONE,
sha);
cache_->Evict(std::string(sha, ProgramCache::kHashLength));
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ NULL, GL_NONE));
}
TEST_F(ProgramCacheTest, EvictionWithReusedShader) {
const std::string shader1 = "abcd1234";
const std::string shader2 = "abcda sda b1~#4 bbbbb1234";
const std::string shader3 = "asbjbbjj239a";
- cache_->SaySuccessfullyCached(shader1, shader2, NULL);
- cache_->SaySuccessfullyCached(shader1, shader3, NULL);
+ cache_->SaySuccessfullyCached(shader1, shader2, NULL, NULL, GL_NONE);
+ cache_->SaySuccessfullyCached(shader1, shader3, NULL, NULL, GL_NONE);
char a_sha[ProgramCache::kHashLength];
char b_sha[ProgramCache::kHashLength];
@@ -157,36 +176,46 @@ TEST_F(ProgramCacheTest, EvictionWithReusedShader) {
cache_->ComputeProgramHash(a_sha,
b_sha,
NULL,
+ NULL,
+ GL_NONE,
sha);
cache_->Evict(std::string(sha, ProgramCache::kHashLength));
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ NULL, GL_NONE));
EXPECT_EQ(ProgramCache::LINK_SUCCEEDED,
- cache_->GetLinkedProgramStatus(shader1, shader3, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader3, NULL,
+ NULL, GL_NONE));
cache_->ComputeProgramHash(a_sha,
c_sha,
NULL,
+ NULL,
+ GL_NONE,
sha);
cache_->Evict(std::string(sha, ProgramCache::kHashLength));
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ NULL, GL_NONE));
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader3, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader3, NULL,
+ NULL, GL_NONE));
}
TEST_F(ProgramCacheTest, StatusClear) {
const std::string shader1 = "abcd1234";
const std::string shader2 = "abcda sda b1~#4 bbbbb1234";
const std::string shader3 = "asbjbbjj239a";
- cache_->SaySuccessfullyCached(shader1, shader2, NULL);
- cache_->SaySuccessfullyCached(shader1, shader3, NULL);
+ cache_->SaySuccessfullyCached(shader1, shader2, NULL, NULL, GL_NONE);
+ cache_->SaySuccessfullyCached(shader1, shader3, NULL, NULL, GL_NONE);
cache_->Clear();
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ NULL, GL_NONE));
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader3, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader3, NULL,
+ NULL, GL_NONE));
}
} // namespace gles2

Powered by Google App Engine
This is Rietveld 408576698