Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
index c3bdae5d5d94a78b9cfa80d8087581f367118ec0..abaaaba3bf1492c37c120c29d447af9166bd4107 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
@@ -580,12 +580,14 @@ class GLES2DecoderImpl : public GLES2Decoder, |
virtual const char* GetCommandName(unsigned int command_id) const OVERRIDE; |
// Overridden from GLES2Decoder. |
- virtual bool Initialize(const scoped_refptr<gfx::GLSurface>& surface, |
- const scoped_refptr<gfx::GLContext>& context, |
- bool offscreen, |
- const gfx::Size& size, |
- const DisallowedFeatures& disallowed_features, |
- const std::vector<int32>& attribs) OVERRIDE; |
+ virtual bool Initialize( |
+ const scoped_refptr<gfx::GLSurface>& surface, |
+ const scoped_refptr<gfx::GLContext>& context, |
+ const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache, |
+ bool offscreen, |
+ const gfx::Size& size, |
+ const DisallowedFeatures& disallowed_features, |
+ const std::vector<int32>& attribs) OVERRIDE; |
virtual void Destroy(bool have_context) OVERRIDE; |
virtual void SetSurface( |
const scoped_refptr<gfx::GLSurface>& surface) OVERRIDE; |
@@ -1724,6 +1726,7 @@ class GLES2DecoderImpl : public GLES2Decoder, |
error::Error current_decoder_error_; |
bool use_shader_translator_; |
+ scoped_refptr<ShaderTranslatorCache> shader_translator_cache_; |
scoped_refptr<ShaderTranslator> vertex_translator_; |
scoped_refptr<ShaderTranslator> fragment_translator_; |
@@ -2285,6 +2288,7 @@ GLES2DecoderImpl::~GLES2DecoderImpl() { |
bool GLES2DecoderImpl::Initialize( |
const scoped_refptr<gfx::GLSurface>& surface, |
const scoped_refptr<gfx::GLContext>& context, |
+ const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache, |
bool offscreen, |
const gfx::Size& size, |
const DisallowedFeatures& disallowed_features, |
@@ -2319,6 +2323,8 @@ bool GLES2DecoderImpl::Initialize( |
context_ = context; |
surface_ = surface; |
+ shader_translator_cache_ = shader_translator_cache; |
+ |
ContextCreationAttribHelper attrib_parser; |
if (!attrib_parser.Parse(attribs)) |
return false; |
@@ -2750,8 +2756,7 @@ bool GLES2DecoderImpl::InitializeShaderTranslator() { |
if (workarounds().unroll_for_loop_with_sampler_array_index) |
driver_bug_workarounds |= SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX; |
- ShaderTranslatorCache* cache = ShaderTranslatorCache::GetInstance(); |
- vertex_translator_ = cache->GetTranslator( |
+ vertex_translator_ = shader_translator_cache_->GetTranslator( |
SH_VERTEX_SHADER, shader_spec, &resources, |
implementation_type, |
static_cast<ShCompileOptions>(driver_bug_workarounds)); |
@@ -2761,7 +2766,7 @@ bool GLES2DecoderImpl::InitializeShaderTranslator() { |
return false; |
} |
- fragment_translator_ = cache->GetTranslator( |
+ fragment_translator_ = shader_translator_cache_->GetTranslator( |
SH_FRAGMENT_SHADER, shader_spec, &resources, |
implementation_type, |
static_cast<ShCompileOptions>(driver_bug_workarounds)); |