aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar joshualitt <joshualitt@chromium.org>2015-09-15 14:12:22 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-09-15 14:12:22 -0700
commiteb00eaba0cb0be4ba39a7c00b6be8347136ce4ae (patch)
tree24d46a63f4a17a42e5a6abaeed992952e9767200 /src
parentcaf2df86080e7b774d01d642aa95f2f1de079104 (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.cpp4
-rw-r--r--src/gpu/gl/builders/GrGLGeometryShaderBuilder.h2
-rw-r--r--src/gpu/gl/builders/GrGLProgramBuilder.cpp8
-rw-r--r--src/gpu/gl/builders/GrGLProgramBuilder.h4
-rw-r--r--src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp3
-rw-r--r--src/gpu/gl/builders/GrGLVertexShaderBuilder.h2
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