aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2014-12-04 13:02:47 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-12-04 13:02:47 -0800
commitc92aadcf9a49e85b21293a96d73a2d0a8a08fe64 (patch)
treef257096a48d3945ece1e7c58e5c756a7cffef33c
parenteb2a6761654307e8aeeeaabdd63c6bf9ab0411e9 (diff)
clean up default precision handling
R=joshualitt@google.com Review URL: https://codereview.chromium.org/766753006
-rw-r--r--include/gpu/GrShaderVar.h15
-rw-r--r--src/gpu/gl/GrGLShaderVar.h2
-rw-r--r--src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp6
-rw-r--r--src/gpu/gl/builders/GrGLProgramBuilder.cpp5
4 files changed, 9 insertions, 19 deletions
diff --git a/include/gpu/GrShaderVar.h b/include/gpu/GrShaderVar.h
index cbc074df7b..967ae82689 100644
--- a/include/gpu/GrShaderVar.h
+++ b/include/gpu/GrShaderVar.h
@@ -35,14 +35,13 @@ public:
};
enum Precision {
- kLow_Precision, // lowp
- kMedium_Precision, // mediump
- kHigh_Precision, // highp
- kDefault_Precision, // Default for the current context. We make
- // fragment shaders default to mediump on ES2
- // because highp support is not guaranteed (and
- // we haven't been motivated to test for it).
- // Otherwise, highp.
+ kLow_Precision,
+ kMedium_Precision,
+ kHigh_Precision,
+
+ // Default precision is medium. This is because on OpenGL ES 2 highp support is not
+ // guaranteed. On (non-ES) OpenGL the specifiers have no effect on precision.
+ kDefault_Precision = kMedium_Precision,
};
/**
diff --git a/src/gpu/gl/GrGLShaderVar.h b/src/gpu/gl/GrGLShaderVar.h
index c7514f55bc..7705c30db0 100644
--- a/src/gpu/gl/GrGLShaderVar.h
+++ b/src/gpu/gl/GrGLShaderVar.h
@@ -207,8 +207,6 @@ public:
return "mediump ";
case kHigh_Precision:
return "highp ";
- case kDefault_Precision:
- return "";
default:
SkFAIL("Unexpected precision type.");
}
diff --git a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp
index 6aeba7a9ee..56bc496532 100644
--- a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp
@@ -13,8 +13,6 @@
#define GL_CALL(X) GR_GL_CALL(fProgramBuilder->gpu()->glInterface(), X)
#define GL_CALL_RET(R, X) GR_GL_CALL_RET(fProgramBuilder->gpu()->glInterface(), R, X)
-// ES2 FS only guarantees mediump and lowp support
-static const GrGLShaderVar::Precision kDefaultFragmentPrecision = GrGLShaderVar::kMedium_Precision;
const char* GrGLFragmentShaderBuilder::kDstCopyColorName = "_dstColor";
static const char* declared_color_output_name() { return "fsColorOut"; }
static const char* dual_source_output_name() { return "dualSourceOut"; }
@@ -33,8 +31,6 @@ static void append_default_precision_qualifier(GrGLShaderVar::Precision p,
case GrGLShaderVar::kLow_Precision:
str->append("precision lowp float;\n");
break;
- case GrGLShaderVar::kDefault_Precision:
- SkFAIL("Default precision now allowed.");
default:
SkFAIL("Unknown precision value.");
}
@@ -310,7 +306,7 @@ bool GrGLFragmentShaderBuilder::compileAndAttachShaders(GrGLuint programId,
GrGpuGL* gpu = fProgramBuilder->gpu();
SkString fragShaderSrc(GrGetGLSLVersionDecl(gpu->ctxInfo()));
fragShaderSrc.append(fExtensions);
- append_default_precision_qualifier(kDefaultFragmentPrecision,
+ append_default_precision_qualifier(GrShaderVar::kDefault_Precision,
gpu->glStandard(),
&fragShaderSrc);
fProgramBuilder->appendUniformDecls(GrGLProgramBuilder::kFragment_Visibility, &fragShaderSrc);
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
index fb26867cf6..4d8011cd97 100644
--- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
@@ -21,9 +21,6 @@
#define GL_CALL(X) GR_GL_CALL(this->gpu()->glInterface(), X)
#define GL_CALL_RET(R, X) GR_GL_CALL_RET(this->gpu()->glInterface(), R, X)
-// ES2 FS only guarantees mediump and lowp support
-static const GrGLShaderVar::Precision kDefaultFragmentPrecision = GrGLShaderVar::kMedium_Precision;
-
//////////////////////////////////////////////////////////////////////////////
const int GrGLProgramBuilder::kVarsPerBlock = 8;
@@ -175,7 +172,7 @@ GrGLProgramDataManager::UniformHandle GrGLProgramBuilder::addUniformArray(uint32
// to use the default FS precision.
if ((kVertex_Visibility | kFragment_Visibility) == visibility) {
// the fragment and vertex precisions must match
- uni.fVariable.setPrecision(kDefaultFragmentPrecision);
+ uni.fVariable.setPrecision(GrShaderVar::kDefault_Precision);
}
if (outName) {