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

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

Issue 1013463003: Update from https://crrev.com/320931 (Closed) Base URL: https://github.com/domokit/mojo.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
« no previous file with comments | « gpu/command_buffer/service/program_cache.cc ('k') | gpu/command_buffer/service/program_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..f4949ce28b844d943c7825e8fb12b2dd6865d135 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);
}
@@ -78,6 +92,7 @@ class ProgramCacheTest : public testing::Test {
protected:
scoped_ptr<NoBackendProgramCache> cache_;
+ std::vector<std::string> varyings_;
};
TEST_F(ProgramCacheTest, LinkStatusSave) {
@@ -88,8 +103,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, varyings_, GL_NONE));
+ cache_->SaySuccessfullyCached(shader_a, shader_b, NULL, varyings_, GL_NONE);
shader_a.clear();
shader_b.clear();
@@ -97,33 +112,35 @@ TEST_F(ProgramCacheTest, LinkStatusSave) {
// make sure it was copied
EXPECT_EQ(ProgramCache::LINK_SUCCEEDED,
cache_->GetLinkedProgramStatus(
- shader1, shader2, NULL));
+ shader1, shader2, NULL, varyings_, 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, varyings_, GL_NONE);
shader2 = "different!";
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ varyings_, 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, varyings_, GL_NONE);
shader1 = "different!";
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ varyings_, 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, varyings_, GL_NONE);
char a_sha[ProgramCache::kHashLength];
char b_sha[ProgramCache::kHashLength];
cache_->ComputeShaderHash(shader1, a_sha);
@@ -133,18 +150,21 @@ TEST_F(ProgramCacheTest, StatusEviction) {
cache_->ComputeProgramHash(a_sha,
b_sha,
NULL,
+ varyings_,
+ 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,
+ varyings_, 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, varyings_, GL_NONE);
+ cache_->SaySuccessfullyCached(shader1, shader3, NULL, varyings_, GL_NONE);
char a_sha[ProgramCache::kHashLength];
char b_sha[ProgramCache::kHashLength];
@@ -157,36 +177,63 @@ TEST_F(ProgramCacheTest, EvictionWithReusedShader) {
cache_->ComputeProgramHash(a_sha,
b_sha,
NULL,
+ varyings_,
+ 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,
+ varyings_, GL_NONE));
EXPECT_EQ(ProgramCache::LINK_SUCCEEDED,
- cache_->GetLinkedProgramStatus(shader1, shader3, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader3, NULL,
+ varyings_, GL_NONE));
cache_->ComputeProgramHash(a_sha,
c_sha,
NULL,
+ varyings_,
+ 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,
+ varyings_, GL_NONE));
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader3, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader3, NULL,
+ varyings_, 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, varyings_, GL_NONE);
+ cache_->SaySuccessfullyCached(shader1, shader3, NULL, varyings_, GL_NONE);
cache_->Clear();
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader2, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ varyings_, GL_NONE));
+ EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
+ cache_->GetLinkedProgramStatus(shader1, shader3, NULL,
+ varyings_, GL_NONE));
+}
+
+TEST_F(ProgramCacheTest, LinkUnknownOnTransformFeedbackChange) {
+ const std::string shader1 = "abcd1234";
+ std::string shader2 = "abcda sda b1~#4 bbbbb1234";
+ varyings_.push_back("a");
+ cache_->SaySuccessfullyCached(shader1, shader2, NULL, varyings_,
+ GL_INTERLEAVED_ATTRIBS);
+
+ EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ varyings_, GL_SEPARATE_ATTRIBS));
+
+ varyings_.push_back("b");
EXPECT_EQ(ProgramCache::LINK_UNKNOWN,
- cache_->GetLinkedProgramStatus(shader1, shader3, NULL));
+ cache_->GetLinkedProgramStatus(shader1, shader2, NULL,
+ varyings_, GL_INTERLEAVED_ATTRIBS));
}
} // namespace gles2
« no previous file with comments | « gpu/command_buffer/service/program_cache.cc ('k') | gpu/command_buffer/service/program_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698