1// The format of this file: 2// C++ style single-line comments are supported. 3// Leading whitespace is only for formatting and doesn't have semantic meaning. 4// 5// Grouping: 6// Groups of functions are denoted by "GROUP BEGIN" and "GROUP END". Groups can be nested. 7// Groups can have metadata related to the group itself. This is given at the end of the GROUP 8// BEGIN line in JSON object format. 9// Example: 10// GROUP BEGIN <group name> {"shader_type": "FRAGMENT"} 11// GROUP END <group name> 12// 13// Defaults: 14// Default metadata for functions can be set with "DEFAULT METADATA" followed by metadata in JSON 15// object format. The metadata is applied to all following functions regardless of grouping until 16// another "DEFAULT METADATA" line is encountered, or until the end of a top-level group. 17// Example: 18// DEFAULT METADATA {"opSuffix": "ComponentWise"} 19// 20// Supported function metadata properties are: 21// "essl_level" 22// string, one of COMMON_BUILTINS, ESSL1_BUILTINS, ESSL3_BUILTINS, ESSL3_1_BUILTINS, 23// ESSL3_2_BUILTINS, ESSL_INTERNAL_BACKEND_BUILTINS. 24// "glsl_level" 25// string, one of COMMON_BUILTINS, COMMON_BUILTINS, GLSL1_2_BUILTINS, GLSL1_3_BUILTINS, 26// GLSL1_4_BUILTINS, GLSL1_5_BUILTINS, GLSL3_3_BUILTINS, GLSL4_BUILTINS, GLSL4_1_BUILTINS, 27// GLSL4_2_BUILTINS, GLSL4_3_BUILTINS, GLSL4_4_BUILTINS, GLSL4_5_BUILTINS, and 28// GLSL4_6_BUILTINS. 29// "opSuffix" 30// (optional) string, suffix to add to EOp code. The op is derived from the function name, 31// and this suffix is applied to disambiguate between functions of the same name but in 32// different groups. 33// "suffix" 34// string, suffix that is used to disambiguate C++ variable names created based on the 35// function name from C++ keywords, or disambiguate two functions with the same name. 36// "essl_extension" 37// string, ESSL extension where the function is defined. 38// "essl_extension_becomes_core_in" 39// string, ESSL level where functions from this extension have become core. 40// "glsl_extension" 41// string, GLSL extension where the function is defined. 42// "hasSideEffects" 43// boolean, can be used to mark a function as having side effects. Functions with an out or 44// inout parameter are automatically treated as having side effects. 45// 46// Function declarations: 47// Lines that declare functions are in a similar format as in the GLSL spec: 48// <return type> <function name>(<param type>, ...); 49// Parameter types can have "out" or "inout" qualifiers. 50 51GROUP BEGIN Math {"queryFunction": true} 52 GROUP BEGIN Trigonometric 53 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 54 genType radians(genType); 55 genType degrees(genType); 56 genType sin(genType); 57 genType cos(genType); 58 genType tan(genType); 59 genType asin(genType); 60 genType acos(genType); 61 genType atan(genType, genType); 62 genType atan(genType); 63 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 64 genType sinh(genType); 65 genType cosh(genType); 66 genType tanh(genType); 67 genType asinh(genType); 68 genType acosh(genType); 69 genType atanh(genType); 70 GROUP END Trigonometric 71 72 GROUP BEGIN Exponential 73 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 74 genType pow(genType, genType); 75 genType exp(genType); 76 genType log(genType); 77 genType exp2(genType); 78 genType log2(genType); 79 genType sqrt(genType); 80 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 81 genDType sqrt(genDType); 82 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 83 genType inversesqrt(genType); 84 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 85 genDType inversesqrt(genDType); 86 GROUP END Exponential 87 88 GROUP BEGIN Common 89 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 90 genType abs(genType); 91 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 92 genIType abs(genIType); 93 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 94 genDType abs(genDType); 95 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 96 genType sign(genType); 97 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 98 genIType sign(genIType); 99 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 100 genDType sign(genDType); 101 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 102 genType floor(genType); 103 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 104 genDType floor(genDType); 105 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 106 genType trunc(genType); 107 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 108 genDType trunc(genDType); 109 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 110 genType round(genType); 111 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 112 genDType round(genDType); 113 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 114 genType roundEven(genType); 115 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 116 genDType roundEven(genDType); 117 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 118 genType ceil(genType); 119 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 120 genDType ceil(genDType); 121 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 122 genType fract(genType); 123 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 124 genDType fract(genDType); 125 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 126 genType mod(genType, float); 127 genType mod(genType, genType); 128 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 129 genDType mod(genDType, double); 130 genDType mod(genDType, genDType); 131 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 132 genType min(genType, float); 133 genType min(genType, genType); 134 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 135 genDType min(genDType, genDType); 136 genDType min(genDType, double); 137 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 138 genIType min(genIType, genIType); 139 genIType min(genIType, int); 140 genUType min(genUType, genUType); 141 genUType min(genUType, uint); 142 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 143 genType max(genType, float); 144 genType max(genType, genType); 145 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 146 genDType max(genDType, genDType); 147 genDType max(genDType, double); 148 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 149 genIType max(genIType, genIType); 150 genIType max(genIType, int); 151 genUType max(genUType, genUType); 152 genUType max(genUType, uint); 153 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 154 genType clamp(genType, float, float); 155 genType clamp(genType, genType, genType); 156 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 157 genDType clamp(genDType, double, double); 158 genDType clamp(genDType, genDType, genDType); 159 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 160 genIType clamp(genIType, int, int); 161 genIType clamp(genIType, genIType, genIType); 162 genUType clamp(genUType, uint, uint); 163 genUType clamp(genUType, genUType, genUType); 164 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 165 genType mix(genType, genType, float); 166 genType mix(genType, genType, genType); 167 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 168 genDType mix(genDType, genDType, double); 169 genDType mix(genDType, genDType, genDType); 170 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 171 genType mix(genType, genType, genBType); 172 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 173 genDType mix(genDType, genDType, genBType); 174 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_5_BUILTINS"} 175 genIType mix(genIType, genIType, genBType); 176 genUType mix(genUType, genUType, genBType); 177 genBType mix(genBType, genBType, genBType); 178 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 179 genType step(genType, genType); 180 genType step(float, genType); 181 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 182 genDType step(genDType, genDType); 183 genDType step(double, genDType); 184 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 185 genDType smoothstep(genDType, genDType, genDType); 186 genDType smoothstep(double, double, genDType); 187 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 188 genType smoothstep(genType, genType, genType); 189 genType smoothstep(float, float, genType); 190 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 191 genType modf(genType, out genType); 192 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 193 genDType modf(genDType, out genDType); 194 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 195 genBType isnan(genType); 196 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 197 genBType isnan(genDType); 198 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 199 genBType isinf(genType); 200 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 201 genBType isinf(genDType); 202 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL3_3_BUILTINS"} 203 genIType floatBitsToInt(genType); 204 genUType floatBitsToUint(genType); 205 genType intBitsToFloat(genIType); 206 genType uintBitsToFloat(genUType); 207 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 208 genType fma(genType, genType, genType); 209 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "EXT_gpu_shader5, OES_gpu_shader5", "suffix": "Ext"} 210 genType fma(genType, genType, genType); 211 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 212 genType fma(genDType, genDType, genDType); 213 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 214 genType frexp(genType, out genIType); 215 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 216 genDType frexp(genDType, out genIType); 217 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 218 genType ldexp(genType, genIType); 219 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 220 genDType ldexp(genDType, genIType); 221 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL4_2_BUILTINS"} 222 uint packSnorm2x16(vec2); 223 uint packHalf2x16(vec2); 224 vec2 unpackSnorm2x16(uint); 225 vec2 unpackHalf2x16(uint); 226 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 227 uint packUnorm2x16(vec2); 228 vec2 unpackUnorm2x16(uint); 229 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 230 uint packUnorm4x8(vec4); 231 uint packSnorm4x8(vec4); 232 vec4 unpackUnorm4x8(uint); 233 vec4 unpackSnorm4x8(uint); 234 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 235 double packDouble2x32(uvec2); 236 uvec2 unpackDouble2x32(double); 237 GROUP END Common 238 239 GROUP BEGIN Geometric 240 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 241 float length(genType); 242 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 243 double length(genDType); 244 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 245 float distance(genType, genType); 246 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 247 double distance(genDType, genDType); 248 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 249 float dot(genType, genType); 250 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 251 double dot(genDType, genDType); 252 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 253 vec3 cross(vec3, vec3); 254 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 255 dvec3 cross(dvec3, dvec3); 256 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 257 genType normalize(genType); 258 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 259 genDType normalize(genDType); 260 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 261 genType faceforward(genType, genType, genType); 262 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 263 genDType faceforward(genDType, genDType, genDType); 264 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 265 genType reflect(genType, genType); 266 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 267 genDType reflect(genDType, genDType); 268 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 269 genType refract(genType, genType, float); 270 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 271 genDType refract(genDType, genDType, float); 272 GROUP END Geometric 273 274 GROUP BEGIN GeometricVS {"shader_type": "VERTEX"} 275 DEFAULT METADATA {"glsl_level": "COMMON_BUILTINS"} 276 vec4 ftransform(); 277 GROUP END GeometricVS 278 279 GROUP BEGIN Matrix 280 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 281 mat2 matrixCompMult(mat2, mat2); 282 mat3 matrixCompMult(mat3, mat3); 283 mat4 matrixCompMult(mat4, mat4); 284 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS"} 285 mat2x3 matrixCompMult(mat2x3, mat2x3); 286 mat3x2 matrixCompMult(mat3x2, mat3x2); 287 mat2x4 matrixCompMult(mat2x4, mat2x4); 288 mat4x2 matrixCompMult(mat4x2, mat4x2); 289 mat3x4 matrixCompMult(mat3x4, mat3x4); 290 mat4x3 matrixCompMult(mat4x3, mat4x3); 291 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_2_BUILTINS"} 292 mat2 outerProduct(vec2, vec2); 293 mat3 outerProduct(vec3, vec3); 294 mat4 outerProduct(vec4, vec4); 295 mat2x3 outerProduct(vec3, vec2); 296 mat3x2 outerProduct(vec2, vec3); 297 mat2x4 outerProduct(vec4, vec2); 298 mat4x2 outerProduct(vec2, vec4); 299 mat3x4 outerProduct(vec4, vec3); 300 mat4x3 outerProduct(vec3, vec4); 301 mat2 transpose(mat2); 302 mat3 transpose(mat3); 303 mat4 transpose(mat4); 304 mat2x3 transpose(mat3x2); 305 mat3x2 transpose(mat2x3); 306 mat2x4 transpose(mat4x2); 307 mat4x2 transpose(mat2x4); 308 mat3x4 transpose(mat4x3); 309 mat4x3 transpose(mat3x4); 310 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS"} 311 float determinant(mat2); 312 float determinant(mat3); 313 float determinant(mat4); 314 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_4_BUILTINS"} 315 mat2 inverse(mat2); 316 mat3 inverse(mat3); 317 mat4 inverse(mat4); 318 GROUP END Matrix 319 320 GROUP BEGIN Vector 321 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 322 bvec lessThan(vec, vec); 323 bvec lessThan(ivec, ivec); 324 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "opSuffix": "ComponentWise"} 325 bvec lessThan(uvec, uvec); 326 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 327 bvec lessThanEqual(vec, vec); 328 bvec lessThanEqual(ivec, ivec); 329 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "opSuffix": "ComponentWise"} 330 bvec lessThanEqual(uvec, uvec); 331 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 332 bvec greaterThan(vec, vec); 333 bvec greaterThan(ivec, ivec); 334 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "opSuffix": "ComponentWise"} 335 bvec greaterThan(uvec, uvec); 336 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 337 bvec greaterThanEqual(vec, vec); 338 bvec greaterThanEqual(ivec, ivec); 339 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "opSuffix": "ComponentWise"} 340 bvec greaterThanEqual(uvec, uvec); 341 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 342 bvec equal(vec, vec); 343 bvec equal(ivec, ivec); 344 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "opSuffix": "ComponentWise"} 345 bvec equal(uvec, uvec); 346 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 347 bvec equal(bvec, bvec); 348 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 349 bvec notEqual(vec, vec); 350 bvec notEqual(ivec, ivec); 351 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "opSuffix": "ComponentWise"} 352 bvec notEqual(uvec, uvec); 353 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise"} 354 bvec notEqual(bvec, bvec); 355 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 356 bool any(bvec); 357 bool all(bvec); 358 DEFAULT METADATA {"essl_level": "COMMON_BUILTINS", "glsl_level": "COMMON_BUILTINS", "opSuffix": "ComponentWise", "suffix": "Func"} 359 bvec not(bvec); 360 GROUP END Vector 361 362 GROUP BEGIN Integer 363 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 364 genIType bitfieldExtract(genIType, int, int); 365 genUType bitfieldExtract(genUType, int, int); 366 genIType bitfieldInsert(genIType, genIType, int, int); 367 genUType bitfieldInsert(genUType, genUType, int, int); 368 genIType bitfieldReverse(genIType); 369 genUType bitfieldReverse(genUType); 370 genIType bitCount(genIType); 371 genIType bitCount(genUType); 372 genIType findLSB(genIType); 373 genIType findLSB(genUType); 374 genIType findMSB(genIType); 375 genIType findMSB(genUType); 376 genUType uaddCarry(genUType, genUType, out genUType); 377 genUType usubBorrow(genUType, genUType, out genUType); 378 void umulExtended(genUType, genUType, out genUType, out genUType); 379 void imulExtended(genIType, genIType, out genIType, out genIType); 380 GROUP END Integer 381GROUP END Math 382 383GROUP BEGIN Texture {"queryFunction": true} 384 GROUP BEGIN FirstVersions 385 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 386 vec4 texture2D(sampler2D, vec2); 387 vec4 texture2DProj(sampler2D, vec3); 388 vec4 texture2DProj(sampler2D, vec4); 389 vec4 textureCube(samplerCube, vec3); 390 DEFAULT METADATA {"glsl_level": "COMMON_BUILTINS"} 391 vec4 texture1D(sampler1D, float); 392 vec4 texture1DProj(sampler1D, vec2); 393 vec4 texture1DProj(sampler1D, vec4); 394 vec4 texture3D(sampler3D, vec3); 395 vec4 texture3DProj(sampler3D, vec4); 396 vec4 shadow1D(sampler1DShadow, vec3); 397 vec4 shadow1DProj(sampler1DShadow, vec4); 398 vec4 shadow2D(sampler2DShadow, vec3); 399 vec4 shadow2DProj(sampler2DShadow, vec4); 400 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "OES_texture_3D"} 401 vec4 texture3D(sampler3D, vec3); 402 vec4 texture3DProj(sampler3D, vec4); 403 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "EXT_shadow_samplers"} 404 float shadow2DEXT(sampler2DShadow, vec3); 405 float shadow2DProjEXT(sampler2DShadow, vec4); 406 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "OES_EGL_image_external, NV_EGL_stream_consumer_external"} 407 vec4 texture2D(samplerExternalOES, vec2); 408 vec4 texture2DProj(samplerExternalOES, vec3); 409 vec4 texture2DProj(samplerExternalOES, vec4); 410 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "ARB_texture_rectangle"} 411 vec4 texture2DRect(sampler2DRect, vec2); 412 vec4 texture2DRectProj(sampler2DRect, vec3); 413 vec4 texture2DRectProj(sampler2DRect, vec4); 414 // The *Grad* variants are new to both vertex and fragment shaders; the fragment 415 // shader specific pieces are added separately below. 416 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "EXT_shader_texture_lod"} 417 vec4 texture2DGradEXT(sampler2D, vec2, vec2, vec2); 418 vec4 texture2DProjGradEXT(sampler2D, vec3, vec2, vec2); 419 vec4 texture2DProjGradEXT(sampler2D, vec4, vec2, vec2); 420 vec4 textureCubeGradEXT(samplerCube, vec3, vec3, vec3); 421 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "glsl_level": "COMMON_BUILTINS", "extension": "WEBGL_video_texture"} 422 vec4 textureVideoWEBGL(samplerVideoWEBGL, vec2); 423 424 // Variants with bias are limited to fragment shaders 425 GROUP BEGIN Bias {"shader_type": "FRAGMENT", "opSuffix": "Bias"} 426 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 427 vec4 texture2D(sampler2D, vec2, float); 428 vec4 texture2DProj(sampler2D, vec3, float); 429 vec4 texture2DProj(sampler2D, vec4, float); 430 vec4 textureCube(samplerCube, vec3, float); 431 DEFAULT METADATA {"glsl_level": "COMMON_BUILTINS"} 432 vec4 texture3D(sampler3D, vec3, float); 433 vec4 texture3DProj(sampler3D, vec4, float); 434 vec4 texture1D(sampler1D, float, float); 435 vec4 texture1DProj(sampler1D, vec2, float); 436 vec4 texture1DProj(sampler1D, vec4, float); 437 vec4 shadow1D(sampler1DShadow, vec3, float); 438 vec4 shadow1DProj(sampler1DShadow, vec4, float); 439 vec4 shadow2D(sampler2DShadow, vec3, float); 440 vec4 shadow2DProj(sampler2DShadow, vec4, float); 441 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "OES_texture_3D"} 442 vec4 texture3D(sampler3D, vec3, float); 443 vec4 texture3DProj(sampler3D, vec4, float); 444 GROUP END Bias 445 446 // Variants with lod are accessible to all shader stages in desktop GL 447 GROUP BEGIN Lod 448 DEFAULT METADATA {"glsl_level": "COMMON_BUILTINS"} 449 vec4 texture2DLod(sampler2D, vec2, float); 450 vec4 texture2DProjLod(sampler2D, vec3, float); 451 vec4 texture2DProjLod(sampler2D, vec4, float); 452 vec4 textureCubeLod(samplerCube, vec3, float); 453 vec4 texture1DLod(sampler1D, float, float); 454 vec4 texture1DProjLod(sampler1D, vec2, float); 455 vec4 texture1DProjLod(sampler1D, vec4, float); 456 vec4 shadow1DLod(sampler1DShadow, vec3, float); 457 vec4 shadow1DProjLod(sampler1DShadow, vec4, float); 458 vec4 shadow2DLod(sampler2DShadow, vec3, float); 459 vec4 shadow2DProjLod(sampler2DShadow, vec4, float); 460 vec4 texture3DLod(sampler3D, vec3, float); 461 vec4 texture3DProjLod(sampler3D, vec4, float); 462 // The GLES spec mentioning that lod variants are limited to vertex shaders, and the 463 // OES_texture_3D spec doesn't mention otherwise. However, these functions are used in tests 464 // and seem to be expected to be available in fragment shaders too. 465 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "OES_texture_3D"} 466 vec4 texture3DLod(sampler3D, vec3, float); 467 vec4 texture3DProjLod(sampler3D, vec4, float); 468 GROUP END Lod 469 470 // Variants with lod are limited to vertex shaders in GLES 471 GROUP BEGIN LodVS {"shader_type": "VERTEX", "opSuffix": "VS"} 472 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS"} 473 vec4 texture2DLod(sampler2D, vec2, float); 474 vec4 texture2DProjLod(sampler2D, vec3, float); 475 vec4 texture2DProjLod(sampler2D, vec4, float); 476 vec4 textureCubeLod(samplerCube, vec3, float); 477 GROUP END LodVS 478 479 // EXT_shader_texture_lod brings some lod variants to fragment shaders 480 GROUP BEGIN LodFS {"shader_type": "FRAGMENT", "opSuffix": "FS"} 481 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "EXT_shader_texture_lod"} 482 vec4 texture2DLodEXT(sampler2D, vec2, float); 483 vec4 texture2DProjLodEXT(sampler2D, vec3, float); 484 vec4 texture2DProjLodEXT(sampler2D, vec4, float); 485 vec4 textureCubeLodEXT(samplerCube, vec3, float); 486 GROUP END LodFS 487 488 GROUP END FirstVersions 489 490 GROUP BEGIN NoBias 491 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 492 gvec4 texture(gsampler2D, vec2); 493 gvec4 texture(gsampler3D, vec3); 494 gvec4 texture(gsamplerCube, vec3); 495 gvec4 texture(gsampler2DArray, vec3); 496 float texture(sampler2DShadow, vec3); 497 float texture(samplerCubeShadow, vec4); 498 float texture(sampler2DArrayShadow, vec4); 499 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 500 gvec4 texture(gsampler1D, float); 501 float texture(sampler1DShadow, vec3); 502 gvec4 texture(gsampler1DArray, vec3); 503 float texture(sampler1DArrayShadow, vec3); 504 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 505 gvec4 texture(gsampler2DRect, vec2); 506 float texture(sampler2DRectShadow, vec3); 507 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 508 gvec4 texture(gsamplerCubeArray, vec4); 509 float texture(samplerCubeArrayShadow, vec4, float); 510 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 511 gvec4 texture(gsamplerCubeArray, vec4); 512 float texture(samplerCubeArrayShadow, vec4, float); 513 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "OES_EGL_image_external_essl3"} 514 vec4 texture(samplerExternalOES, vec2); 515 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "EXT_YUV_target"} 516 vec4 texture(samplerExternal2DY2YEXT, vec2); 517 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "ARB_texture_rectangle"} 518 // We don't have a rectangle texture essl_extension for OpenGL ES however based on the behavior of 519 // rectangle texture in desktop OpenGL, they should be sampled with a "texture" overload in 520 // GLSL version that have such an overload. This is the case for ESSL3 and above. 521 vec4 texture(sampler2DRect, vec2); 522 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS", "extension": "WEBGL_video_texture"} 523 vec4 texture(samplerVideoWEBGL, vec2); 524 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 525 gvec4 textureProj(gsampler2D, vec3); 526 gvec4 textureProj(gsampler2D, vec4); 527 gvec4 textureProj(gsampler3D, vec4); 528 float textureProj(sampler2DShadow, vec4); 529 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 530 gvec4 textureProj(gsampler1D, vec2); 531 gvec4 textureProj(gsampler1D, vec4); 532 float textureProj(sampler1DShadow, vec4); 533 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 534 gvec4 textureProj(gsampler2DRect, vec3); 535 gvec4 textureProj(gsampler2DRect, vec4); 536 float textureProj(sampler2DRectShadow, vec4); 537 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "OES_EGL_image_external_essl3"} 538 vec4 textureProj(samplerExternalOES, vec3); 539 vec4 textureProj(samplerExternalOES, vec4); 540 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "EXT_YUV_target"} 541 vec4 textureProj(samplerExternal2DY2YEXT, vec3); 542 vec4 textureProj(samplerExternal2DY2YEXT, vec4); 543 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "ARB_texture_rectangle"} 544 vec4 textureProj(sampler2DRect, vec3); 545 vec4 textureProj(sampler2DRect, vec4); 546 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 547 gvec4 textureLod(gsampler2D, vec2, float); 548 gvec4 textureLod(gsampler3D, vec3, float); 549 gvec4 textureLod(gsamplerCube, vec3, float); 550 gvec4 textureLod(gsampler2DArray, vec3, float); 551 float textureLod(sampler2DShadow, vec3, float); 552 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 553 gvec4 textureLod(gsampler1D, float, float); 554 float textureLod(sampler1DShadow, vec3, float); 555 gvec4 textureLod(gsampler1DArray, vec2, float); 556 float textureLod(sampler1DArrayShadow, vec3, float); 557 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 558 gvec4 textureLod(gsamplerCubeArray, vec4, float); 559 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 560 gvec4 textureLod(gsamplerCubeArray, vec4, float); 561 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 562 ivec2 textureSize(gsampler2D, int); 563 ivec3 textureSize(gsampler3D, int); 564 ivec2 textureSize(gsamplerCube, int); 565 ivec3 textureSize(gsampler2DArray, int); 566 ivec2 textureSize(sampler2DShadow, int); 567 ivec2 textureSize(samplerCubeShadow, int); 568 ivec3 textureSize(sampler2DArrayShadow, int); 569 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 570 int textureSize(gsampler1D, int); 571 int textureSize(sampler1DShadow, int); 572 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 573 ivec3 textureSize(gsamplerCubeArray, int); 574 ivec3 textureSize(samplerCubeArrayShadow, int); 575 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 576 ivec3 textureSize(gsamplerCubeArray, int); 577 ivec3 textureSize(samplerCubeArrayShadow, int); 578 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 579 ivec2 textureSize(gsampler2DRect); 580 ivec2 textureSize(sampler2DRectShadow); 581 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 582 ivec2 textureSize(gsampler1DArray, int); 583 ivec2 textureSize(sampler1DArrayShadow, int); 584 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL1_4_BUILTINS"} 585 int textureSize(gsamplerBuffer); 586 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_buffer, EXT_texture_buffer", "suffix": "Ext"} 587 int textureSize(gsamplerBuffer); 588 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL1_5_BUILTINS"} 589 ivec2 textureSize(gsampler2DMS); 590 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "ANGLE_texture_multisample", "suffix": "Ext"} 591 ivec2 textureSize(gsampler2DMS); 592 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL1_5_BUILTINS"} 593 ivec3 textureSize(gsampler2DMSArray); 594 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_storage_multisample_2d_array", "suffix": "Ext"} 595 ivec3 textureSize(gsampler2DMSArray); 596 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "OES_EGL_image_external_essl3"} 597 ivec2 textureSize(samplerExternalOES, int); 598 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "EXT_YUV_target"} 599 ivec2 textureSize(samplerExternal2DY2YEXT, int); 600 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 601 gvec4 textureProjLod(gsampler2D, vec3, float); 602 gvec4 textureProjLod(gsampler2D, vec4, float); 603 gvec4 textureProjLod(gsampler3D, vec4, float); 604 float textureProjLod(sampler2DShadow, vec4, float); 605 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 606 gvec4 textureProjLod(gsampler1D, vec2, float); 607 gvec4 textureProjLod(gsampler1D, vec4, float); 608 float textureProjLod(sampler1DShadow, vec4, float); 609 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 610 gvec4 texelFetch(gsampler2D, ivec2, int); 611 gvec4 texelFetch(gsampler3D, ivec3, int); 612 gvec4 texelFetch(gsampler2DArray, ivec3, int); 613 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 614 gvec4 texelFetch(gsampler1D, int, int); 615 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 616 gvec4 texelFetch(gsampler2DRect, ivec2); 617 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 618 gvec4 texelFetch(gsampler1DArray, ivec2, int); 619 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL1_4_BUILTINS"} 620 gvec4 texelFetch(gsamplerBuffer, int); 621 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_buffer, EXT_texture_buffer", "suffix": "Ext"} 622 gvec4 texelFetch(gsamplerBuffer, int); 623 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL1_5_BUILTINS"} 624 gvec4 texelFetch(gsampler2DMS, ivec2, int); 625 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "ANGLE_texture_multisample", "suffix": "Ext"} 626 gvec4 texelFetch(gsampler2DMS, ivec2, int); 627 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL1_5_BUILTINS"} 628 gvec4 texelFetch(gsampler2DMSArray, ivec3, int); 629 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_storage_multisample_2d_array", "suffix": "Ext"} 630 gvec4 texelFetch(gsampler2DMSArray, ivec3, int); 631 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "OES_EGL_image_external_essl3"} 632 vec4 texelFetch(samplerExternalOES, ivec2, int); 633 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "EXT_YUV_target"} 634 vec4 texelFetch(samplerExternal2DY2YEXT, ivec2, int); 635 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 636 gvec4 textureGrad(gsampler2D, vec2, vec2, vec2); 637 gvec4 textureGrad(gsampler3D, vec3, vec3, vec3); 638 gvec4 textureGrad(gsamplerCube, vec3, vec3, vec3); 639 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 640 gvec4 textureGrad(gsampler2D, float, float, float); 641 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 642 gvec4 textureGrad(gsampler2DRect, vec2, vec2, vec2); 643 gvec4 textureGrad(sampler2DRectShadow, vec3, vec2, vec2); 644 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 645 float textureGrad(sampler2DShadow, vec3, vec2, vec2); 646 float textureGrad(samplerCubeShadow, vec4, vec3, vec3); 647 gvec4 textureGrad(gsampler2DArray, vec3, vec2, vec2); 648 float textureGrad(sampler2DArrayShadow, vec4, vec2, vec2); 649 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 650 float textureGrad(sampler1DShadow, vec3, float, float); 651 gvec4 textureGrad(gsampler1DArray, vec2, float, float); 652 float textureGrad(sampler1DArrayShadow, vec3, float, float); 653 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 654 gvec4 textureGrad(gsamplerCubeArray, vec4, vec3, vec3); 655 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 656 gvec4 textureGrad(gsamplerCubeArray, vec4, vec3, vec3); 657 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 658 gvec4 textureProjGrad(gsampler2D, vec3, vec2, vec2); 659 gvec4 textureProjGrad(gsampler2D, vec4, vec2, vec2); 660 gvec4 textureProjGrad(gsampler3D, vec4, vec3, vec3); 661 float textureProjGrad(sampler2DShadow, vec4, vec2, vec2); 662 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 663 gvec4 textureProjGrad(gsampler1D, vec2, float, float); 664 gvec4 textureProjGrad(gsampler1D, vec4, float, float); 665 float textureProjGrad(sampler1DShadow, vec4, float, float); 666 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 667 gvec4 textureProjGrad(gsampler2DRect, vec3, vec2, vec2); 668 gvec4 textureProjGrad(gsampler2DRect, vec4, vec2, vec2); 669 float textureProjGrad(sampler2DRectShadow, vec4, vec2, vec2); 670 DEFAULT METADATA {"glsl_level": "GLSL4_3_BUILTINS"} 671 int textureQueryLevels(gsampler1D); 672 int textureQueryLevels(gsampler2D); 673 int textureQueryLevels(gsampler3D); 674 int textureQueryLevels(gsamplerCube); 675 int textureQueryLevels(gsampler1DArray); 676 int textureQueryLevels(gsampler2DArray); 677 int textureQueryLevels(gsamplerCubeArray); 678 int textureQueryLevels(sampler1DShadow); 679 int textureQueryLevels(sampler2DShadow); 680 int textureQueryLevels(samplerCubeShadow); 681 int textureQueryLevels(sampler1DArrayShadow); 682 int textureQueryLevels(sampler2DArrayShadow); 683 int textureQueryLevels(samplerCubeArrayShadow); 684 DEFAULT METADATA {"glsl_level": "GLSL4_5_BUILTINS"} 685 int textureSamples(gsampler2DMS); 686 int textureSamples(gsampler2DMSArray); 687 GROUP END NoBias 688 689 GROUP BEGIN Bias {"shader_type": "FRAGMENT", "opSuffix": "Bias"} 690 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 691 gvec4 texture(gsampler2D, vec2, float); 692 gvec4 texture(gsampler3D, vec3, float); 693 gvec4 texture(gsamplerCube, vec3, float); 694 gvec4 texture(gsampler2DArray, vec3, float); 695 gvec4 textureProj(gsampler2D, vec3, float); 696 gvec4 textureProj(gsampler2D, vec4, float); 697 gvec4 textureProj(gsampler3D, vec4, float); 698 float texture(sampler2DShadow, vec3, float); 699 float texture(samplerCubeShadow, vec4, float); 700 float textureProj(sampler2DShadow, vec4, float); 701 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 702 gvec4 texture(gsampler1D, float, float); 703 float texture(sampler1DShadow, vec3, float); 704 gvec4 texture(gsampler1DArray, vec3, float); 705 float texture(sampler1DArrayShadow, vec3, float); 706 float texture(sampler2DArrayShadow, vec4, float); 707 gvec4 textureProj(gsampler1D, vec2, float); 708 gvec4 textureProj(gsampler1D, vec4, float); 709 float textureProj(sampler1DShadow, vec4, float); 710 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 711 gvec4 texture(gsamplerCubeArray, vec4, float); 712 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 713 gvec4 texture(gsamplerCubeArray, vec4, float); 714 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "OES_EGL_image_external_essl3"} 715 vec4 texture(samplerExternalOES, vec2, float); 716 vec4 textureProj(samplerExternalOES, vec3, float); 717 vec4 textureProj(samplerExternalOES, vec4, float); 718 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "EXT_YUV_target"} 719 vec4 texture(samplerExternal2DY2YEXT, vec2, float); 720 vec4 textureProj(samplerExternal2DY2YEXT, vec3, float); 721 vec4 textureProj(samplerExternal2DY2YEXT, vec4, float); 722 GROUP END Bias 723 724 GROUP BEGIN QueryLod {"shader_type": "FRAGMENT"} 725 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 726 vec2 textureQueryLod(gsampler1D, float); 727 vec2 textureQueryLod(gsampler2D, vec2); 728 vec2 textureQueryLod(gsampler3D, vec3); 729 vec2 textureQueryLod(gsamplerCube, vec3); 730 vec2 textureQueryLod(gsampler1DArray, float); 731 vec2 textureQueryLod(gsampler2DArray, vec2); 732 vec2 textureQueryLod(gsamplerCubeArray, vec3); 733 vec2 textureQueryLod(sampler1DShadow, float); 734 vec2 textureQueryLod(sampler2DShadow, vec2); 735 vec2 textureQueryLod(samplerCubeShadow, vec3); 736 vec2 textureQueryLod(sampler1DArrayShadow, float); 737 vec2 textureQueryLod(sampler2DArrayShadow, vec2); 738 vec2 textureQueryLod(samplerCubeArrayShadow, vec3); 739 GROUP END QueryLod 740 741 GROUP BEGIN OffsetNoBias {"queryFunction": true} 742 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 743 gvec4 textureOffset(gsampler2D, vec2, ivec2); 744 gvec4 textureOffset(gsampler3D, vec3, ivec3); 745 float textureOffset(sampler2DShadow, vec3, ivec2); 746 gvec4 textureOffset(gsampler2DArray, vec3, ivec2); 747 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 748 gvec4 textureOffset(gsampler1D, float, int); 749 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 750 gvec4 textureOffset(gsampler2DRect, vec2, ivec2); 751 float textureOffset(sampler2DRectShadow, vec3, ivec2); 752 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 753 float textureOffset(sampler1DShadow, vec3, int); 754 gvec4 textureOffset(gsampler1DArray, vec2, int); 755 float textureOffset(sampler1DArrayShadow, vec3, int); 756 DEFAULT METADATA {"glsl_level": "GLSL4_3_BUILTINS"} 757 float textureOffset(sampler2DArrayShadow, vec4, ivec2); 758 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 759 gvec4 textureProjOffset(gsampler2D, vec3, ivec2); 760 gvec4 textureProjOffset(gsampler2D, vec4, ivec2); 761 gvec4 textureProjOffset(gsampler3D, vec4, ivec3); 762 float textureProjOffset(sampler2DShadow, vec4, ivec2); 763 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 764 gvec4 textureProjOffset(gsampler1D, vec2, int); 765 gvec4 textureProjOffset(gsampler1D, vec4, int); 766 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 767 gvec4 textureProjOffset(gsampler2DRect, vec3, ivec2); 768 gvec4 textureProjOffset(gsampler2DRect, vec4, ivec2); 769 float textureProjOffset(sampler2DRectShadow, vec4, ivec2); 770 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 771 float textureProjOffset(sampler1DShadow, vec4, int); 772 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 773 gvec4 textureLodOffset(gsampler2D, vec2, float, ivec2); 774 gvec4 textureLodOffset(gsampler3D, vec3, float, ivec3); 775 float textureLodOffset(sampler2DShadow, vec3, float, ivec2); 776 gvec4 textureLodOffset(gsampler2DArray, vec3, float, ivec2); 777 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 778 gvec4 textureLodOffset(gsampler1D, float, float, int); 779 float textureLodOffset(sampler1DShadow, vec3, float, int); 780 gvec4 textureLodOffset(gsampler1DArray, vec2, float, int); 781 float textureLodOffset(sampler1DArrayShadow, vec3, float, int); 782 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 783 gvec4 textureProjLodOffset(gsampler2D, vec3, float, ivec2); 784 gvec4 textureProjLodOffset(gsampler2D, vec4, float, ivec2); 785 gvec4 textureProjLodOffset(gsampler3D, vec4, float, ivec3); 786 float textureProjLodOffset(sampler2DShadow, vec4, float, ivec2); 787 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 788 gvec4 textureProjLodOffset(gsampler1D, vec2, float, int); 789 gvec4 textureProjLodOffset(gsampler1D, vec4, float, int); 790 float textureProjLodOffset(sampler1DShadow, vec4, float, int); 791 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 792 gvec4 texelFetchOffset(gsampler2D, ivec2, int, ivec2); 793 gvec4 texelFetchOffset(gsampler3D, ivec3, int, ivec3); 794 gvec4 texelFetchOffset(gsampler2DArray, ivec3, int, ivec2); 795 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 796 gvec4 texelFetchOffset(gsampler1D, int, int, int); 797 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 798 gvec4 texelFetchOffset(gsampler2DRect, ivec2, ivec2); 799 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 800 gvec4 texelFetchOffset(gsampler1DArray, ivec2, int, int); 801 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 802 gvec4 textureGradOffset(gsampler2D, vec2, vec2, vec2, ivec2); 803 gvec4 textureGradOffset(gsampler3D, vec3, vec3, vec3, ivec3); 804 float textureGradOffset(sampler2DShadow, vec3, vec2, vec2, ivec2); 805 gvec4 textureGradOffset(gsampler2DArray, vec3, vec2, vec2, ivec2); 806 float textureGradOffset(sampler2DArrayShadow, vec4, vec2, vec2, ivec2); 807 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 808 gvec4 textureGradOffset(gsampler1D, float, float, float, int); 809 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 810 gvec4 textureGradOffset(gsampler2DRect, vec2, vec2, vec2, ivec2); 811 float textureGradOffset(sampler2DRectShadow, vec3, vec2, vec2, ivec2); 812 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 813 float textureGradOffset(sampler1DShadow, vec3, float, float, int); 814 gvec4 textureGradOffset(gsampler1DArray, vec2, float, float, int); 815 float textureGradOffset(sampler1DArrayShadow, vec3, float, float, int); 816 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 817 gvec4 textureProjGradOffset(gsampler2D, vec3, vec2, vec2, ivec2); 818 gvec4 textureProjGradOffset(gsampler2D, vec4, vec2, vec2, ivec2); 819 gvec4 textureProjGradOffset(gsampler3D, vec4, vec3, vec3, ivec3); 820 float textureProjGradOffset(sampler2DShadow, vec4, vec2, vec2, ivec2); 821 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 822 gvec4 textureProjGradOffset(gsampler1D, vec2, float, float, int); 823 gvec4 textureProjGradOffset(gsampler1D, vec4, float, float, int); 824 DEFAULT METADATA {"glsl_level": "GLSL1_4_BUILTINS"} 825 gvec4 textureProjGradOffset(gsampler2DRect, vec3, vec2, vec2, ivec2); 826 gvec4 textureProjGradOffset(gsampler2DRect, vec4, vec2, vec2, ivec2); 827 float textureProjGradOffset(sampler2DRectShadow, vec4, vec2, vec2, ivec2); 828 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 829 float textureProjGradOffset(sampler1DShadow, vec4, float, float, int); 830 GROUP END OffsetNoBias 831 832 GROUP BEGIN OffsetBias {"queryFunction": true, "shader_type": "FRAGMENT", "opSuffix": "Bias"} 833 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 834 gvec4 textureOffset(gsampler2D, vec2, ivec2, float); 835 gvec4 textureOffset(gsampler3D, vec3, ivec3, float); 836 float textureOffset(sampler2DShadow, vec3, ivec2, float); 837 gvec4 textureOffset(gsampler2DArray, vec3, ivec2, float); 838 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 839 gvec4 textureOffset(gsampler1D, float, int, float); 840 float textureOffset(sampler1DShadow, vec3, int, float); 841 gvec4 textureOffset(gsampler1DArray, vec2, int, float); 842 float textureOffset(sampler1DArrayShadow, vec3, int, float); 843 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "GLSL1_3_BUILTINS"} 844 gvec4 textureProjOffset(gsampler2D, vec3, ivec2, float); 845 gvec4 textureProjOffset(gsampler2D, vec4, ivec2, float); 846 gvec4 textureProjOffset(gsampler3D, vec4, ivec3, float); 847 float textureProjOffset(sampler2DShadow, vec4, ivec2, float); 848 DEFAULT METADATA {"glsl_level": "GLSL1_3_BUILTINS"} 849 gvec4 textureProjOffset(gsampler1D, vec2, int, float); 850 gvec4 textureProjOffset(gsampler1D, vec4, int, float); 851 float textureProjOffset(sampler1DShadow, vec4, int, float); 852 GROUP END OffsetBias 853 854 GROUP BEGIN Gather {"queryFunction": true} 855 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 856 gvec4 textureGather(gsampler2D, vec2); 857 gvec4 textureGather(gsampler2D, vec2, int); 858 gvec4 textureGather(gsampler2DArray, vec3); 859 gvec4 textureGather(gsampler2DArray, vec3, int); 860 gvec4 textureGather(gsamplerCube, vec3); 861 gvec4 textureGather(gsamplerCube, vec3, int); 862 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 863 gvec4 textureGather(gsamplerCubeArray, vec4); 864 gvec4 textureGather(gsamplerCubeArray, vec4, int); 865 vec4 textureGather(samplerCubeArrayShadow, vec4, float); 866 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 867 gvec4 textureGather(gsamplerCubeArray, vec4); 868 gvec4 textureGather(gsamplerCubeArray, vec4, int); 869 vec4 textureGather(samplerCubeArrayShadow, vec4, float); 870 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 871 gvec4 textureGather(gsampler2DRect, vec3); 872 gvec4 textureGather(gsampler2DRect, vec3, int); 873 vec4 textureGather(sampler2DRectShadow, vec2, float); 874 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS"} 875 vec4 textureGather(sampler2DShadow, vec2); 876 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 877 vec4 textureGather(sampler2DShadow, vec2, float); 878 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS"} 879 vec4 textureGather(sampler2DArrayShadow, vec3); 880 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 881 vec4 textureGather(sampler2DArrayShadow, vec3, float); 882 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS"} 883 vec4 textureGather(samplerCubeShadow, vec3); 884 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 885 vec4 textureGather(samplerCubeShadow, vec3, float); 886 887 GROUP BEGIN Offset {"queryFunction": true} 888 GROUP BEGIN NoComp {"queryFunction": true} 889 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 890 gvec4 textureGatherOffset(gsampler2D, vec2, ivec2); 891 gvec4 textureGatherOffset(gsampler2DArray, vec3, ivec2); 892 vec4 textureGatherOffset(sampler2DShadow, vec2, float, ivec2); 893 vec4 textureGatherOffset(sampler2DArrayShadow, vec3, float, ivec2); 894 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 895 gvec4 textureGatherOffset(gsampler2DRect, vec2, ivec2); 896 vec4 textureGatherOffset(sampler2DRectShadow, vec2, float, ivec2); 897 GROUP END NoComp 898 GROUP BEGIN Comp {"queryFunction": true, "opSuffix": "Comp"} 899 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 900 gvec4 textureGatherOffset(gsampler2D, vec2, ivec2, int); 901 gvec4 textureGatherOffset(gsampler2DArray, vec3, ivec2, int); 902 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 903 gvec4 textureGatherOffset(gsampler2DRect, vec2, ivec2, int); 904 GROUP END Comp 905 GROUP END Offset 906 GROUP BEGIN Offsets {"queryFunction": true} 907 GROUP BEGIN NoComp {"queryFunction": true} 908 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 909 gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4]); 910 gvec4 textureGatherOffsets(gsampler2DArray, vec3, ivec2[4]); 911 vec4 textureGatherOffsets(sampler2DShadow, vec2, float, ivec2[4]); 912 vec4 textureGatherOffsets(sampler2DArrayShadow, vec3, float, ivec2[4]); 913 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "EXT_gpu_shader5, OES_gpu_shader5", "suffix": "Ext"} 914 gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4]); 915 gvec4 textureGatherOffsets(gsampler2DArray, vec3, ivec2[4]); 916 vec4 textureGatherOffsets(sampler2DShadow, vec2, float, ivec2[4]); 917 vec4 textureGatherOffsets(sampler2DArrayShadow, vec3, float, ivec2[4]); 918 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 919 gvec4 textureGatherOffsets(gsampler2DRect, vec2, ivec2[4]); 920 vec4 textureGatherOffsets(sampler2DRectShadow, vec2, float, ivec2[4]); 921 GROUP END NoComp 922 GROUP BEGIN Comp {"queryFunction": true, "opSuffix": "Comp"} 923 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_BUILTINS"} 924 gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4], int); 925 gvec4 textureGatherOffsets(gsampler2DArray, vec3, ivec2[4], int); 926 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "EXT_gpu_shader5, OES_gpu_shader5", "suffix": "Ext"} 927 gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4], int); 928 gvec4 textureGatherOffsets(gsampler2DArray, vec3, ivec2[4], int); 929 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS"} 930 gvec4 textureGatherOffsets(gsampler2DRect, vec2, ivec2[4], int); 931 GROUP END Comp 932 GROUP END Offsets 933 GROUP END Gather 934GROUP END Texture 935 936GROUP BEGIN EXT_YUV_target 937 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "EXT_YUV_target"} 938 vec3 rgb_2_yuv(vec3, yuvCscStandardEXT); 939 vec3 yuv_2_rgb(vec3, yuvCscStandardEXT); 940GROUP END EXT_YUV_target 941 942GROUP BEGIN DerivativesFS {"queryFunction": true, "shader_type": "FRAGMENT"} 943 DEFAULT METADATA {"essl_level": "ESSL1_BUILTINS", "essl_extension": "OES_standard_derivatives", "suffix": "Ext"} 944 genType dFdx(genType); 945 genType dFdy(genType); 946 genType fwidth(genType); 947 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "glsl_level": "COMMON_BUILTINS"} 948 genType dFdx(genType); 949 genType dFdy(genType); 950 genType fwidth(genType); 951 DEFAULT METADATA {"glsl_level": "GLSL4_5_BUILTINS"} 952 genType dFdxFine(genType); 953 genType dFdyFine(genType); 954 genType dFdxCoarse(genType); 955 genType dFdyCoarse(genType); 956 genType fwidthFine(genType); 957 genType fwidthCoarse(genType); 958GROUP END DerivativesFS 959 960GROUP BEGIN InterpolationFS {"queryFunction": true, "shader_type": "FRAGMENT"} 961 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS","glsl_level": "GLSL4_BUILTINS"} 962 float interpolateAtCentroid(float); 963 vec2 interpolateAtCentroid(vec2); 964 vec3 interpolateAtCentroid(vec3); 965 vec4 interpolateAtCentroid(vec4); 966 float interpolateAtSample(float, int); 967 vec2 interpolateAtSample(vec2, int); 968 vec3 interpolateAtSample(vec3, int); 969 vec4 interpolateAtSample(vec4, int); 970 float interpolateAtOffset(float, vec2); 971 vec2 interpolateAtOffset(vec2, vec2); 972 vec3 interpolateAtOffset(vec3, vec2); 973 vec4 interpolateAtOffset(vec4, vec2); 974 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "OES_shader_multisample_interpolation", "suffix": "Ext"} 975 float interpolateAtCentroid(float); 976 vec2 interpolateAtCentroid(vec2); 977 vec3 interpolateAtCentroid(vec3); 978 vec4 interpolateAtCentroid(vec4); 979 float interpolateAtSample(float, int); 980 vec2 interpolateAtSample(vec2, int); 981 vec3 interpolateAtSample(vec3, int); 982 vec4 interpolateAtSample(vec4, int); 983 float interpolateAtOffset(float, vec2); 984 vec2 interpolateAtOffset(vec2, vec2); 985 vec3 interpolateAtOffset(vec3, vec2); 986 vec4 interpolateAtOffset(vec4, vec2); 987GROUP END InterpolationFS 988 989GROUP BEGIN AtomicCounter {"queryFunction": true} 990 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_2_BUILTINS", "hasSideEffects": true} 991 uint atomicCounter(atomic_uint); 992 uint atomicCounterIncrement(atomic_uint); 993 uint atomicCounterDecrement(atomic_uint); 994 DEFAULT METADATA {"glsl_level": "GLSL4_6_BUILTINS", "hasSideEffects": true} 995 uint atomicCounterAdd(atomic_uint, uint); 996 uint atomicCounterSubtract(atomic_uint, uint); 997 uint atomicCounterMin(atomic_uint, uint); 998 uint atomicCounterMax(atomic_uint, uint); 999 uint atomicCounterAnd(atomic_uint, uint); 1000 uint atomicCounterOr(atomic_uint, uint); 1001 uint atomicCounterXor(atomic_uint, uint); 1002 uint atomicCounterExchange(atomic_uint, uint); 1003 uint atomicCounterCompSwap(atomic_uint, uint, uint); 1004GROUP END AtomicCounter 1005 1006GROUP BEGIN AtomicMemory {"queryFunction": true} 1007 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_3_BUILTINS"} 1008 uint atomicAdd(inout uint, uint); 1009 int atomicAdd(inout int, int); 1010 uint atomicMin(inout uint, uint); 1011 int atomicMin(inout int, int); 1012 uint atomicMax(inout uint, uint); 1013 int atomicMax(inout int, int); 1014 uint atomicAnd(inout uint, uint); 1015 int atomicAnd(inout int, int); 1016 uint atomicOr(inout uint, uint); 1017 int atomicOr(inout int, int); 1018 uint atomicXor(inout uint, uint); 1019 int atomicXor(inout int, int); 1020 uint atomicExchange(inout uint, uint); 1021 int atomicExchange(inout int, int); 1022 uint atomicCompSwap(inout uint, uint, uint); 1023 int atomicCompSwap(inout int, int, int); 1024GROUP END AtomicMemory 1025 1026GROUP BEGIN Image {"queryFunction": true} 1027 GROUP BEGIN Store {"queryFunction": true} 1028 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "hasSideEffects": true} 1029 void imageStore(gimage2D, ivec2, gvec4); 1030 void imageStore(gimage3D, ivec3, gvec4); 1031 void imageStore(gimage2DArray, ivec3, gvec4); 1032 void imageStore(gimageCube, ivec3, gvec4); 1033 1034 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "hasSideEffects": true} 1035 void imageStore(gimageCubeArray, ivec3, gvec4); 1036 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "hasSideEffects": true, "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 1037 void imageStore(gimageCubeArray, ivec3, gvec4); 1038 1039 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "hasSideEffects": true} 1040 void imageStore(gimageBuffer, int, gvec4); 1041 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "hasSideEffects": true, "essl_extension": "OES_texture_buffer, EXT_texture_buffer", "suffix": "Ext"} 1042 void imageStore(gimageBuffer, int, gvec4); 1043 1044 DEFAULT METADATA {"glsl_level": "GLSL4_2_BUILTINS", "hasSideEffects": true} 1045 void imageStore(writeonly IMAGE_PARAMS, gvec4); 1046 GROUP END Store 1047 GROUP BEGIN Load {"queryFunction": true} 1048 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS"} 1049 gvec4 imageLoad(gimage2D, ivec2); 1050 gvec4 imageLoad(gimage3D, ivec3); 1051 gvec4 imageLoad(gimage2DArray, ivec3); 1052 gvec4 imageLoad(gimageCube, ivec3); 1053 1054 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS"} 1055 gvec4 imageLoad(gimageCubeArray, ivec3); 1056 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 1057 gvec4 imageLoad(gimageCubeArray, ivec3); 1058 1059 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS"} 1060 gvec4 imageLoad(gimageBuffer, int); 1061 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_buffer, EXT_texture_buffer", "suffix": "Ext"} 1062 gvec4 imageLoad(gimageBuffer, int); 1063 1064 DEFAULT METADATA {"glsl_level": "GLSL4_2_BUILTINS"} 1065 gvec4 imageLoad(readonly IMAGE_PARAMS); 1066 GROUP END Load 1067 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS"} 1068 ivec2 imageSize(gimage2D); 1069 ivec3 imageSize(gimage3D); 1070 ivec3 imageSize(gimage2DArray); 1071 ivec2 imageSize(gimageCube); 1072 1073 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS"} 1074 ivec3 imageSize(gimageCubeArray); 1075 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_cube_map_array, EXT_texture_cube_map_array", "suffix": "Ext"} 1076 ivec3 imageSize(gimageCubeArray); 1077 1078 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS"} 1079 int imageSize(gimageBuffer); 1080 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "OES_texture_buffer, EXT_texture_buffer", "suffix": "Ext"} 1081 int imageSize(gimageBuffer); 1082 1083 DEFAULT METADATA {"glsl_level": "GLSL4_3_BUILTINS"} 1084 int imageSize(readonly writeonly gimage1D); 1085 ivec2 imageSize(readonly writeonly gimage2D); 1086 ivec3 imageSize(readonly writeonly gimage3D); 1087 ivec2 imageSize(readonly writeonly gimageCube); 1088 ivec3 imageSize(readonly writeonly gimageCubeArray); 1089 ivec2 imageSize(readonly writeonly gimageRect); 1090 ivec2 imageSize(readonly writeonly gimage1DArray); 1091 ivec3 imageSize(readonly writeonly gimage2DArray); 1092 int imageSize(readonly writeonly gimageBuffer); 1093 ivec2 imageSize(readonly writeonly gimage2DMS); 1094 ivec3 imageSize(readonly writeonly gimage2DMSArray); 1095 DEFAULT METADATA {"glsl_level": "GLSL4_5_BUILTINS"} 1096 int imageSamples(readonly writeonly gimage2DMS); 1097 int imageSamples(readonly writeonly gimage2DMSArray); 1098 1099 GROUP BEGIN Atomic {"queryFunction": true} 1100 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_2_BUILTINS", "hasSideEffects": true} 1101 uint imageAtomicAdd(IMAGE_PARAMS, uint); 1102 int imageAtomicAdd(IMAGE_PARAMS, int); 1103 uint imageAtomicMin(IMAGE_PARAMS, uint); 1104 int imageAtomicMin(IMAGE_PARAMS, int); 1105 uint imageAtomicMax(IMAGE_PARAMS, uint); 1106 int imageAtomicMax(IMAGE_PARAMS, int); 1107 uint imageAtomicAnd(IMAGE_PARAMS, uint); 1108 int imageAtomicAnd(IMAGE_PARAMS, int); 1109 uint imageAtomicOr(IMAGE_PARAMS, uint); 1110 int imageAtomicOr(IMAGE_PARAMS, int); 1111 uint imageAtomicXor(IMAGE_PARAMS, uint); 1112 int imageAtomicXor(IMAGE_PARAMS, int); 1113 uint imageAtomicExchange(IMAGE_PARAMS, uint); 1114 int imageAtomicExchange(IMAGE_PARAMS, int); 1115 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_5_BUILTINS", "hasSideEffects": true} 1116 int imageAtomicExchange(IMAGE_PARAMS, float); 1117 DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_2_BUILTINS", "hasSideEffects": true} 1118 uint imageAtomicCompSwap(IMAGE_PARAMS, uint, uint); 1119 int imageAtomicCompSwap(IMAGE_PARAMS, int, int); 1120 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "hasSideEffects": true, "essl_extension": "OES_shader_image_atomic", "suffix": "Ext"} 1121 uint imageAtomicAdd(readonly writeonly IMAGE_PARAMS, uint); 1122 int imageAtomicAdd(readonly writeonly IMAGE_PARAMS, int); 1123 uint imageAtomicMin(readonly writeonly IMAGE_PARAMS, uint); 1124 int imageAtomicMin(readonly writeonly IMAGE_PARAMS, int); 1125 uint imageAtomicMax(readonly writeonly IMAGE_PARAMS, uint); 1126 int imageAtomicMax(readonly writeonly IMAGE_PARAMS, int); 1127 uint imageAtomicAnd(readonly writeonly IMAGE_PARAMS, uint); 1128 int imageAtomicAnd(readonly writeonly IMAGE_PARAMS, int); 1129 uint imageAtomicOr(readonly writeonly IMAGE_PARAMS, uint); 1130 int imageAtomicOr(readonly writeonly IMAGE_PARAMS, int); 1131 uint imageAtomicXor(readonly writeonly IMAGE_PARAMS, uint); 1132 int imageAtomicXor(readonly writeonly IMAGE_PARAMS, int); 1133 uint imageAtomicExchange(readonly writeonly IMAGE_PARAMS, uint); 1134 int imageAtomicExchange(readonly writeonly IMAGE_PARAMS, int); 1135 int imageAtomicExchange(readonly writeonly IMAGE_PARAMS, float); 1136 uint imageAtomicCompSwap(readonly writeonly IMAGE_PARAMS, uint, uint); 1137 int imageAtomicCompSwap(readonly writeonly IMAGE_PARAMS, int, int); 1138 GROUP END Atomic 1139GROUP END Image 1140 1141GROUP BEGIN PixelLocal {"queryFunction": true} 1142 GROUP BEGIN Load {"queryFunction": true} 1143 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "ANGLE_shader_pixel_local_storage", "hasSideEffects": false} 1144 gvec4 pixelLocalLoadANGLE(gpixelLocalANGLE); 1145 GROUP END Load 1146 GROUP BEGIN Store {"queryFunction": true} 1147 DEFAULT METADATA {"essl_level": "ESSL3_BUILTINS", "essl_extension": "ANGLE_shader_pixel_local_storage", "hasSideEffects": true} 1148 void pixelLocalStoreANGLE(gpixelLocalANGLE, gvec4); 1149 GROUP END Store 1150GROUP END PixelLocal 1151 1152// Desktop GLSL-only fragment synchronization functions. These are injected internally by the 1153// compiler to make pixel local storage coherent. 1154GROUP BEGIN FragmentSynchronization 1155 DEFAULT METADATA {"essl_level": "ESSL_INTERNAL_BACKEND_BUILTINS", "hasSideEffects": true} 1156 void beginInvocationInterlockNV(); 1157 void endInvocationInterlockNV(); 1158 void beginFragmentShaderOrderingINTEL(); 1159 void beginInvocationInterlockARB(); 1160 void endInvocationInterlockARB(); 1161GROUP END FragmentSynchronization 1162 1163GROUP BEGIN Noise 1164 DEFAULT METADATA {"glsl_level": "COMMON_BUILTINS"} 1165 float noise1(genType); 1166 vec2 noise2(genType); 1167 vec3 noise3(genType); 1168 vec4 noise4(genType); 1169GROUP END Noise 1170 1171GROUP BEGIN Barrier 1172 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_2_BUILTINS", "hasSideEffects": true} 1173 void memoryBarrier(); 1174 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_3_BUILTINS", "hasSideEffects": true} 1175 void memoryBarrierAtomicCounter(); 1176 void memoryBarrierBuffer(); 1177 void memoryBarrierImage(); 1178GROUP END Barrier 1179 1180GROUP BEGIN ESSL310CS {"shader_type": "COMPUTE"} 1181 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_BUILTINS", "hasSideEffects": true} 1182 void barrier(); 1183 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_3_BUILTINS", "hasSideEffects": true} 1184 void memoryBarrierShared(); 1185 void groupMemoryBarrier(); 1186GROUP END ESSL310CS 1187 1188GROUP BEGIN ESSL310TCS {"shader_type": "TESS_CONTROL_EXT"} 1189 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "EXT_tessellation_shader, OES_tessellation_shader", "essl_extension_becomes_core_in": "ESSL3_2_BUILTINS", "opSuffix": "TCS", "hasSideEffects": true, "suffix": "TCS"} 1190 void barrier(); 1191GROUP END ESSL310TCS 1192 1193GROUP BEGIN GS {"shader_type": "GEOMETRY"} 1194 DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "essl_extension": "EXT_geometry_shader, OES_geometry_shader", "essl_extension_becomes_core_in": "ESSL3_2_BUILTINS", "hasSideEffects": true} 1195 void EmitVertex(); 1196 void EndPrimitive(); 1197 DEFAULT METADATA {"glsl_level": "GLSL1_5_BUILTINS", "hasSideEffects": true} 1198 void EmitVertex(); 1199 void EndPrimitive(); 1200 DEFAULT METADATA {"glsl_level": "GLSL4_BUILTINS", "hasSideEffects": true} 1201 void EmitStreamVertex(int); 1202 void EndStreamPrimitive(int); 1203GROUP END GS 1204 1205GROUP BEGIN SubpassInput 1206 DEFAULT METADATA {"glsl_level": "GLSL4_6_BUILTINS", "essl_level": "ESSL_INTERNAL_BACKEND_BUILTINS"} 1207 gvec4 subpassLoad(gsubpassInput); 1208 gvec4 subpassLoad(gsubpassInputMS, int); 1209GROUP END SubpassInput 1210 1211GROUP BEGIN ShaderInvocationGroup 1212 DEFAULT METADATA {"glsl_level": "GLSL4_6_BUILTINS"} 1213 bool anyInvocation(bool); 1214 bool allInvocations(bool); 1215 bool allInvocationsEqual(bool); 1216GROUP END ShaderInvocationGroup 1217 1218// MSL fragment functions 1219GROUP BEGIN MetalFragmentSample {"shader_type": "FRAGMENT"} 1220 DEFAULT METADATA {"essl_level": "ESSL_INTERNAL_BACKEND_BUILTINS"} 1221 uint numSamples(); 1222 vec2 samplePosition(uint); 1223 genType interpolateAtCenter(genType); 1224GROUP END MetalFragmentSample 1225 1226// MSL common functions 1227GROUP BEGIN MetalCommon 1228 DEFAULT METADATA {"essl_level": "ESSL_INTERNAL_BACKEND_BUILTINS"} 1229 genType saturate(genType); 1230GROUP END MetalCommon 1231