Index: src/gpu/glsl/GrGLSLShaderVar.h |
diff --git a/src/gpu/glsl/GrGLSLShaderVar.h b/src/gpu/glsl/GrGLSLShaderVar.h |
index e26a75c0966794143980f48a66b7755f823bd806..812d604be9150de9aca1968fc1a1cf3090f35c02 100644 |
--- a/src/gpu/glsl/GrGLSLShaderVar.h |
+++ b/src/gpu/glsl/GrGLSLShaderVar.h |
@@ -51,7 +51,9 @@ public: |
GrGLSLShaderVar(const GrGLSLShaderVar& var) |
: GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(), |
var.getArrayCount(), var.getPrecision()) |
- , fUseUniformFloatArrays(var.fUseUniformFloatArrays) { |
+ , fUseUniformFloatArrays(var.fUseUniformFloatArrays) |
+ , fLayoutQualifier(var.fLayoutQualifier) |
+ , fExtraModifiers(var.fExtraModifiers) { |
SkASSERT(kVoid_GrSLType != var.getType()); |
} |
@@ -136,6 +138,10 @@ public: |
fLayoutQualifier = layoutQualifier; |
} |
+ void addModifier(const char* modifier) { |
+ fExtraModifiers.appendf("%s ", modifier); |
+ } |
+ |
/** |
* Write a declaration of this variable to out. |
*/ |
@@ -144,11 +150,8 @@ public: |
if (!fLayoutQualifier.isEmpty()) { |
out->appendf("layout(%s) ", fLayoutQualifier.c_str()); |
} |
+ out->append(fExtraModifiers); |
if (this->getTypeModifier() != kNone_TypeModifier) { |
- if (GrSLTypeIsIntType(fType) && (this->getTypeModifier() == kVaryingIn_TypeModifier || |
- this->getTypeModifier() == kVaryingOut_TypeModifier)) { |
- out->append("flat "); |
- } |
out->append(TypeModifierString(glslCaps, this->getTypeModifier())); |
out->append(" "); |
} |
@@ -234,9 +237,10 @@ private: |
/// Work around driver bugs on some hardware that don't correctly |
/// support uniform float [] |
- bool fUseUniformFloatArrays; |
+ bool fUseUniformFloatArrays; |
- SkString fLayoutQualifier; |
+ SkString fLayoutQualifier; |
+ SkString fExtraModifiers; |
typedef GrShaderVar INHERITED; |
}; |