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

Unified Diff: cc/output/program_binding.h

Issue 2626823002: The great shader refactor: Separate initialization from ctor (Closed)
Patch Set: Created 3 years, 11 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 | « cc/output/gl_renderer.cc ('k') | cc/output/shader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/shader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698