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

Unified Diff: cc/output/shader.h

Issue 2628713002: The great shader refactor: Use ProgramKey to initialize shaders (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/program_binding.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/shader.h
diff --git a/cc/output/shader.h b/cc/output/shader.h
index 9d50182afa46bca37e57804d91e4db19353fb59c..81d4e10833dc29fc6b11a44cea7b4dbb58688920 100644
--- a/cc/output/shader.h
+++ b/cc/output/shader.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/logging.h"
#include "base/macros.h"
#include "cc/base/cc_export.h"
@@ -235,95 +236,163 @@ class VertexShaderBase {
class VertexShaderPosTex : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE;
- has_matrix_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(has_matrix_, true);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_NONE);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
}
};
class VertexShaderPosTexYUVStretchOffset : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE;
- has_matrix_ = true;
- is_ya_uv_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(has_matrix_, true);
+ DCHECK_EQ(is_ya_uv_, true);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_NONE);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
}
};
class VertexShaderPos : public VertexShaderBase {
public:
- void SetSubclassProperties() { has_matrix_ = true; }
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_matrix_, true);
+
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_NONE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_NONE);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(use_uniform_arrays_, false);
+ }
};
class VertexShaderPosTexTransform : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE;
- tex_coord_transform_ = TEX_COORD_TRANSFORM_VEC4;
- has_matrix_ = true;
- has_vertex_opacity_ = true;
- use_uniform_arrays_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_VEC4);
+ DCHECK_EQ(has_matrix_, true);
+ DCHECK_EQ(has_vertex_opacity_, true);
+ DCHECK_EQ(use_uniform_arrays_, true);
+
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
}
};
class VertexShaderQuad : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM;
- has_matrix_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM);
+ DCHECK_EQ(has_matrix_, true);
#if defined(OS_ANDROID)
- has_dummy_variables_ = true;
+ DCHECK_EQ(has_dummy_variables_, true);
#endif
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_NONE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_NONE);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
}
};
class VertexShaderQuadAA : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM;
- has_matrix_ = true;
- aa_mode_ = USE_AA;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM);
+ DCHECK_EQ(has_matrix_, true);
+ DCHECK_EQ(aa_mode_, USE_AA);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_NONE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_NONE);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
}
};
class VertexShaderQuadTexTransformAA : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM;
- tex_coord_source_ = TEX_COORD_SOURCE_POSITION;
- tex_coord_transform_ = TEX_COORD_TRANSFORM_TRANSLATED_VEC4;
- has_matrix_ = true;
- aa_mode_ = USE_AA;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM);
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_POSITION);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_TRANSLATED_VEC4);
+ DCHECK_EQ(has_matrix_, true);
+ DCHECK_EQ(aa_mode_, USE_AA);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
}
};
class VertexShaderTile : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM;
- tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE;
- tex_coord_transform_ = TEX_COORD_TRANSFORM_VEC4;
- has_matrix_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM);
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_VEC4);
+ DCHECK_EQ(has_matrix_, true);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
}
};
class VertexShaderTileAA : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM;
- tex_coord_source_ = TEX_COORD_SOURCE_POSITION;
- tex_coord_transform_ = TEX_COORD_TRANSFORM_VEC4;
- has_matrix_ = true;
- aa_mode_ = USE_AA;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM);
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_POSITION);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_VEC4);
+ DCHECK_EQ(has_matrix_, true);
+ DCHECK_EQ(aa_mode_, USE_AA);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
}
};
class VertexShaderVideoTransform : public VertexShaderBase {
public:
- void SetSubclassProperties() {
- tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE;
- tex_coord_transform_ = TEX_COORD_TRANSFORM_MATRIX;
- has_matrix_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(tex_coord_source_, TEX_COORD_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(tex_coord_transform_, TEX_COORD_TRANSFORM_MATRIX);
+ DCHECK_EQ(has_matrix_, true);
+
+ DCHECK_EQ(use_uniform_arrays_, false);
+ DCHECK_EQ(position_source_, POSITION_SOURCE_ATTRIBUTE);
+ DCHECK_EQ(is_ya_uv_, false);
+ DCHECK_EQ(has_dummy_variables_, false);
+ DCHECK_EQ(has_vertex_opacity_, false);
+ DCHECK_EQ(aa_mode_, NO_AA);
}
};
@@ -411,168 +480,347 @@ class FragmentShaderBase {
class FragmentShaderRGBATexVaryingAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_varying_alpha_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_varying_alpha_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexPremultiplyAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_varying_alpha_ = true;
- premultiply_alpha_mode_ = NON_PREMULTIPLIED_ALPHA;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_varying_alpha_, true);
+ DCHECK_EQ(premultiply_alpha_mode_, NON_PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderTexBackgroundVaryingAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_background_color_ = true;
- has_varying_alpha_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_background_color_, true);
+ DCHECK_EQ(has_varying_alpha_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
}
};
class FragmentShaderTexBackgroundPremultiplyAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_background_color_ = true;
- has_varying_alpha_ = true;
- premultiply_alpha_mode_ = NON_PREMULTIPLIED_ALPHA;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_background_color_, true);
+ DCHECK_EQ(has_varying_alpha_, true);
+ DCHECK_EQ(premultiply_alpha_mode_, NON_PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
}
};
class FragmentShaderRGBATexAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_uniform_alpha_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexColorMatrixAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_uniform_alpha_ = true;
- has_color_matrix_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(has_color_matrix_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexOpaque : public FragmentShaderBase {
public:
- void SetSubclassProperties() { frag_color_mode_ = FRAG_COLOR_MODE_OPAQUE; }
+ void CheckSubclassProperties() {
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_OPAQUE);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
+ }
};
class FragmentShaderRGBATex : public FragmentShaderBase {
public:
- void SetSubclassProperties() { frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; }
+ void CheckSubclassProperties() {
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+ DCHECK_EQ(sampler_type_, SAMPLER_TYPE_EXTERNAL_OES);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
+ }
};
// Swizzles the red and blue component of sampled texel with alpha.
class FragmentShaderRGBATexSwizzleAlpha : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_uniform_alpha_ = true;
- swizzle_mode_ = DO_SWIZZLE;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(swizzle_mode_, DO_SWIZZLE);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
// Swizzles the red and blue component of sampled texel without alpha.
class FragmentShaderRGBATexSwizzleOpaque : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- swizzle_mode_ = DO_SWIZZLE;
- frag_color_mode_ = FRAG_COLOR_MODE_OPAQUE;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(swizzle_mode_, DO_SWIZZLE);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_OPAQUE);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexAlphaAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- aa_mode_ = USE_AA;
- has_uniform_alpha_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexClampAlphaAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- aa_mode_ = USE_AA;
- has_uniform_alpha_ = true;
- has_rgba_fragment_tex_transform_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
// Swizzles the red and blue component of sampled texel.
class FragmentShaderRGBATexClampSwizzleAlphaAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- aa_mode_ = USE_AA;
- has_uniform_alpha_ = true;
- has_rgba_fragment_tex_transform_ = true;
- swizzle_mode_ = DO_SWIZZLE;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, true);
+ DCHECK_EQ(swizzle_mode_, DO_SWIZZLE);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexAlphaMask : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_uniform_alpha_ = true;
- mask_mode_ = HAS_MASK;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
- ignore_sampler_type_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(mask_mode_, HAS_MASK);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+ DCHECK_EQ(ignore_sampler_type_, true);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexAlphaMaskAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- aa_mode_ = USE_AA;
- has_uniform_alpha_ = true;
- mask_mode_ = HAS_MASK;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
- ignore_sampler_type_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(mask_mode_, HAS_MASK);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+ DCHECK_EQ(ignore_sampler_type_, true);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexAlphaMaskColorMatrixAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- aa_mode_ = USE_AA;
- has_uniform_alpha_ = true;
- mask_mode_ = HAS_MASK;
- has_color_matrix_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
- ignore_sampler_type_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(mask_mode_, HAS_MASK);
+ DCHECK_EQ(has_color_matrix_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+ DCHECK_EQ(ignore_sampler_type_, true);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexAlphaColorMatrixAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- aa_mode_ = USE_AA;
- has_uniform_alpha_ = true;
- has_color_matrix_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(has_color_matrix_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- has_uniform_alpha_ = true;
- mask_mode_ = HAS_MASK;
- has_color_matrix_ = true;
- frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE;
- ignore_sampler_type_ = true;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(has_uniform_alpha_, true);
+ DCHECK_EQ(mask_mode_, HAS_MASK);
+ DCHECK_EQ(has_color_matrix_, true);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_APPLY_BLEND_MODE);
+ DCHECK_EQ(ignore_sampler_type_, true);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_RGBA_TEXTURE);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
@@ -580,7 +828,7 @@ class FragmentShaderYUVVideo : public FragmentShaderBase {
public:
FragmentShaderYUVVideo();
- void SetSubclassProperties() {}
+ void CheckSubclassProperties() {}
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -628,18 +876,39 @@ class FragmentShaderYUVVideo : public FragmentShaderBase {
class FragmentShaderColor : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- input_color_type_ = INPUT_COLOR_SOURCE_UNIFORM;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_UNIFORM);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(aa_mode_, NO_AA);
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
class FragmentShaderColorAA : public FragmentShaderBase {
public:
- void SetSubclassProperties() {
- input_color_type_ = INPUT_COLOR_SOURCE_UNIFORM;
- aa_mode_ = USE_AA;
- frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT;
+ void CheckSubclassProperties() {
+ DCHECK_EQ(input_color_type_, INPUT_COLOR_SOURCE_UNIFORM);
+ DCHECK_EQ(aa_mode_, USE_AA);
+ DCHECK_EQ(frag_color_mode_, FRAG_COLOR_MODE_DEFAULT);
+
+ DCHECK_EQ(has_varying_alpha_, false);
+ DCHECK_EQ(swizzle_mode_, NO_SWIZZLE);
+ DCHECK_EQ(premultiply_alpha_mode_, PREMULTIPLIED_ALPHA);
+ DCHECK_EQ(has_rgba_fragment_tex_transform_, false);
+ DCHECK_EQ(ignore_sampler_type_, false);
+ DCHECK_EQ(mask_mode_, NO_MASK);
+ DCHECK_EQ(has_color_matrix_, false);
+ DCHECK_EQ(has_uniform_alpha_, false);
+ DCHECK_EQ(has_background_color_, false);
}
};
« no previous file with comments | « cc/output/program_binding.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698