| 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 ||
|
| + 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[]",
|
|
|