Index: gpu/command_buffer/service/memory_program_cache_unittest.cc |
diff --git a/gpu/command_buffer/service/memory_program_cache_unittest.cc b/gpu/command_buffer/service/memory_program_cache_unittest.cc |
index a28b79d9f22dc232990da266c791a93e8c53ee6c..b6e157730c3b71b3a6970e36de4b962599d1fbb3 100644 |
--- a/gpu/command_buffer/service/memory_program_cache_unittest.cc |
+++ b/gpu/command_buffer/service/memory_program_cache_unittest.cc |
@@ -70,13 +70,15 @@ class MemoryProgramCacheTest : public GpuServiceTest { |
public: |
static const size_t kCacheSizeBytes = 1024; |
static const bool kDisableGpuDiskCache = false; |
+ static const bool kDisableCachingForTransformFeedback = false; |
static const GLuint kVertexShaderClientId = 90; |
static const GLuint kVertexShaderServiceId = 100; |
static const GLuint kFragmentShaderClientId = 91; |
static const GLuint kFragmentShaderServiceId = 100; |
MemoryProgramCacheTest() |
- : cache_(new MemoryProgramCache(kCacheSizeBytes, kDisableGpuDiskCache)), |
+ : cache_(new MemoryProgramCache(kCacheSizeBytes, kDisableGpuDiskCache, |
+ kDisableCachingForTransformFeedback)), |
shader_manager_(nullptr), |
vertex_shader_(nullptr), |
fragment_shader_(nullptr), |
@@ -537,6 +539,40 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentTransformFeedbackVaryings) { |
base::Unretained(this)))); |
} |
+TEST_F(MemoryProgramCacheTest, LoadFailIfTransformFeedbackCachingDisabled) { |
+ const GLenum kFormat = 1; |
+ const int kProgramId = 10; |
+ const int kBinaryLength = 20; |
+ char test_binary[kBinaryLength]; |
+ for (int i = 0; i < kBinaryLength; ++i) { |
+ test_binary[i] = i; |
+ } |
+ ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); |
+ |
+ // Forcibly reset the program cache so we can disable caching of |
+ // programs which include transform feedback varyings. |
+ cache_.reset(new MemoryProgramCache( |
+ kCacheSizeBytes, kDisableGpuDiskCache, true)); |
+ varyings_.push_back("test"); |
+ cache_->SaveLinkedProgram(kProgramId, |
+ vertex_shader_, |
+ fragment_shader_, |
+ NULL, |
+ varyings_, |
+ GL_INTERLEAVED_ATTRIBS, |
+ base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
+ base::Unretained(this))); |
+ EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( |
+ kProgramId, |
+ vertex_shader_, |
+ fragment_shader_, |
+ NULL, |
+ varyings_, |
+ GL_INTERLEAVED_ATTRIBS, |
+ base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
+ base::Unretained(this)))); |
+} |
+ |
TEST_F(MemoryProgramCacheTest, MemoryProgramCacheEviction) { |
const GLenum kFormat = 1; |
const int kProgramId = 10; |