| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef GrGLShaderVar_DEFINED | 8 #ifndef GrGLSLShaderVar_DEFINED |
| 9 #define GrGLShaderVar_DEFINED | 9 #define GrGLSLShaderVar_DEFINED |
| 10 | 10 |
| 11 #include "GrShaderVar.h" | 11 #include "GrShaderVar.h" |
| 12 #include "../glsl/GrGLSL.h" | 12 #include "../glsl/GrGLSL.h" |
| 13 #include "../glsl/GrGLSLCaps.h" | 13 #include "../glsl/GrGLSLCaps.h" |
| 14 | 14 |
| 15 #define USE_UNIFORM_FLOAT_ARRAYS true | 15 #define USE_UNIFORM_FLOAT_ARRAYS true |
| 16 | 16 |
| 17 /** | 17 /** |
| 18 * Represents a variable in a shader | 18 * Represents a variable in a shader |
| 19 */ | 19 */ |
| 20 class GrGLShaderVar : public GrShaderVar { | 20 class GrGLSLShaderVar : public GrShaderVar { |
| 21 public: | 21 public: |
| 22 /** | 22 /** |
| 23 * See GL_ARB_fragment_coord_conventions. | 23 * See GL_ARB_fragment_coord_conventions. |
| 24 */ | 24 */ |
| 25 enum Origin { | 25 enum Origin { |
| 26 kDefault_Origin, // when set to kDefault the origin field is igno
red. | 26 kDefault_Origin, // when set to kDefault the origin field is igno
red. |
| 27 kUpperLeft_Origin, // only used to declare vec4 in gl_FragCoord. | 27 kUpperLeft_Origin, // only used to declare vec4 in gl_FragCoord. |
| 28 }; | 28 }; |
| 29 | 29 |
| 30 /** | 30 /** |
| 31 * Defaults to a float with no precision specifier | 31 * Defaults to a float with no precision specifier |
| 32 */ | 32 */ |
| 33 GrGLShaderVar() | 33 GrGLSLShaderVar() |
| 34 : GrShaderVar() | 34 : GrShaderVar() |
| 35 , fOrigin(kDefault_Origin) | 35 , fOrigin(kDefault_Origin) |
| 36 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 36 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
| 37 } | 37 } |
| 38 | 38 |
| 39 GrGLShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray, | 39 GrGLSLShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray, |
| 40 GrSLPrecision precision = kDefault_GrSLPrecision) | 40 GrSLPrecision precision = kDefault_GrSLPrecision) |
| 41 : GrShaderVar(name, type, arrayCount, precision) | 41 : GrShaderVar(name, type, arrayCount, precision) |
| 42 , fOrigin(kDefault_Origin) | 42 , fOrigin(kDefault_Origin) |
| 43 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 43 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
| 44 SkASSERT(kVoid_GrSLType != type); | 44 SkASSERT(kVoid_GrSLType != type); |
| 45 fOrigin = kDefault_Origin; | 45 fOrigin = kDefault_Origin; |
| 46 fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS; | 46 fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS; |
| 47 } | 47 } |
| 48 | 48 |
| 49 GrGLShaderVar(const char* name, GrSLType type, TypeModifier typeModifier, | 49 GrGLSLShaderVar(const char* name, GrSLType type, TypeModifier typeModifier, |
| 50 int arrayCount = kNonArray, GrSLPrecision precision = kDefault
_GrSLPrecision) | 50 int arrayCount = kNonArray, GrSLPrecision precision = kDefau
lt_GrSLPrecision) |
| 51 : GrShaderVar(name, type, typeModifier, arrayCount, precision) | 51 : GrShaderVar(name, type, typeModifier, arrayCount, precision) |
| 52 , fOrigin(kDefault_Origin) | 52 , fOrigin(kDefault_Origin) |
| 53 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 53 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
| 54 SkASSERT(kVoid_GrSLType != type); | 54 SkASSERT(kVoid_GrSLType != type); |
| 55 } | 55 } |
| 56 | 56 |
| 57 GrGLShaderVar(const GrShaderVar& var) | 57 GrGLSLShaderVar(const GrShaderVar& var) |
| 58 : GrShaderVar(var) | 58 : GrShaderVar(var) |
| 59 , fOrigin(kDefault_Origin) | 59 , fOrigin(kDefault_Origin) |
| 60 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 60 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
| 61 SkASSERT(kVoid_GrSLType != var.getType()); | 61 SkASSERT(kVoid_GrSLType != var.getType()); |
| 62 } | 62 } |
| 63 | 63 |
| 64 GrGLShaderVar(const GrGLShaderVar& var) | 64 GrGLSLShaderVar(const GrGLSLShaderVar& var) |
| 65 : GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(), | 65 : GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(), |
| 66 var.getArrayCount(), var.getPrecision()) | 66 var.getArrayCount(), var.getPrecision()) |
| 67 , fOrigin(var.fOrigin) | 67 , fOrigin(var.fOrigin) |
| 68 , fUseUniformFloatArrays(var.fUseUniformFloatArrays) { | 68 , fUseUniformFloatArrays(var.fUseUniformFloatArrays) { |
| 69 SkASSERT(kVoid_GrSLType != var.getType()); | 69 SkASSERT(kVoid_GrSLType != var.getType()); |
| 70 } | 70 } |
| 71 | 71 |
| 72 /** | 72 /** |
| 73 * Values for array count that have special meaning. We allow 1-sized arrays
. | 73 * Values for array count that have special meaning. We allow 1-sized arrays
. |
| 74 */ | 74 */ |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 | 247 |
| 248 Origin fOrigin; | 248 Origin fOrigin; |
| 249 /// Work around driver bugs on some hardware that don't correctly | 249 /// Work around driver bugs on some hardware that don't correctly |
| 250 /// support uniform float [] | 250 /// support uniform float [] |
| 251 bool fUseUniformFloatArrays; | 251 bool fUseUniformFloatArrays; |
| 252 | 252 |
| 253 typedef GrShaderVar INHERITED; | 253 typedef GrShaderVar INHERITED; |
| 254 }; | 254 }; |
| 255 | 255 |
| 256 #endif | 256 #endif |
| OLD | NEW |