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

Unified Diff: cc/output/shader.h

Issue 2610803002: The great shader refactor: Prepare to merge all vertex shaders. (Closed)
Patch Set: Merge Init and FillLocations 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 | « no previous file | cc/output/shader.cc » ('j') | cc/output/shader.cc » ('J')
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 c0cb75801e2cabe43f0467b3d2046b94d7d9a848..6afd22b8fa6e62a0845746d0976ca7db7aba0905 100644
--- a/cc/output/shader.h
+++ b/cc/output/shader.h
@@ -113,257 +113,163 @@ CC_EXPORT TexCoordPrecision TexCoordPrecisionRequired(
int highp_threshold_min,
const gfx::Size& max_size);
-class VertexShaderPosTex {
+class VertexShaderBase {
public:
- VertexShaderPosTex();
-
+ VertexShaderBase();
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
int* base_uniform_index);
std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
-
- int matrix_location() const { return matrix_location_; }
-
- private:
- int matrix_location_;
+ void FillLocations(ShaderLocations* locations) const;
- DISALLOW_COPY_AND_ASSIGN(VertexShaderPosTex);
-};
+ int tex_transform_location() const { return tex_transform_location_; }
-class VertexShaderPosTexYUVStretchOffset {
- public:
- VertexShaderPosTexYUVStretchOffset();
+ int vertex_tex_transform_location() const {
+ return vertex_tex_transform_location_;
+ }
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ int tex_matrix_location() const { return tex_matrix_location_; }
- int matrix_location() const { return matrix_location_; }
int ya_tex_scale_location() const { return ya_tex_scale_location_; }
int ya_tex_offset_location() const { return ya_tex_offset_location_; }
int uv_tex_scale_location() const { return uv_tex_scale_location_; }
int uv_tex_offset_location() const { return uv_tex_offset_location_; }
- private:
- int matrix_location_;
- int ya_tex_scale_location_;
- int ya_tex_offset_location_;
- int uv_tex_scale_location_;
- int uv_tex_offset_location_;
+ int matrix_location() const { return matrix_location_; }
- DISALLOW_COPY_AND_ASSIGN(VertexShaderPosTexYUVStretchOffset);
-};
+ int vertex_opacity_location() const { return vertex_opacity_location_; }
-class VertexShaderPos {
- public:
- VertexShaderPos();
+ int viewport_location() const { return viewport_location_; }
+ int edge_location() const { return edge_location_; }
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ int quad_location() const { return quad_location_; }
- int matrix_location() const { return matrix_location_; }
+ protected:
+ virtual std::string GetShaderSource() const = 0;
ccameron 2017/01/04 09:06:12 has_tex_transform_, has_vertex_tex_transform, has_
- private:
- int matrix_location_;
+ bool has_tex_transform_ = false;
+ int tex_transform_location_ = -1;
- DISALLOW_COPY_AND_ASSIGN(VertexShaderPos);
-};
+ bool has_vertex_tex_transform_ = false;
+ int vertex_tex_transform_location_ = -1;
-class VertexShaderPosTexIdentity {
- public:
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index) {}
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
-};
+ bool has_tex_matrix_ = false;
+ int tex_matrix_location_ = -1;
-class VertexShaderPosTexTransform {
- public:
- VertexShaderPosTexTransform();
+ bool has_ya_uv_tex_scale_offset_ = false;
+ int ya_tex_scale_location_ = -1;
+ int ya_tex_offset_location_ = -1;
+ int uv_tex_scale_location_ = -1;
+ int uv_tex_offset_location_ = -1;
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
- void FillLocations(ShaderLocations* locations) const;
+ bool has_matrix_ = false;
+ int matrix_location_ = -1;
- int matrix_location() const { return matrix_location_; }
- int tex_transform_location() const { return tex_transform_location_; }
- int vertex_opacity_location() const { return vertex_opacity_location_; }
+ bool has_vertex_opacity_ = false;
+ int vertex_opacity_location_ = -1;
- private:
- int matrix_location_;
- int tex_transform_location_;
- int vertex_opacity_location_;
+ bool has_aa_ = false;
+ int viewport_location_ = -1;
+ int edge_location_ = -1;
- DISALLOW_COPY_AND_ASSIGN(VertexShaderPosTexTransform);
+ bool has_quad_ = false;
+ int quad_location_ = -1;
};
-class VertexShaderQuad {
+class VertexShaderPosTex : public VertexShaderBase {
public:
- VertexShaderQuad();
-
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
-
- int matrix_location() const { return matrix_location_; }
- int viewport_location() const { return -1; }
- int quad_location() const { return quad_location_; }
- int edge_location() const { return -1; }
-
- private:
- int matrix_location_;
- int quad_location_;
-
- DISALLOW_COPY_AND_ASSIGN(VertexShaderQuad);
+ VertexShaderPosTex() { has_matrix_ = true; }
+ std::string GetShaderSource() const override;
};
-class VertexShaderQuadAA {
+class VertexShaderPosTexYUVStretchOffset : public VertexShaderBase {
public:
- VertexShaderQuadAA();
-
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
-
- int matrix_location() const { return matrix_location_; }
- int viewport_location() const { return viewport_location_; }
- int quad_location() const { return quad_location_; }
- int edge_location() const { return edge_location_; }
-
- private:
- int matrix_location_;
- int viewport_location_;
- int quad_location_;
- int edge_location_;
-
- DISALLOW_COPY_AND_ASSIGN(VertexShaderQuadAA);
+ VertexShaderPosTexYUVStretchOffset() {
+ has_matrix_ = true;
+ has_ya_uv_tex_scale_offset_ = true;
+ }
+ std::string GetShaderSource() const override;
};
-
-class VertexShaderQuadTexTransformAA {
+class VertexShaderPos : public VertexShaderBase {
public:
- VertexShaderQuadTexTransformAA();
-
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
- void FillLocations(ShaderLocations* locations) const;
-
- int matrix_location() const { return matrix_location_; }
- int viewport_location() const { return viewport_location_; }
- int quad_location() const { return quad_location_; }
- int edge_location() const { return edge_location_; }
- int tex_transform_location() const { return tex_transform_location_; }
-
- private:
- int matrix_location_;
- int viewport_location_;
- int quad_location_;
- int edge_location_;
- int tex_transform_location_;
-
- DISALLOW_COPY_AND_ASSIGN(VertexShaderQuadTexTransformAA);
+ VertexShaderPos() { has_matrix_ = true; }
+ std::string GetShaderSource() const override;
};
-class VertexShaderTile {
+class VertexShaderPosTexIdentity : public VertexShaderBase {
public:
- VertexShaderTile();
-
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ std::string GetShaderSource() const override;
+};
- int matrix_location() const { return matrix_location_; }
- int viewport_location() const { return -1; }
- int quad_location() const { return quad_location_; }
- int edge_location() const { return -1; }
- int vertex_tex_transform_location() const {
- return vertex_tex_transform_location_;
+class VertexShaderPosTexTransform : public VertexShaderBase {
+ public:
+ VertexShaderPosTexTransform() {
+ has_matrix_ = true;
+ has_tex_transform_ = true;
+ has_vertex_opacity_ = true;
}
-
- private:
- int matrix_location_;
- int quad_location_;
- int vertex_tex_transform_location_;
-
- DISALLOW_COPY_AND_ASSIGN(VertexShaderTile);
+ std::string GetShaderSource() const override;
};
-class VertexShaderTileAA {
+class VertexShaderQuad : public VertexShaderBase {
public:
- VertexShaderTileAA();
-
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
-
- int matrix_location() const { return matrix_location_; }
- int viewport_location() const { return viewport_location_; }
- int quad_location() const { return quad_location_; }
- int edge_location() const { return edge_location_; }
- int vertex_tex_transform_location() const {
- return vertex_tex_transform_location_;
+ VertexShaderQuad() {
+ has_matrix_ = true;
+ has_quad_ = true;
}
-
- private:
- int matrix_location_;
- int viewport_location_;
- int quad_location_;
- int edge_location_;
- int vertex_tex_transform_location_;
-
- DISALLOW_COPY_AND_ASSIGN(VertexShaderTileAA);
+ std::string GetShaderSource() const override;
};
-class VertexShaderVideoTransform {
+class VertexShaderQuadAA : public VertexShaderBase {
public:
- VertexShaderVideoTransform();
+ VertexShaderQuadAA() {
+ has_matrix_ = true;
+ has_aa_ = true;
+ has_quad_ = true;
+ }
+ std::string GetShaderSource() const override;
+};
- void Init(gpu::gles2::GLES2Interface* context,
- unsigned program,
- int* base_uniform_index);
- std::string GetShaderString() const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+class VertexShaderQuadTexTransformAA : public VertexShaderBase {
+ public:
+ VertexShaderQuadTexTransformAA() {
+ has_matrix_ = true;
+ has_aa_ = true;
+ has_quad_ = true;
+ has_tex_transform_ = true;
+ }
+ std::string GetShaderSource() const override;
+};
- int matrix_location() const { return matrix_location_; }
- int tex_matrix_location() const { return tex_matrix_location_; }
+class VertexShaderTile : public VertexShaderBase {
+ public:
+ VertexShaderTile() {
+ has_matrix_ = true;
+ has_quad_ = true;
+ has_vertex_tex_transform_ = true;
+ }
+ std::string GetShaderSource() const override;
+};
- private:
- int matrix_location_;
- int tex_matrix_location_;
+class VertexShaderTileAA : public VertexShaderBase {
+ public:
+ VertexShaderTileAA() {
+ has_matrix_ = true;
+ has_quad_ = true;
+ has_vertex_tex_transform_ = true;
+ has_aa_ = true;
+ }
+ std::string GetShaderSource() const override;
+};
- DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform);
+class VertexShaderVideoTransform : public VertexShaderBase {
+ public:
+ VertexShaderVideoTransform() {
+ has_matrix_ = true;
+ has_tex_matrix_ = true;
+ }
+ std::string GetShaderSource() const override;
};
class FragmentShaderBase {
« no previous file with comments | « no previous file | cc/output/shader.cc » ('j') | cc/output/shader.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698