Chromium Code Reviews| Index: src/gpu/glsl/GrGLSLShaderVar.h |
| diff --git a/src/gpu/glsl/GrGLSLShaderVar.h b/src/gpu/glsl/GrGLSLShaderVar.h |
| index a8b2c9b638cfb2455082375089dafece8fb57e3c..14018c6bc9192dff328d1560ae7256dcdf05f92c 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 (fType == kInt_GrSLType && (this->getTypeModifier() == kVaryingIn_TypeModifier || |
|
bsalomon
2016/01/13 19:15:34
Maybe create a GrSLTypeIsInt() so that we'd don't
|
| + 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[]", |