diff options
author | joshualitt <joshualitt@chromium.org> | 2015-09-15 14:12:22 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-15 14:12:22 -0700 |
commit | eb00eaba0cb0be4ba39a7c00b6be8347136ce4ae (patch) | |
tree | 24d46a63f4a17a42e5a6abaeed992952e9767200 /src | |
parent | caf2df86080e7b774d01d642aa95f2f1de079104 (diff) |
fix up GrGLProgrambuilder precision on varyings
TBR=
BUG=skia:4347
Review URL: https://codereview.chromium.org/1344943002
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/gl/builders/GrGLGeometryShaderBuilder.cpp | 4 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLGeometryShaderBuilder.h | 2 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLProgramBuilder.cpp | 8 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLProgramBuilder.h | 4 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp | 3 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLVertexShaderBuilder.h | 2 |
6 files changed, 13 insertions, 10 deletions
diff --git a/src/gpu/gl/builders/GrGLGeometryShaderBuilder.cpp b/src/gpu/gl/builders/GrGLGeometryShaderBuilder.cpp index b20575259b..ddbc9302e8 100644 --- a/src/gpu/gl/builders/GrGLGeometryShaderBuilder.cpp +++ b/src/gpu/gl/builders/GrGLGeometryShaderBuilder.cpp @@ -14,13 +14,14 @@ GrGLGeometryBuilder::GrGLGeometryBuilder(GrGLProgramBuilder* program) } -void GrGLGeometryBuilder::addVarying(const char* name, GrGLVarying* v) { +void GrGLGeometryBuilder::addVarying(const char* name, GrSLPrecision precision, GrGLVarying* v) { // if we have a GS take each varying in as an array // and output as non-array. if (v->vsVarying()) { fInputs.push_back(); fInputs.back().setType(v->fType); fInputs.back().setTypeModifier(GrGLShaderVar::kVaryingIn_TypeModifier); + fInputs.back().setPrecision(precision); fInputs.back().setUnsizedArray(); *fInputs.back().accessName() = v->fVsOut; v->fGsIn = v->fVsOut; @@ -30,6 +31,7 @@ void GrGLGeometryBuilder::addVarying(const char* name, GrGLVarying* v) { fOutputs.push_back(); fOutputs.back().setType(v->fType); fOutputs.back().setTypeModifier(GrGLShaderVar::kVaryingOut_TypeModifier); + fOutputs.back().setPrecision(precision); fProgramBuilder->nameVariable(fOutputs.back().accessName(), 'g', name); v->fGsOut = fOutputs.back().getName().c_str(); } diff --git a/src/gpu/gl/builders/GrGLGeometryShaderBuilder.h b/src/gpu/gl/builders/GrGLGeometryShaderBuilder.h index c4c019be18..4fe8a23961 100644 --- a/src/gpu/gl/builders/GrGLGeometryShaderBuilder.h +++ b/src/gpu/gl/builders/GrGLGeometryShaderBuilder.h @@ -20,7 +20,7 @@ private: /* * an internal call for GrGLFullProgramBuilder to add varyings */ - void addVarying(const char* name, GrGLVarying*); + void addVarying(const char* name, GrSLPrecision precision, GrGLVarying*); bool compileAndAttachShaders(GrGLuint programId, SkTDArray<GrGLuint>* shaderIds); diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp index c1ba97ad70..491c34b79b 100644 --- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp +++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp @@ -65,16 +65,16 @@ GrGLProgramBuilder::GrGLProgramBuilder(GrGLGpu* gpu, const DrawArgs& args) void GrGLProgramBuilder::addVarying(const char* name, GrGLVarying* varying, - GrSLPrecision fsPrecision) { + GrSLPrecision precision) { SkASSERT(varying); if (varying->vsVarying()) { - fVS.addVarying(name, varying); + fVS.addVarying(name, precision, varying); } if (this->primitiveProcessor().willUseGeoShader()) { - fGS.addVarying(name, varying); + fGS.addVarying(name, precision, varying); } if (varying->fsVarying()) { - fFS.addVarying(varying, fsPrecision); + fFS.addVarying(varying, precision); } } diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.h b/src/gpu/gl/builders/GrGLProgramBuilder.h index e3c140a4e4..fcf7007f72 100644 --- a/src/gpu/gl/builders/GrGLProgramBuilder.h +++ b/src/gpu/gl/builders/GrGLProgramBuilder.h @@ -147,7 +147,7 @@ public: */ virtual void addVarying(const char* name, GrGLVarying*, - GrSLPrecision fsPrecision = kDefault_GrSLPrecision) = 0; + GrSLPrecision precision = kDefault_GrSLPrecision) = 0; /* * This call can be used by GP to pass an attribute through all shaders directly to 'output' in @@ -258,7 +258,7 @@ public: void addVarying( const char* name, GrGLVarying*, - GrSLPrecision fsPrecision = kDefault_GrSLPrecision) override; + GrSLPrecision precision = kDefault_GrSLPrecision) override; void addPassThroughAttribute(const GrPrimitiveProcessor::Attribute*, const char* output) override; diff --git a/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp b/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp index 0189932cac..cde8279392 100644 --- a/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp +++ b/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp @@ -18,10 +18,11 @@ GrGLVertexBuilder::GrGLVertexBuilder(GrGLProgramBuilder* program) , fRtAdjustName(nullptr) { } -void GrGLVertexBuilder::addVarying(const char* name, GrGLVarying* v) { +void GrGLVertexBuilder::addVarying(const char* name, GrSLPrecision precision, GrGLVarying* v) { fOutputs.push_back(); fOutputs.back().setType(v->fType); fOutputs.back().setTypeModifier(GrGLShaderVar::kVaryingOut_TypeModifier); + fOutputs.back().setPrecision(precision); fProgramBuilder->nameVariable(fOutputs.back().accessName(), 'v', name); v->fVsOut = fOutputs.back().getName().c_str(); } diff --git a/src/gpu/gl/builders/GrGLVertexShaderBuilder.h b/src/gpu/gl/builders/GrGLVertexShaderBuilder.h index f684189f78..dc38ff2a32 100644 --- a/src/gpu/gl/builders/GrGLVertexShaderBuilder.h +++ b/src/gpu/gl/builders/GrGLVertexShaderBuilder.h @@ -32,7 +32,7 @@ private: /* * Internal call for GrGLProgramBuilder.addVarying */ - void addVarying(const char* name, GrGLVarying*); + void addVarying(const char* name, GrSLPrecision, GrGLVarying*); /* * private helpers for compilation by GrGLProgramBuilder |