| Index: cc/output/shader.h
|
| diff --git a/cc/output/shader.h b/cc/output/shader.h
|
| index 4afd3a8b20a99a9cd4592aa9f6e296333bccf020..30adbb42c6c6e726d2958fa3f8b94375fff7977a 100644
|
| --- a/cc/output/shader.h
|
| +++ b/cc/output/shader.h
|
| @@ -8,18 +8,32 @@
|
| #include <string>
|
| #include "third_party/skia/include/core/SkColorPriv.h"
|
|
|
| +namespace gfx {
|
| +class Point;
|
| +}
|
| +
|
| namespace WebKit {
|
| class WebGraphicsContext3D;
|
| }
|
|
|
| namespace cc {
|
|
|
| +enum TexCoordPrecision {
|
| + TexCoordPrecisionNA,
|
| + TexCoordPrecisionMedium,
|
| + TexCoordPrecisionHigh,
|
| +};
|
| +
|
| +// This currently only considers the source size because it can be slow
|
| +// for the caller to also provide the destination size on screen.
|
| +TexCoordPrecision TexCoordPrecisionRequired(const gfx::Point &max_coordinate);
|
| +
|
| class VertexShaderPosTex {
|
| public:
|
| VertexShaderPosTex();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
|
|
| @@ -32,7 +46,7 @@ public:
|
| VertexShaderPosTexYUVStretch();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
| int texScaleLocation() const { return m_texScaleLocation; }
|
| @@ -47,7 +61,7 @@ public:
|
| VertexShaderPos();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
|
|
| @@ -58,7 +72,7 @@ private:
|
| class VertexShaderPosTexIdentity {
|
| public:
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex) { }
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
| };
|
|
|
| class VertexShaderPosTexTransform {
|
| @@ -66,7 +80,7 @@ public:
|
| VertexShaderPosTexTransform();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
| int texTransformLocation() const { return m_texTransformLocation; }
|
| @@ -80,7 +94,7 @@ private:
|
|
|
| class VertexShaderPosTexTransformFlip : public VertexShaderPosTexTransform {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
| };
|
|
|
| class VertexShaderQuad {
|
| @@ -88,7 +102,7 @@ public:
|
| VertexShaderQuad();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
| int pointLocation() const { return m_pointLocation; }
|
| @@ -105,7 +119,7 @@ public:
|
| VertexShaderTile();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
| int pointLocation() const { return m_pointLocation; }
|
| @@ -122,7 +136,7 @@ public:
|
| VertexShaderVideoTransform();
|
|
|
| bool init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context) const;
|
|
|
| int matrixLocation() const { return m_matrixLocation; }
|
| int texMatrixLocation() const { return m_texMatrixLocation; }
|
| @@ -163,45 +177,53 @@ private:
|
|
|
| class FragmentShaderRGBATexVaryingAlpha : public FragmentTexOpaqueBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| class FragmentShaderRGBATexAlpha : public FragmentTexAlphaBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| class FragmentShaderRGBATexRectVaryingAlpha : public FragmentTexAlphaBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| class FragmentShaderRGBATexOpaque : public FragmentTexOpaqueBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| class FragmentShaderRGBATex : public FragmentTexOpaqueBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| // Swizzles the red and blue component of sampled texel with alpha.
|
| class FragmentShaderRGBATexSwizzleAlpha : public FragmentTexAlphaBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| // Swizzles the red and blue component of sampled texel without alpha.
|
| class FragmentShaderRGBATexSwizzleOpaque : public FragmentTexOpaqueBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| // Fragment shader for external textures.
|
| class FragmentShaderOESImageExternal : public FragmentTexAlphaBinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| bool init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| private:
|
| int m_samplerLocation;
|
| @@ -212,7 +234,8 @@ public:
|
| FragmentShaderRGBATexAlphaAA();
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| int alphaLocation() const { return m_alphaLocation; }
|
| int samplerLocation() const { return m_samplerLocation; }
|
| @@ -243,19 +266,22 @@ private:
|
|
|
| class FragmentShaderRGBATexClampAlphaAA : public FragmentTexClampAlphaAABinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| // Swizzles the red and blue component of sampled texel.
|
| class FragmentShaderRGBATexClampSwizzleAlphaAA : public FragmentTexClampAlphaAABinding {
|
| public:
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
| };
|
|
|
| class FragmentShaderRGBATexAlphaMask {
|
| public:
|
| FragmentShaderRGBATexAlphaMask();
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| int alphaLocation() const { return m_alphaLocation; }
|
| @@ -275,7 +301,8 @@ private:
|
| class FragmentShaderRGBATexAlphaMaskAA {
|
| public:
|
| FragmentShaderRGBATexAlphaMaskAA();
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| int alphaLocation() const { return m_alphaLocation; }
|
| @@ -297,7 +324,8 @@ private:
|
| class FragmentShaderYUVVideo {
|
| public:
|
| FragmentShaderYUVVideo();
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
|
|
| @@ -320,7 +348,8 @@ private:
|
| class FragmentShaderColor {
|
| public:
|
| FragmentShaderColor();
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| int edgeLocation() const { return -1; }
|
| @@ -333,7 +362,8 @@ private:
|
| class FragmentShaderColorAA {
|
| public:
|
| FragmentShaderColorAA();
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| int edgeLocation() const { return m_edgeLocation; }
|
| @@ -347,7 +377,8 @@ private:
|
| class FragmentShaderCheckerboard {
|
| public:
|
| FragmentShaderCheckerboard();
|
| - std::string getShaderString() const;
|
| + std::string getShaderString(WebKit::WebGraphicsContext3D* context,
|
| + TexCoordPrecision precision) const;
|
|
|
| void init(WebKit::WebGraphicsContext3D*, unsigned program, bool usingBindUniform, int* baseUniformIndex);
|
| int alphaLocation() const { return m_alphaLocation; }
|
|
|