Index: src/gpu/glsl/GrGLSLShaderVar.h |
diff --git a/src/gpu/glsl/GrGLSLShaderVar.h b/src/gpu/glsl/GrGLSLShaderVar.h |
index a8b2c9b638cfb2455082375089dafece8fb57e3c..a08dba87f52b4f108a8646c700c746a15c9393f3 100644 |
--- a/src/gpu/glsl/GrGLSLShaderVar.h |
+++ b/src/gpu/glsl/GrGLSLShaderVar.h |
@@ -87,7 +87,7 @@ public: |
Origin origin = kDefault_Origin, |
bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) { |
SkASSERT(kVoid_GrSLType != type); |
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type)); |
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsNumeric(type)); |
INHERITED::set(type, name, typeModifier, precision); |
fOrigin = origin; |
fUseUniformFloatArrays = useUniformFloatArrays; |
@@ -103,7 +103,7 @@ public: |
Origin origin = kDefault_Origin, |
bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) { |
SkASSERT(kVoid_GrSLType != type); |
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type)); |
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsNumeric(type)); |
INHERITED::set(type, name, typeModifier, precision); |
fOrigin = origin; |
fUseUniformFloatArrays = useUniformFloatArrays; |
@@ -120,7 +120,7 @@ public: |
Origin origin = kDefault_Origin, |
bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) { |
SkASSERT(kVoid_GrSLType != type); |
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type)); |
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsNumeric(type)); |
INHERITED::set(type, name, typeModifier, precision, count); |
fOrigin = origin; |
fUseUniformFloatArrays = useUniformFloatArrays; |
@@ -137,7 +137,7 @@ public: |
Origin origin = kDefault_Origin, |
bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) { |
SkASSERT(kVoid_GrSLType != type); |
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type)); |
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsNumeric(type)); |
INHERITED::set(type, name, typeModifier, precision, count); |
fOrigin = origin; |
fUseUniformFloatArrays = useUniformFloatArrays; |
@@ -157,18 +157,24 @@ public: |
* Write a declaration of this variable to out. |
*/ |
void appendDecl(const GrGLSLCaps* glslCaps, SkString* out) const { |
- SkASSERT(kDefault_GrSLPrecision == fPrecision || GrSLTypeIsFloatType(fType)); |
+ SkASSERT(kDefault_GrSLPrecision == fPrecision || GrSLTypeIsNumeric(fType)); |
if (kUpperLeft_Origin == fOrigin) { |
// this is the only place where we specify a layout modifier. If we use other layout |
// modifiers in the future then they should be placed in a list. |
out->append("layout(origin_upper_left) "); |
} |
if (this->getTypeModifier() != kNone_TypeModifier) { |
- out->append(TypeModifierString(glslCaps, this->getTypeModifier())); |
- out->append(" "); |
+ if (GrSLTypeIsIntType(fType) && (this->getTypeModifier() == kVaryingIn_TypeModifier || |
+ this->getTypeModifier() == kVaryingOut_TypeModifier)) { |
+ out->append("flat "); |
+ } |
+ out->append(TypeModifierString(glslCaps, this->getTypeModifier())); |
+ out->append(" "); |
} |
- out->append(PrecisionString(glslCaps, fPrecision)); |
GrSLType effectiveType = this->getType(); |
+ if (effectiveType != kBool_GrSLType) { |
+ out->append(PrecisionString(glslCaps, fPrecision)); |
+ } |
if (this->isArray()) { |
if (this->isUnsizedArray()) { |
out->appendf("%s %s[]", |