Index: cc/output/program_binding.h |
diff --git a/cc/output/program_binding.h b/cc/output/program_binding.h |
index 6f0e818b5ed1b6d93ce5531e06ee32f35a222dcd..2c414aed3b0218f6ef9db1395226916d54bc636d 100644 |
--- a/cc/output/program_binding.h |
+++ b/cc/output/program_binding.h |
@@ -62,16 +62,26 @@ class ProgramBinding : public ProgramBindingBase { |
void Initialize(ContextProvider* context_provider, |
TexCoordPrecision precision, |
SamplerType sampler) { |
- return Initialize( |
- context_provider, precision, sampler, BLEND_MODE_NONE, false); |
+ Initialize(context_provider, precision, sampler, BLEND_MODE_NONE, false); |
} |
void Initialize(ContextProvider* context_provider, |
TexCoordPrecision precision, |
SamplerType sampler, |
BlendMode blend_mode) { |
- return Initialize( |
- context_provider, precision, sampler, blend_mode, false); |
+ Initialize(context_provider, precision, sampler, blend_mode, false); |
+ } |
+ |
+ void InitializeVideoYUV(ContextProvider* context_provider, |
+ TexCoordPrecision precision, |
+ SamplerType sampler, |
+ bool use_alpha_plane, |
+ bool use_nv12, |
+ bool use_color_lut) { |
+ fragment_shader_.use_alpha_texture_ = use_alpha_plane; |
+ fragment_shader_.use_nv12_ = use_nv12; |
+ fragment_shader_.use_color_lut_ = use_color_lut; |
+ Initialize(context_provider, precision, sampler); |
} |
void Initialize(ContextProvider* context_provider, |
@@ -79,19 +89,29 @@ class ProgramBinding : public ProgramBindingBase { |
SamplerType sampler, |
BlendMode blend_mode, |
bool mask_for_background) { |
+ vertex_shader_.SetSubclassProperties(); |
+ fragment_shader_.SetSubclassProperties(); |
+ fragment_shader_.blend_mode_ = blend_mode; |
+ fragment_shader_.mask_for_background_ = mask_for_background; |
+ fragment_shader_.tex_coord_precision_ = precision; |
+ fragment_shader_.sampler_type_ = sampler; |
+ InitializeInternal(context_provider); |
+ } |
+ |
+ const VertexShader& vertex_shader() const { return vertex_shader_; } |
+ const FragmentShader& fragment_shader() const { return fragment_shader_; } |
+ |
+ private: |
+ void InitializeInternal(ContextProvider* context_provider) { |
DCHECK(context_provider); |
DCHECK(!initialized_); |
if (IsContextLost(context_provider->ContextGL())) |
return; |
- fragment_shader_.set_blend_mode(blend_mode); |
- fragment_shader_.set_mask_for_background(mask_for_background); |
- |
- if (!ProgramBindingBase::Init( |
- context_provider->ContextGL(), |
- vertex_shader_.GetShaderString(), |
- fragment_shader_.GetShaderString(precision, sampler))) { |
+ if (!ProgramBindingBase::Init(context_provider->ContextGL(), |
+ vertex_shader_.GetShaderString(), |
+ fragment_shader_.GetShaderString())) { |
DCHECK(IsContextLost(context_provider->ContextGL())); |
return; |
} |
@@ -111,11 +131,6 @@ class ProgramBinding : public ProgramBindingBase { |
initialized_ = true; |
} |
- const VertexShader& vertex_shader() const { return vertex_shader_; } |
- const FragmentShader& fragment_shader() const { return fragment_shader_; } |
- FragmentShader* mutable_fragment_shader() { return &fragment_shader_; } |
- |
- private: |
VertexShader vertex_shader_; |
FragmentShader fragment_shader_; |