diff options
author | 2014-12-04 13:02:47 -0800 | |
---|---|---|
committer | 2014-12-04 13:02:47 -0800 | |
commit | c92aadcf9a49e85b21293a96d73a2d0a8a08fe64 (patch) | |
tree | f257096a48d3945ece1e7c58e5c756a7cffef33c | |
parent | eb2a6761654307e8aeeeaabdd63c6bf9ab0411e9 (diff) |
clean up default precision handling
R=joshualitt@google.com
Review URL: https://codereview.chromium.org/766753006
-rw-r--r-- | include/gpu/GrShaderVar.h | 15 | ||||
-rw-r--r-- | src/gpu/gl/GrGLShaderVar.h | 2 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp | 6 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLProgramBuilder.cpp | 5 |
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) { |