From 54a57f5cf1e702107fd5daf106eca3b2bedac173 Mon Sep 17 00:00:00 2001 From: bsalomon Date: Tue, 9 Dec 2014 10:38:57 -0800 Subject: Use GrCoordTransform precision to set uniform matrix precision Review URL: https://codereview.chromium.org/784103003 --- src/gpu/gl/builders/GrGLProgramBuilder.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp index e10aa6537c..ab77e05938 100644 --- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp +++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp @@ -384,6 +384,8 @@ void GrGLProgramBuilder::emitTransforms(const GrPendingFragmentStage& stage, const char* uniName = "StageMatrix"; GrSLType varyingType = stage.isPerspectiveCoordTransform(t) ? kVec3f_GrSLType : kVec2f_GrSLType; + GrSLPrecision precision = processor->coordTransform(t).precision(); + SkString suffixedUniName; if (0 != t) { suffixedUniName.append(uniName); @@ -391,7 +393,7 @@ void GrGLProgramBuilder::emitTransforms(const GrPendingFragmentStage& stage, uniName = suffixedUniName.c_str(); } ifp->fTransforms[t].fHandle = this->addUniform(GrGLProgramBuilder::kVertex_Visibility, - kMat33f_GrSLType, kDefault_GrSLPrecision, + kMat33f_GrSLType, precision, uniName, &uniName).toShaderBuilderIndex(); @@ -407,7 +409,7 @@ void GrGLProgramBuilder::emitTransforms(const GrPendingFragmentStage& stage, const char* coords = useLocalCoords ? fVS.localCoords() : fVS.positionCoords(); GrGLVertToFrag v(varyingType); - this->addVarying(varyingName, &v, processor->coordTransform(t).precision()); + this->addVarying(varyingName, &v, precision); fCoordVaryings.push_back(TransformVarying(v, uniName, coords)); SkASSERT(kVec2f_GrSLType == varyingType || kVec3f_GrSLType == varyingType); -- cgit v1.2.3