| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2016 Google Inc. | 2  * Copyright 2016 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 #include "SkSLType.h" | 8 #include "SkSLType.h" | 
| 9 | 9 | 
| 10 namespace SkSL { | 10 namespace SkSL { | 
| 11 | 11 | 
| 12 bool Type::determineCoercionCost(const Type& other, int* outCost) const { | 12 bool Type::determineCoercionCost(std::shared_ptr<Type> other, int* outCost) cons
     t { | 
| 13     if (*this == other) { | 13     if (this == other.get()) { | 
| 14         *outCost = 0; | 14         *outCost = 0; | 
| 15         return true; | 15         return true; | 
| 16     } | 16     } | 
| 17     if (this->kind() == kVector_Kind && other.kind() == kVector_Kind) { | 17     if (this->kind() == kVector_Kind && other->kind() == kVector_Kind) { | 
| 18         if (this->columns() == other.columns()) { | 18         if (this->columns() == other->columns()) { | 
| 19             return this->componentType().determineCoercionCost(other.componentTy
     pe(), outCost); | 19             return this->componentType()->determineCoercionCost(other->component
     Type(), outCost); | 
| 20         } | 20         } | 
| 21         return false; | 21         return false; | 
| 22     } | 22     } | 
| 23     if (this->kind() == kMatrix_Kind) { | 23     if (this->kind() == kMatrix_Kind) { | 
| 24         if (this->columns() == other.columns() && | 24         if (this->columns() == other->columns() && | 
| 25             this->rows() == other.rows()) { | 25             this->rows() == other->rows()) { | 
| 26             return this->componentType().determineCoercionCost(other.componentTy
     pe(), outCost); | 26             return this->componentType()->determineCoercionCost(other->component
     Type(), outCost); | 
| 27         } | 27         } | 
| 28         return false; | 28         return false; | 
| 29     } | 29     } | 
| 30     for (size_t i = 0; i < fCoercibleTypes.size(); i++) { | 30     for (size_t i = 0; i < fCoercibleTypes.size(); i++) { | 
| 31         if (*fCoercibleTypes[i] == other) { | 31         if (fCoercibleTypes[i] == other) { | 
| 32             *outCost = (int) i + 1; | 32             *outCost = (int) i + 1; | 
| 33             return true; | 33             return true; | 
| 34         } | 34         } | 
| 35     } | 35     } | 
| 36     return false; | 36     return false; | 
| 37 } | 37 } | 
| 38 | 38 | 
| 39 const Type& Type::toCompound(int columns, int rows) const { | 39 std::shared_ptr<Type> Type::toCompound(int columns, int rows) { | 
| 40     ASSERT(this->kind() == Type::kScalar_Kind); | 40     ASSERT(this->kind() == Type::kScalar_Kind); | 
| 41     if (columns == 1 && rows == 1) { | 41     if (columns == 1 && rows == 1) { | 
| 42         return *this; | 42         return std::shared_ptr<Type>(this); | 
| 43     } | 43     } | 
| 44     if (*this == *kFloat_Type) { | 44     if (*this == *kFloat_Type) { | 
| 45         switch (rows) { | 45         switch (rows) { | 
| 46             case 1: | 46             case 1: | 
| 47                 switch (columns) { | 47                 switch (columns) { | 
| 48                     case 2: return *kVec2_Type; | 48                     case 2: return kVec2_Type; | 
| 49                     case 3: return *kVec3_Type; | 49                     case 3: return kVec3_Type; | 
| 50                     case 4: return *kVec4_Type; | 50                     case 4: return kVec4_Type; | 
| 51                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 51                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 
| 52                 } | 52                 } | 
| 53             case 2: | 53             case 2: | 
| 54                 switch (columns) { | 54                 switch (columns) { | 
| 55                     case 2: return *kMat2x2_Type; | 55                     case 2: return kMat2x2_Type; | 
| 56                     case 3: return *kMat3x2_Type; | 56                     case 3: return kMat3x2_Type; | 
| 57                     case 4: return *kMat4x2_Type; | 57                     case 4: return kMat4x2_Type; | 
| 58                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 58                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 
| 59                 } | 59                 } | 
| 60             case 3: | 60             case 3: | 
| 61                 switch (columns) { | 61                 switch (columns) { | 
| 62                     case 2: return *kMat2x3_Type; | 62                     case 2: return kMat2x3_Type; | 
| 63                     case 3: return *kMat3x3_Type; | 63                     case 3: return kMat3x3_Type; | 
| 64                     case 4: return *kMat4x3_Type; | 64                     case 4: return kMat4x3_Type; | 
| 65                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 65                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 
| 66                 } | 66                 } | 
| 67             case 4: | 67             case 4: | 
| 68                 switch (columns) { | 68                 switch (columns) { | 
| 69                     case 2: return *kMat2x4_Type; | 69                     case 2: return kMat2x4_Type; | 
| 70                     case 3: return *kMat3x4_Type; | 70                     case 3: return kMat3x4_Type; | 
| 71                     case 4: return *kMat4x4_Type; | 71                     case 4: return kMat4x4_Type; | 
| 72                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 72                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 
| 73                 } | 73                 } | 
| 74             default: ABORT("unsupported row count (%d)", rows); | 74             default: ABORT("unsupported row count (%d)", rows); | 
| 75         } | 75         } | 
| 76     } else if (*this == *kDouble_Type) { | 76     } else if (*this == *kDouble_Type) { | 
| 77         switch (rows) { | 77         switch (rows) { | 
| 78             case 1: | 78             case 1: | 
| 79                 switch (columns) { | 79                 switch (columns) { | 
| 80                     case 2: return *kDVec2_Type; | 80                     case 2: return kDVec2_Type; | 
| 81                     case 3: return *kDVec3_Type; | 81                     case 3: return kDVec3_Type; | 
| 82                     case 4: return *kDVec4_Type; | 82                     case 4: return kDVec4_Type; | 
| 83                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 83                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 
| 84                 } | 84                 } | 
| 85             case 2: | 85             case 2: | 
| 86                 switch (columns) { | 86                 switch (columns) { | 
| 87                     case 2: return *kDMat2x2_Type; | 87                     case 2: return kDMat2x2_Type; | 
| 88                     case 3: return *kDMat3x2_Type; | 88                     case 3: return kDMat3x2_Type; | 
| 89                     case 4: return *kDMat4x2_Type; | 89                     case 4: return kDMat4x2_Type; | 
| 90                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 90                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 
| 91                 } | 91                 } | 
| 92             case 3: | 92             case 3: | 
| 93                 switch (columns) { | 93                 switch (columns) { | 
| 94                     case 2: return *kDMat2x3_Type; | 94                     case 2: return kDMat2x3_Type; | 
| 95                     case 3: return *kDMat3x3_Type; | 95                     case 3: return kDMat3x3_Type; | 
| 96                     case 4: return *kDMat4x3_Type; | 96                     case 4: return kDMat4x3_Type; | 
| 97                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 97                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 
| 98                 } | 98                 } | 
| 99             case 4: | 99             case 4: | 
| 100                 switch (columns) { | 100                 switch (columns) { | 
| 101                     case 2: return *kDMat2x4_Type; | 101                     case 2: return kDMat2x4_Type; | 
| 102                     case 3: return *kDMat3x4_Type; | 102                     case 3: return kDMat3x4_Type; | 
| 103                     case 4: return *kDMat4x4_Type; | 103                     case 4: return kDMat4x4_Type; | 
| 104                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 104                     default: ABORT("unsupported matrix column count (%d)", colum
     ns); | 
| 105                 } | 105                 } | 
| 106             default: ABORT("unsupported row count (%d)", rows); | 106             default: ABORT("unsupported row count (%d)", rows); | 
| 107         } | 107         } | 
| 108     } else if (*this == *kInt_Type) { | 108     } else if (*this == *kInt_Type) { | 
| 109         switch (rows) { | 109         switch (rows) { | 
| 110             case 1: | 110             case 1: | 
| 111                 switch (columns) { | 111                 switch (columns) { | 
| 112                     case 2: return *kIVec2_Type; | 112                     case 2: return kIVec2_Type; | 
| 113                     case 3: return *kIVec3_Type; | 113                     case 3: return kIVec3_Type; | 
| 114                     case 4: return *kIVec4_Type; | 114                     case 4: return kIVec4_Type; | 
| 115                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 115                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 
| 116                 } | 116                 } | 
| 117             default: ABORT("unsupported row count (%d)", rows); | 117             default: ABORT("unsupported row count (%d)", rows); | 
| 118         } | 118         } | 
| 119     } else if (*this == *kUInt_Type) { | 119     } else if (*this == *kUInt_Type) { | 
| 120         switch (rows) { | 120         switch (rows) { | 
| 121             case 1: | 121             case 1: | 
| 122                 switch (columns) { | 122                 switch (columns) { | 
| 123                     case 2: return *kUVec2_Type; | 123                     case 2: return kUVec2_Type; | 
| 124                     case 3: return *kUVec3_Type; | 124                     case 3: return kUVec3_Type; | 
| 125                     case 4: return *kUVec4_Type; | 125                     case 4: return kUVec4_Type; | 
| 126                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 126                     default: ABORT("unsupported vector column count (%d)", colum
     ns); | 
| 127                 } | 127                 } | 
| 128             default: ABORT("unsupported row count (%d)", rows); | 128             default: ABORT("unsupported row count (%d)", rows); | 
| 129         } | 129         } | 
| 130     } | 130     } | 
| 131     ABORT("unsupported scalar_to_compound type %s", this->description().c_str())
     ; | 131     ABORT("unsupported scalar_to_compound type %s", this->description().c_str())
     ; | 
| 132 } | 132 } | 
| 133 | 133 | 
| 134 const Type* kVoid_Type = new Type("void"); | 134 const std::shared_ptr<Type> kVoid_Type(new Type("void")); | 
| 135 | 135 | 
| 136 const Type* kDouble_Type = new Type("double", true); | 136 const std::shared_ptr<Type> kDouble_Type(new Type("double", true)); | 
| 137 const Type* kDVec2_Type = new Type("dvec2", *kDouble_Type, 2); | 137 const std::shared_ptr<Type> kDVec2_Type(new Type("dvec2", kDouble_Type, 2)); | 
| 138 const Type* kDVec3_Type = new Type("dvec3", *kDouble_Type, 3); | 138 const std::shared_ptr<Type> kDVec3_Type(new Type("dvec3", kDouble_Type, 3)); | 
| 139 const Type* kDVec4_Type = new Type("dvec4", *kDouble_Type, 4); | 139 const std::shared_ptr<Type> kDVec4_Type(new Type("dvec4", kDouble_Type, 4)); | 
| 140 | 140 | 
| 141 const Type* kFloat_Type = new Type("float", true, { kDouble_Type }); | 141 const std::shared_ptr<Type> kFloat_Type(new Type("float", true, { kDouble_Type }
     )); | 
| 142 const Type* kVec2_Type = new Type("vec2", *kFloat_Type, 2); | 142 const std::shared_ptr<Type> kVec2_Type(new Type("vec2", kFloat_Type, 2)); | 
| 143 const Type* kVec3_Type = new Type("vec3", *kFloat_Type, 3); | 143 const std::shared_ptr<Type> kVec3_Type(new Type("vec3", kFloat_Type, 3)); | 
| 144 const Type* kVec4_Type = new Type("vec4", *kFloat_Type, 4); | 144 const std::shared_ptr<Type> kVec4_Type(new Type("vec4", kFloat_Type, 4)); | 
| 145 | 145 | 
| 146 const Type* kUInt_Type = new Type("uint", true, { kFloat_Type, kDouble_Type }); | 146 const std::shared_ptr<Type> kUInt_Type(new Type("uint", true, { kFloat_Type, kDo
     uble_Type })); | 
| 147 const Type* kUVec2_Type = new Type("uvec2", *kUInt_Type, 2); | 147 const std::shared_ptr<Type> kUVec2_Type(new Type("uvec2", kUInt_Type, 2)); | 
| 148 const Type* kUVec3_Type = new Type("uvec3", *kUInt_Type, 3); | 148 const std::shared_ptr<Type> kUVec3_Type(new Type("uvec3", kUInt_Type, 3)); | 
| 149 const Type* kUVec4_Type = new Type("uvec4", *kUInt_Type, 4); | 149 const std::shared_ptr<Type> kUVec4_Type(new Type("uvec4", kUInt_Type, 4)); | 
| 150 | 150 | 
| 151 const Type* kInt_Type = new Type("int", true, { kUInt_Type, kFloat_Type, kDouble
     _Type }); | 151 const std::shared_ptr<Type> kInt_Type(new Type("int", true, { kUInt_Type, kFloat
     _Type, | 
| 152 const Type* kIVec2_Type = new Type("ivec2", *kInt_Type, 2); | 152                                                               kDouble_Type })); | 
| 153 const Type* kIVec3_Type = new Type("ivec3", *kInt_Type, 3); | 153 const std::shared_ptr<Type> kIVec2_Type(new Type("ivec2", kInt_Type, 2)); | 
| 154 const Type* kIVec4_Type = new Type("ivec4", *kInt_Type, 4); | 154 const std::shared_ptr<Type> kIVec3_Type(new Type("ivec3", kInt_Type, 3)); | 
|  | 155 const std::shared_ptr<Type> kIVec4_Type(new Type("ivec4", kInt_Type, 4)); | 
| 155 | 156 | 
| 156 const Type* kBool_Type = new Type("bool", false); | 157 const std::shared_ptr<Type> kBool_Type(new Type("bool", false)); | 
| 157 const Type* kBVec2_Type = new Type("bvec2", *kBool_Type, 2); | 158 const std::shared_ptr<Type> kBVec2_Type(new Type("bvec2", kBool_Type, 2)); | 
| 158 const Type* kBVec3_Type = new Type("bvec3", *kBool_Type, 3); | 159 const std::shared_ptr<Type> kBVec3_Type(new Type("bvec3", kBool_Type, 3)); | 
| 159 const Type* kBVec4_Type = new Type("bvec4", *kBool_Type, 4); | 160 const std::shared_ptr<Type> kBVec4_Type(new Type("bvec4", kBool_Type, 4)); | 
| 160 | 161 | 
| 161 const Type* kMat2x2_Type = new Type("mat2",   *kFloat_Type, 2, 2); | 162 const std::shared_ptr<Type> kMat2x2_Type(new Type("mat2",   kFloat_Type, 2, 2)); | 
| 162 const Type* kMat2x3_Type = new Type("mat2x3", *kFloat_Type, 2, 3); | 163 const std::shared_ptr<Type> kMat2x3_Type(new Type("mat2x3", kFloat_Type, 2, 3)); | 
| 163 const Type* kMat2x4_Type = new Type("mat2x4", *kFloat_Type, 2, 4); | 164 const std::shared_ptr<Type> kMat2x4_Type(new Type("mat2x4", kFloat_Type, 2, 4)); | 
| 164 const Type* kMat3x2_Type = new Type("mat3x2", *kFloat_Type, 3, 2); | 165 const std::shared_ptr<Type> kMat3x2_Type(new Type("mat3x2", kFloat_Type, 3, 2)); | 
| 165 const Type* kMat3x3_Type = new Type("mat3",   *kFloat_Type, 3, 3); | 166 const std::shared_ptr<Type> kMat3x3_Type(new Type("mat3",   kFloat_Type, 3, 3)); | 
| 166 const Type* kMat3x4_Type = new Type("mat3x4", *kFloat_Type, 3, 4); | 167 const std::shared_ptr<Type> kMat3x4_Type(new Type("mat3x4", kFloat_Type, 3, 4)); | 
| 167 const Type* kMat4x2_Type = new Type("mat4x2", *kFloat_Type, 4, 2); | 168 const std::shared_ptr<Type> kMat4x2_Type(new Type("mat4x2", kFloat_Type, 4, 2)); | 
| 168 const Type* kMat4x3_Type = new Type("mat4x3", *kFloat_Type, 4, 3); | 169 const std::shared_ptr<Type> kMat4x3_Type(new Type("mat4x3", kFloat_Type, 4, 3)); | 
| 169 const Type* kMat4x4_Type = new Type("mat4",   *kFloat_Type, 4, 4); | 170 const std::shared_ptr<Type> kMat4x4_Type(new Type("mat4",   kFloat_Type, 4, 4)); | 
| 170 | 171 | 
| 171 const Type* kDMat2x2_Type = new Type("dmat2",   *kFloat_Type, 2, 2); | 172 const std::shared_ptr<Type> kDMat2x2_Type(new Type("dmat2",   kFloat_Type, 2, 2)
     ); | 
| 172 const Type* kDMat2x3_Type = new Type("dmat2x3", *kFloat_Type, 2, 3); | 173 const std::shared_ptr<Type> kDMat2x3_Type(new Type("dmat2x3", kFloat_Type, 2, 3)
     ); | 
| 173 const Type* kDMat2x4_Type = new Type("dmat2x4", *kFloat_Type, 2, 4); | 174 const std::shared_ptr<Type> kDMat2x4_Type(new Type("dmat2x4", kFloat_Type, 2, 4)
     ); | 
| 174 const Type* kDMat3x2_Type = new Type("dmat3x2", *kFloat_Type, 3, 2); | 175 const std::shared_ptr<Type> kDMat3x2_Type(new Type("dmat3x2", kFloat_Type, 3, 2)
     ); | 
| 175 const Type* kDMat3x3_Type = new Type("dmat3",   *kFloat_Type, 3, 3); | 176 const std::shared_ptr<Type> kDMat3x3_Type(new Type("dmat3",   kFloat_Type, 3, 3)
     ); | 
| 176 const Type* kDMat3x4_Type = new Type("dmat3x4", *kFloat_Type, 3, 4); | 177 const std::shared_ptr<Type> kDMat3x4_Type(new Type("dmat3x4", kFloat_Type, 3, 4)
     ); | 
| 177 const Type* kDMat4x2_Type = new Type("dmat4x2", *kFloat_Type, 4, 2); | 178 const std::shared_ptr<Type> kDMat4x2_Type(new Type("dmat4x2", kFloat_Type, 4, 2)
     ); | 
| 178 const Type* kDMat4x3_Type = new Type("dmat4x3", *kFloat_Type, 4, 3); | 179 const std::shared_ptr<Type> kDMat4x3_Type(new Type("dmat4x3", kFloat_Type, 4, 3)
     ); | 
| 179 const Type* kDMat4x4_Type = new Type("dmat4",   *kFloat_Type, 4, 4); | 180 const std::shared_ptr<Type> kDMat4x4_Type(new Type("dmat4",   kFloat_Type, 4, 4)
     ); | 
| 180 | 181 | 
| 181 const Type* kSampler1D_Type = new Type("sampler1D", SpvDim1D, false, false, fals
     e, true); | 182 const std::shared_ptr<Type> kSampler1D_Type(new Type("sampler1D", SpvDim1D, fals
     e, false, false, true)); | 
| 182 const Type* kSampler2D_Type = new Type("sampler2D", SpvDim2D, false, false, fals
     e, true); | 183 const std::shared_ptr<Type> kSampler2D_Type(new Type("sampler2D", SpvDim2D, fals
     e, false, false, true)); | 
| 183 const Type* kSampler3D_Type = new Type("sampler3D", SpvDim3D, false, false, fals
     e, true); | 184 const std::shared_ptr<Type> kSampler3D_Type(new Type("sampler3D", SpvDim3D, fals
     e, false, false, true)); | 
| 184 const Type* kSamplerCube_Type = new Type("samplerCube"); | 185 const std::shared_ptr<Type> kSamplerCube_Type(new Type("samplerCube")); | 
| 185 const Type* kSampler2DRect_Type = new Type("sampler2DRect"); | 186 const std::shared_ptr<Type> kSampler2DRect_Type(new Type("sampler2DRect")); | 
| 186 const Type* kSampler1DArray_Type = new Type("sampler1DArray"); | 187 const std::shared_ptr<Type> kSampler1DArray_Type(new Type("sampler1DArray")); | 
| 187 const Type* kSampler2DArray_Type = new Type("sampler2DArray"); | 188 const std::shared_ptr<Type> kSampler2DArray_Type(new Type("sampler2DArray")); | 
| 188 const Type* kSamplerCubeArray_Type = new Type("samplerCubeArray"); | 189 const std::shared_ptr<Type> kSamplerCubeArray_Type(new Type("samplerCubeArray"))
     ; | 
| 189 const Type* kSamplerBuffer_Type = new Type("samplerBuffer"); | 190 const std::shared_ptr<Type> kSamplerBuffer_Type(new Type("samplerBuffer")); | 
| 190 const Type* kSampler2DMS_Type = new Type("sampler2DMS"); | 191 const std::shared_ptr<Type> kSampler2DMS_Type(new Type("sampler2DMS")); | 
| 191 const Type* kSampler2DMSArray_Type = new Type("sampler2DMSArray"); | 192 const std::shared_ptr<Type> kSampler2DMSArray_Type(new Type("sampler2DMSArray"))
     ; | 
| 192 const Type* kSampler1DShadow_Type = new Type("sampler1DShadow"); | 193 const std::shared_ptr<Type> kSampler1DShadow_Type(new Type("sampler1DShadow")); | 
| 193 const Type* kSampler2DShadow_Type = new Type("sampler2DShadow"); | 194 const std::shared_ptr<Type> kSampler2DShadow_Type(new Type("sampler2DShadow")); | 
| 194 const Type* kSamplerCubeShadow_Type = new Type("samplerCubeShadow"); | 195 const std::shared_ptr<Type> kSamplerCubeShadow_Type(new Type("samplerCubeShadow"
     )); | 
| 195 const Type* kSampler2DRectShadow_Type = new Type("sampler2DRectShadow"); | 196 const std::shared_ptr<Type> kSampler2DRectShadow_Type(new Type("sampler2DRectSha
     dow")); | 
| 196 const Type* kSampler1DArrayShadow_Type = new Type("sampler1DArrayShadow"); | 197 const std::shared_ptr<Type> kSampler1DArrayShadow_Type(new Type("sampler1DArrayS
     hadow")); | 
| 197 const Type* kSampler2DArrayShadow_Type = new Type("sampler2DArrayShadow"); | 198 const std::shared_ptr<Type> kSampler2DArrayShadow_Type(new Type("sampler2DArrayS
     hadow")); | 
| 198 const Type* kSamplerCubeArrayShadow_Type = new Type("samplerCubeArrayShadow"); | 199 const std::shared_ptr<Type> kSamplerCubeArrayShadow_Type(new Type("samplerCubeAr
     rayShadow")); | 
| 199 | 200 | 
| 200 static std::vector<const Type*> type(const Type* t) { | 201 static std::vector<std::shared_ptr<Type>> type(std::shared_ptr<Type> t) { | 
| 201     return { t, t, t, t }; | 202     return { t, t, t, t }; | 
| 202 } | 203 } | 
| 203 | 204 | 
| 204 // FIXME figure out what we're supposed to do with the gsampler et al. types | 205 // FIXME figure out what we're supposed to do with the gsampler et al. types | 
| 205 const Type* kGSampler1D_Type = new Type("$gsampler1D", type(kSampler1D_Type)); | 206 const std::shared_ptr<Type> kGSampler1D_Type(new Type("$gsampler1D", type(kSampl
     er1D_Type))); | 
| 206 const Type* kGSampler2D_Type = new Type("$gsampler2D", type(kSampler2D_Type)); | 207 const std::shared_ptr<Type> kGSampler2D_Type(new Type("$gsampler2D", type(kSampl
     er2D_Type))); | 
| 207 const Type* kGSampler3D_Type = new Type("$gsampler3D", type(kSampler3D_Type)); | 208 const std::shared_ptr<Type> kGSampler3D_Type(new Type("$gsampler3D", type(kSampl
     er3D_Type))); | 
| 208 const Type* kGSamplerCube_Type = new Type("$gsamplerCube", type(kSamplerCube_Typ
     e)); | 209 const std::shared_ptr<Type> kGSamplerCube_Type(new Type("$gsamplerCube", type(kS
     amplerCube_Type))); | 
| 209 const Type* kGSampler2DRect_Type = new Type("$gsampler2DRect", type(kSampler2DRe
     ct_Type)); | 210 const std::shared_ptr<Type> kGSampler2DRect_Type(new Type("$gsampler2DRect", | 
| 210 const Type* kGSampler1DArray_Type = new Type("$gsampler1DArray", type(kSampler1D
     Array_Type)); | 211                                                  type(kSampler2DRect_Type))); | 
| 211 const Type* kGSampler2DArray_Type = new Type("$gsampler2DArray", type(kSampler2D
     Array_Type)); | 212 const std::shared_ptr<Type> kGSampler1DArray_Type(new Type("$gsampler1DArray", | 
| 212 const Type* kGSamplerCubeArray_Type = new Type("$gsamplerCubeArray", type(kSampl
     erCubeArray_Type)); | 213                                                   type(kSampler1DArray_Type))); | 
| 213 const Type* kGSamplerBuffer_Type = new Type("$gsamplerBuffer", type(kSamplerBuff
     er_Type)); | 214 const std::shared_ptr<Type> kGSampler2DArray_Type(new Type("$gsampler2DArray", | 
| 214 const Type* kGSampler2DMS_Type = new Type("$gsampler2DMS", type(kSampler2DMS_Typ
     e)); | 215                                                   type(kSampler2DArray_Type))); | 
| 215 const Type* kGSampler2DMSArray_Type = new Type("$gsampler2DMSArray", type(kSampl
     er2DMSArray_Type)); | 216 const std::shared_ptr<Type> kGSamplerCubeArray_Type(new Type("$gsamplerCubeArray
     ", | 
| 216 const Type* kGSampler2DArrayShadow_Type = new Type("$gsampler2DArrayShadow", | 217                                                     type(kSamplerCubeArray_Type)
     )); | 
| 217                                                    type(kSampler2DArrayShadow_Ty
     pe)); | 218 const std::shared_ptr<Type> kGSamplerBuffer_Type(new Type("$gsamplerBuffer", | 
| 218 const Type* kGSamplerCubeArrayShadow_Type = new Type("$gsamplerCubeArrayShadow", | 219                                                  type(kSamplerBuffer_Type))); | 
| 219                                                      type(kSamplerCubeArrayShado
     w_Type)); | 220 const std::shared_ptr<Type> kGSampler2DMS_Type(new Type("$gsampler2DMS", | 
|  | 221                                                type(kSampler2DMS_Type))); | 
|  | 222 const std::shared_ptr<Type> kGSampler2DMSArray_Type(new Type("$gsampler2DMSArray
     ", | 
|  | 223                                                     type(kSampler2DMSArray_Type)
     )); | 
|  | 224 const std::shared_ptr<Type> kGSampler2DArrayShadow_Type(new Type("$gsampler2DArr
     ayShadow", | 
|  | 225                                                         type(kSampler2DArrayShad
     ow_Type))); | 
|  | 226 const std::shared_ptr<Type> kGSamplerCubeArrayShadow_Type(new Type("$gsamplerCub
     eArrayShadow", | 
|  | 227                                                           type(kSamplerCubeArray
     Shadow_Type))); | 
| 220 | 228 | 
| 221 const Type* kGenType_Type = new Type("$genType", { kFloat_Type, kVec2_Type, kVec
     3_Type, | 229 const std::shared_ptr<Type> kGenType_Type(new Type("$genType", { kFloat_Type, kV
     ec2_Type, | 
| 222                                                    kVec4_Type }); | 230                                                                  kVec3_Type, kVe
     c4_Type })); | 
| 223 const Type* kGenDType_Type = new Type("$genDType", { kDouble_Type, kDVec2_Type, 
     kDVec3_Type, | 231 const std::shared_ptr<Type> kGenDType_Type(new Type("$genDType", { kDouble_Type,
      kDVec2_Type, | 
| 224                                                      kDVec4_Type }); | 232                                                                    kDVec3_Type, 
     kDVec4_Type })); | 
| 225 const Type* kGenIType_Type = new Type("$genIType", { kInt_Type, kIVec2_Type, kIV
     ec3_Type, | 233 const std::shared_ptr<Type> kGenIType_Type(new Type("$genIType", { kInt_Type, kI
     Vec2_Type, | 
| 226                                                      kIVec4_Type }); | 234                                                                    kIVec3_Type, 
     kIVec4_Type })); | 
| 227 const Type* kGenUType_Type = new Type("$genUType", { kUInt_Type, kUVec2_Type, kU
     Vec3_Type, | 235 const std::shared_ptr<Type> kGenUType_Type(new Type("$genUType", { kUInt_Type, k
     UVec2_Type, | 
| 228                                                      kUVec4_Type }); | 236                                                                    kUVec3_Type, 
     kUVec4_Type })); | 
| 229 const Type* kGenBType_Type = new Type("$genBType", { kBool_Type, kBVec2_Type, kB
     Vec3_Type, | 237 const std::shared_ptr<Type> kGenBType_Type(new Type("$genBType", { kBool_Type, k
     BVec2_Type, | 
| 230                                                      kBVec4_Type }); | 238                                                                    kBVec3_Type, 
     kBVec4_Type })); | 
| 231 | 239 | 
| 232 const Type* kMat_Type = new Type("$mat"); | 240 const std::shared_ptr<Type> kMat_Type(new Type("$mat")); | 
| 233 | 241 | 
| 234 const Type* kVec_Type = new Type("$vec", { kVec2_Type, kVec2_Type, kVec3_Type, k
     Vec4_Type }); | 242 const std::shared_ptr<Type> kVec_Type(new Type("$vec", { kVec2_Type, kVec2_Type,
      kVec3_Type, | 
|  | 243                                                          kVec4_Type })); | 
| 235 | 244 | 
| 236 const Type* kGVec_Type = new Type("$gvec"); | 245 const std::shared_ptr<Type> kGVec_Type(new Type("$gvec")); | 
| 237 const Type* kGVec2_Type = new Type("$gvec2"); | 246 const std::shared_ptr<Type> kGVec2_Type(new Type("$gvec2")); | 
| 238 const Type* kGVec3_Type = new Type("$gvec3"); | 247 const std::shared_ptr<Type> kGVec3_Type(new Type("$gvec3")); | 
| 239 const Type* kGVec4_Type = new Type("$gvec4", type(kVec4_Type)); | 248 const std::shared_ptr<Type> kGVec4_Type(new Type("$gvec4", type(kVec4_Type))); | 
| 240 const Type* kDVec_Type = new Type("$dvec"); | 249 const std::shared_ptr<Type> kDVec_Type(new Type("$dvec")); | 
| 241 const Type* kIVec_Type = new Type("$ivec"); | 250 const std::shared_ptr<Type> kIVec_Type(new Type("$ivec")); | 
| 242 const Type* kUVec_Type = new Type("$uvec"); | 251 const std::shared_ptr<Type> kUVec_Type(new Type("$uvec")); | 
| 243 | 252 | 
| 244 const Type* kBVec_Type = new Type("$bvec", { kBVec2_Type, kBVec2_Type, kBVec3_Ty
     pe, kBVec4_Type }); | 253 const std::shared_ptr<Type> kBVec_Type(new Type("$bvec", { kBVec2_Type, kBVec2_T
     ype, | 
|  | 254                                                            kBVec3_Type, kBVec4_T
     ype })); | 
| 245 | 255 | 
| 246 const Type* kInvalid_Type = new Type("<INVALID>"); | 256 const std::shared_ptr<Type> kInvalid_Type(new Type("<INVALID>")); | 
| 247 | 257 | 
| 248 } // namespace | 258 } // namespace | 
| OLD | NEW | 
|---|