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

Unified Diff: cc/output/shader.h

Issue 12665005: cc: Use highp precision for texture coords if available and needed (Closed) Base URL: http://git.chromium.org/chromium/src.git@highp2
Patch Set: Rebase on pending Chromification https://codereview.chromium.org/13004003 Created 7 years, 9 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
Index: cc/output/shader.h
diff --git a/cc/output/shader.h b/cc/output/shader.h
index 49b2e6629b4337053aa7e0a798ec630e84d9c5d6..24d541756ef01abc0cc42b47bc38a7661f5d4aed 100644
--- a/cc/output/shader.h
+++ b/cc/output/shader.h
@@ -8,12 +8,28 @@
#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,
+};
+
+int TexCoordHighpThreshold(WebKit::WebGraphicsContext3D* context);
+
+TexCoordPrecision TexCoordPrecisionRequired(
+ WebKit::WebGraphicsContext3D* context,
+ const gfx::Point& max_coordinate);
+
class VertexShaderPosTex {
public:
VertexShaderPosTex();
@@ -195,45 +211,45 @@ class FragmentTexOpaqueBinding {
class FragmentShaderRGBATexVaryingAlpha : public FragmentTexOpaqueBinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
};
class FragmentShaderRGBATexAlpha : public FragmentTexAlphaBinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
};
class FragmentShaderRGBATexRectVaryingAlpha : public FragmentTexAlphaBinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
};
class FragmentShaderRGBATexOpaque : public FragmentTexOpaqueBinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
};
class FragmentShaderRGBATex : public FragmentTexOpaqueBinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(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(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(TexCoordPrecision precision) const;
};
// Fragment shader for external textures.
class FragmentShaderOESImageExternal : public FragmentTexAlphaBinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
bool Init(WebKit::WebGraphicsContext3D*,
unsigned program,
bool using_bind_uniform,
@@ -250,7 +266,7 @@ class FragmentShaderRGBATexAlphaAA {
unsigned program,
bool using_bind_uniform,
int* base_uniform_index);
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
int alpha_location() const { return alpha_location_; }
int sampler_location() const { return sampler_location_; }
@@ -287,20 +303,20 @@ class FragmentTexClampAlphaAABinding {
class FragmentShaderRGBATexClampAlphaAA :
public FragmentTexClampAlphaAABinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
};
// Swizzles the red and blue component of sampled texel.
class FragmentShaderRGBATexClampSwizzleAlphaAA :
public FragmentTexClampAlphaAABinding {
public:
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
};
class FragmentShaderRGBATexAlphaMask {
public:
FragmentShaderRGBATexAlphaMask();
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
void Init(WebKit::WebGraphicsContext3D*,
unsigned program,
@@ -327,7 +343,7 @@ class FragmentShaderRGBATexAlphaMask {
class FragmentShaderRGBATexAlphaMaskAA {
public:
FragmentShaderRGBATexAlphaMaskAA();
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
void Init(WebKit::WebGraphicsContext3D*,
unsigned program,
@@ -356,7 +372,7 @@ class FragmentShaderRGBATexAlphaMaskAA {
class FragmentShaderYUVVideo {
public:
FragmentShaderYUVVideo();
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
void Init(WebKit::WebGraphicsContext3D*,
unsigned program,
@@ -381,7 +397,7 @@ class FragmentShaderYUVVideo {
class FragmentShaderColor {
public:
FragmentShaderColor();
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
void Init(WebKit::WebGraphicsContext3D*,
unsigned program,
@@ -397,7 +413,7 @@ class FragmentShaderColor {
class FragmentShaderColorAA {
public:
FragmentShaderColorAA();
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
void Init(WebKit::WebGraphicsContext3D*,
unsigned program,
@@ -414,7 +430,7 @@ class FragmentShaderColorAA {
class FragmentShaderCheckerboard {
public:
FragmentShaderCheckerboard();
- std::string GetShaderString() const;
+ std::string GetShaderString(TexCoordPrecision precision) const;
void Init(WebKit::WebGraphicsContext3D*,
unsigned program,
« no previous file with comments | « cc/output/program_binding.h ('k') | cc/output/shader.cc » ('j') | cc/output/shader.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698