summaryrefslogtreecommitdiff
path: root/src/glsl/builtins
diff options
context:
space:
mode:
Diffstat (limited to 'src/glsl/builtins')
-rw-r--r--src/glsl/builtins/110/clamp50
-rw-r--r--src/glsl/builtins/110/matrixCompMult32
-rw-r--r--src/glsl/builtins/110/max43
-rw-r--r--src/glsl/builtins/110/min43
-rw-r--r--src/glsl/builtins/110/noise_fake76
-rw-r--r--src/glsl/builtins/110/sign21
-rw-r--r--src/glsl/builtins/110/textures213
-rw-r--r--src/glsl/builtins/110_fs/derivatives73
-rw-r--r--src/glsl/builtins/110_fs/textures113
-rw-r--r--src/glsl/builtins/130/equal31
-rw-r--r--src/glsl/builtins/130/greaterThan31
-rw-r--r--src/glsl/builtins/130/greaterThanEqual31
-rw-r--r--src/glsl/builtins/130/lessThan31
-rw-r--r--src/glsl/builtins/130/lessThanEqual31
-rw-r--r--src/glsl/builtins/130/mix39
-rw-r--r--src/glsl/builtins/130/notEqual31
-rw-r--r--src/glsl/builtins/130/texelFetch107
-rw-r--r--src/glsl/builtins/130/texture110
-rw-r--r--src/glsl/builtins/130/textureGrad147
-rw-r--r--src/glsl/builtins/130/textureLod128
-rw-r--r--src/glsl/builtins/130/textureProj92
-rw-r--r--src/glsl/builtins/130/textureProjGrad122
-rw-r--r--src/glsl/builtins/130/textureProjLod107
-rw-r--r--src/glsl/builtins/130_fs/texture128
-rw-r--r--src/glsl/builtins/130_fs/textureProj107
-rw-r--r--src/glsl/builtins/ARB_texture_rectangle/textures16
-rw-r--r--src/glsl/builtins/EXT_texture_array/textures59
-rw-r--r--src/glsl/builtins/EXT_texture_array_fs/textures27
-rw-r--r--src/glsl/builtins/ir/abs (renamed from src/glsl/builtins/110/abs)0
-rw-r--r--src/glsl/builtins/ir/acos22
-rw-r--r--src/glsl/builtins/ir/all (renamed from src/glsl/builtins/110/all)0
-rw-r--r--src/glsl/builtins/ir/any (renamed from src/glsl/builtins/110/any)0
-rw-r--r--src/glsl/builtins/ir/asin (renamed from src/glsl/builtins/110/asin)25
-rw-r--r--src/glsl/builtins/ir/atan (renamed from src/glsl/builtins/110/atan)0
-rw-r--r--src/glsl/builtins/ir/ceil (renamed from src/glsl/builtins/110/ceil)0
-rw-r--r--src/glsl/builtins/ir/clamp (renamed from src/glsl/builtins/130/clamp)49
-rw-r--r--src/glsl/builtins/ir/cos (renamed from src/glsl/builtins/110/cos)0
-rw-r--r--src/glsl/builtins/ir/cosh (renamed from src/glsl/builtins/130/cosh)0
-rw-r--r--src/glsl/builtins/ir/cross (renamed from src/glsl/builtins/110/cross)0
-rw-r--r--src/glsl/builtins/ir/dFdx21
-rw-r--r--src/glsl/builtins/ir/dFdy21
-rw-r--r--src/glsl/builtins/ir/degrees (renamed from src/glsl/builtins/110/degrees)0
-rw-r--r--src/glsl/builtins/ir/distance (renamed from src/glsl/builtins/110/distance)0
-rw-r--r--src/glsl/builtins/ir/dot (renamed from src/glsl/builtins/110/dot)0
-rw-r--r--src/glsl/builtins/ir/equal (renamed from src/glsl/builtins/110/equal)30
-rw-r--r--src/glsl/builtins/ir/exp (renamed from src/glsl/builtins/110/exp)0
-rw-r--r--src/glsl/builtins/ir/exp2 (renamed from src/glsl/builtins/110/exp2)0
-rw-r--r--src/glsl/builtins/ir/faceforward (renamed from src/glsl/builtins/110/faceforward)0
-rw-r--r--src/glsl/builtins/ir/floor (renamed from src/glsl/builtins/110/floor)0
-rw-r--r--src/glsl/builtins/ir/fract (renamed from src/glsl/builtins/110/fract)0
-rw-r--r--src/glsl/builtins/ir/ftransform (renamed from src/glsl/builtins/110_vs/ftransform)0
-rw-r--r--src/glsl/builtins/ir/fwidth29
-rw-r--r--src/glsl/builtins/ir/greaterThan (renamed from src/glsl/builtins/110/greaterThan)30
-rw-r--r--src/glsl/builtins/ir/greaterThanEqual (renamed from src/glsl/builtins/110/greaterThanEqual)30
-rw-r--r--src/glsl/builtins/ir/inversesqrt (renamed from src/glsl/builtins/110/inversesqrt)0
-rw-r--r--src/glsl/builtins/ir/length (renamed from src/glsl/builtins/110/length)0
-rw-r--r--src/glsl/builtins/ir/lessThan (renamed from src/glsl/builtins/110/lessThan)30
-rw-r--r--src/glsl/builtins/ir/lessThanEqual (renamed from src/glsl/builtins/110/lessThanEqual)30
-rw-r--r--src/glsl/builtins/ir/log (renamed from src/glsl/builtins/110/log)0
-rw-r--r--src/glsl/builtins/ir/log2 (renamed from src/glsl/builtins/110/log2)0
-rw-r--r--src/glsl/builtins/ir/matrixCompMult (renamed from src/glsl/builtins/120/matrixCompMult)30
-rw-r--r--src/glsl/builtins/ir/max (renamed from src/glsl/builtins/130/max)42
-rw-r--r--src/glsl/builtins/ir/min (renamed from src/glsl/builtins/130/min)42
-rw-r--r--src/glsl/builtins/ir/mix (renamed from src/glsl/builtins/110/mix)38
-rw-r--r--src/glsl/builtins/ir/mod (renamed from src/glsl/builtins/110/mod)0
-rw-r--r--src/glsl/builtins/ir/noise118
-rw-r--r--src/glsl/builtins/ir/noise218
-rw-r--r--src/glsl/builtins/ir/noise318
-rw-r--r--src/glsl/builtins/ir/noise418
-rw-r--r--src/glsl/builtins/ir/normalize (renamed from src/glsl/builtins/110/normalize)0
-rw-r--r--src/glsl/builtins/ir/not (renamed from src/glsl/builtins/110/not)0
-rw-r--r--src/glsl/builtins/ir/notEqual (renamed from src/glsl/builtins/110/notEqual)30
-rw-r--r--src/glsl/builtins/ir/outerProduct (renamed from src/glsl/builtins/120/outerProduct)0
-rw-r--r--src/glsl/builtins/ir/pow (renamed from src/glsl/builtins/110/pow)0
-rw-r--r--src/glsl/builtins/ir/radians (renamed from src/glsl/builtins/110/radians)0
-rw-r--r--src/glsl/builtins/ir/reflect (renamed from src/glsl/builtins/110/reflect)0
-rw-r--r--src/glsl/builtins/ir/refract (renamed from src/glsl/builtins/110/refract)0
-rw-r--r--src/glsl/builtins/ir/sign (renamed from src/glsl/builtins/130/sign)20
-rw-r--r--src/glsl/builtins/ir/sin (renamed from src/glsl/builtins/110/sin)0
-rw-r--r--src/glsl/builtins/ir/sinh (renamed from src/glsl/builtins/130/sinh)0
-rw-r--r--src/glsl/builtins/ir/smoothstep (renamed from src/glsl/builtins/110/smoothstep)0
-rw-r--r--src/glsl/builtins/ir/sqrt (renamed from src/glsl/builtins/110/sqrt)0
-rw-r--r--src/glsl/builtins/ir/step (renamed from src/glsl/builtins/110/step)0
-rw-r--r--src/glsl/builtins/ir/tan (renamed from src/glsl/builtins/110/tan)0
-rw-r--r--src/glsl/builtins/ir/tanh (renamed from src/glsl/builtins/130/tanh)0
-rw-r--r--src/glsl/builtins/ir/transpose (renamed from src/glsl/builtins/120/transpose)0
-rw-r--r--src/glsl/builtins/profiles/110.frag364
-rw-r--r--src/glsl/builtins/profiles/110.vert351
-rw-r--r--src/glsl/builtins/profiles/120.frag396
-rw-r--r--src/glsl/builtins/profiles/120.vert383
-rw-r--r--src/glsl/builtins/profiles/ARB_texture_rectangle.frag7
-rw-r--r--src/glsl/builtins/profiles/ARB_texture_rectangle.vert7
-rw-r--r--src/glsl/builtins/profiles/EXT_texture_array.frag11
-rw-r--r--src/glsl/builtins/profiles/EXT_texture_array.vert11
-rw-r--r--src/glsl/builtins/tools/builtin_function.cpp39
-rwxr-xr-xsrc/glsl/builtins/tools/generate_builtins.pl164
-rwxr-xr-xsrc/glsl/builtins/tools/generate_builtins.py207
-rwxr-xr-xsrc/glsl/builtins/tools/texture_builtins.py261
98 files changed, 2499 insertions, 2332 deletions
diff --git a/src/glsl/builtins/110/clamp b/src/glsl/builtins/110/clamp
deleted file mode 100644
index d05cc76dc2..0000000000
--- a/src/glsl/builtins/110/clamp
+++ /dev/null
@@ -1,50 +0,0 @@
-((function clamp
- (signature float
- (parameters
- (declare (in) float arg0)
- (declare (in) float arg1)
- (declare (in) float arg2))
- ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 arg0)
- (declare (in) vec2 arg1)
- (declare (in) vec2 arg2))
- ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 arg0)
- (declare (in) vec3 arg1)
- (declare (in) vec3 arg2))
- ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 arg0)
- (declare (in) vec4 arg1)
- (declare (in) vec4 arg2))
- ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 arg0)
- (declare (in) float arg1)
- (declare (in) float arg2))
- ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 arg0)
- (declare (in) float arg1)
- (declare (in) float arg2))
- ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 arg0)
- (declare (in) float arg1)
- (declare (in) float arg2))
- ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
-))
diff --git a/src/glsl/builtins/110/matrixCompMult b/src/glsl/builtins/110/matrixCompMult
deleted file mode 100644
index cb5a2cb1f7..0000000000
--- a/src/glsl/builtins/110/matrixCompMult
+++ /dev/null
@@ -1,32 +0,0 @@
-((function matrixCompMult
- (signature mat2
- (parameters
- (declare (in) mat2 x)
- (declare (in) mat2 y))
- ((declare () mat2 z)
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))
-(return (var_ref z))))
-
- (signature mat3
- (parameters
- (declare (in) mat3 x)
- (declare (in) mat3 y))
- ((declare () mat3 z)
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))
-(return (var_ref z))))
-
- (signature mat4
- (parameters
- (declare (in) mat4 x)
- (declare (in) mat4 y))
- ((declare () mat4 z)
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))
- (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3))) (expression vec4 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))
-(return (var_ref z))))
-))
-
diff --git a/src/glsl/builtins/110/max b/src/glsl/builtins/110/max
deleted file mode 100644
index f91ae417e4..0000000000
--- a/src/glsl/builtins/110/max
+++ /dev/null
@@ -1,43 +0,0 @@
-((function max
- (signature float
- (parameters
- (declare (in) float arg0)
- (declare (in) float arg1))
- ((return (expression float max (var_ref arg0) (var_ref arg1)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 arg0)
- (declare (in) vec2 arg1))
- ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 arg0)
- (declare (in) vec3 arg1))
- ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 arg0)
- (declare (in) vec4 arg1))
- ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 arg0)
- (declare (in) float arg1))
- ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 arg0)
- (declare (in) float arg1))
- ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 arg0)
- (declare (in) float arg1))
- ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))
-))
diff --git a/src/glsl/builtins/110/min b/src/glsl/builtins/110/min
deleted file mode 100644
index 78fc44120a..0000000000
--- a/src/glsl/builtins/110/min
+++ /dev/null
@@ -1,43 +0,0 @@
-((function min
- (signature float
- (parameters
- (declare (in) float arg0)
- (declare (in) float arg1))
- ((return (expression float min (var_ref arg0) (var_ref arg1)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 arg0)
- (declare (in) vec2 arg1))
- ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 arg0)
- (declare (in) vec3 arg1))
- ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 arg0)
- (declare (in) vec4 arg1))
- ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 arg0)
- (declare (in) float arg1))
- ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 arg0)
- (declare (in) float arg1))
- ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 arg0)
- (declare (in) float arg1))
- ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))
-))
diff --git a/src/glsl/builtins/110/noise_fake b/src/glsl/builtins/110/noise_fake
deleted file mode 100644
index bcfb17b04b..0000000000
--- a/src/glsl/builtins/110/noise_fake
+++ /dev/null
@@ -1,76 +0,0 @@
-((function noise1
- (signature float
- (parameters
- (declare (in) float x))
- ((return (constant float (0)))))
- (signature float
- (parameters
- (declare (in) vec2 x))
- ((return (constant float (0)))))
- (signature float
- (parameters
- (declare (in) vec3 x))
- ((return (constant float (0)))))
- (signature float
- (parameters
- (declare (in) vec4 x))
- ((return (constant float (0)))))
- )
-
- (function noise2
- (signature vec2
- (parameters
- (declare (in) float x))
- ((return (constant vec2 (0 0)))))
- (signature vec2
- (parameters
- (declare (in) vec2 x))
- ((return (constant vec2 (0 0)))))
- (signature vec2
- (parameters
- (declare (in) vec3 x))
- ((return (constant vec2 (0 0)))))
- (signature vec2
- (parameters
- (declare (in) vec4 x))
- ((return (constant vec2 (0 0)))))
- )
-
- (function noise3
- (signature vec3
- (parameters
- (declare (in) float x))
- ((return (constant vec3 (0 0 0)))))
- (signature vec3
- (parameters
- (declare (in) vec2 x))
- ((return (constant vec3 (0 0 0)))))
- (signature vec3
- (parameters
- (declare (in) vec3 x))
- ((return (constant vec3 (0 0 0)))))
- (signature vec3
- (parameters
- (declare (in) vec4 x))
- ((return (constant vec3 (0 0 0)))))
- )
-
- (function noise4
- (signature vec4
- (parameters
- (declare (in) float x))
- ((return (constant vec4 (0 0 0 0)))))
- (signature vec4
- (parameters
- (declare (in) vec2 x))
- ((return (constant vec4 (0 0 0 0)))))
- (signature vec4
- (parameters
- (declare (in) vec3 x))
- ((return (constant vec4 (0 0 0 0)))))
- (signature vec4
- (parameters
- (declare (in) vec4 x))
- ((return (constant vec4 (0 0 0 0)))))
- )
-)
diff --git a/src/glsl/builtins/110/sign b/src/glsl/builtins/110/sign
deleted file mode 100644
index fa475197cf..0000000000
--- a/src/glsl/builtins/110/sign
+++ /dev/null
@@ -1,21 +0,0 @@
-((function sign
- (signature float
- (parameters
- (declare (in) float x))
- ((return (expression float sign (var_ref x)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 x))
- ((return (expression vec2 sign (var_ref x)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 x))
- ((return (expression vec3 sign (var_ref x)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 x))
- ((return (expression vec4 sign (var_ref x)))))
-))
diff --git a/src/glsl/builtins/110/textures b/src/glsl/builtins/110/textures
deleted file mode 100644
index c81b7e8ad4..0000000000
--- a/src/glsl/builtins/110/textures
+++ /dev/null
@@ -1,213 +0,0 @@
-((function texture1D
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
- (function texture1DLod
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-)
- (function texture1DProj
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
-)
- (function texture1DProjLod
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
-)
- (function texture2D
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
-(function texture2DLod
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-)
- (function texture2DProj
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
-)
- (function texture2DProjLod
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
-)
- (function texture3D
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
- (function texture3DLod
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-)
- (function texture3DProj
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
-)
- (function texture3DProjLod
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
-)
- (function textureCube
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
- (function textureCubeLod
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-)
- (function shadow1D
- (signature vec4
- (parameters
- (declare (in) sampler1DShadow sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))
-
-)
- (function shadow1DLod
- (signature vec4
- (parameters
- (declare (in) sampler1DShadow sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))
-
-)
- (function shadow1DProj
- (signature vec4
- (parameters
- (declare (in) sampler1DShadow sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) ))))
-
-)
- (function shadow1DProjLod
- (signature vec4
- (parameters
- (declare (in) sampler1DShadow sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref lod) ))))
-
-)
- (function shadow2D
- (signature vec4
- (parameters
- (declare (in) sampler2DShadow sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))
-
-)
- (function shadow2DLod
- (signature vec4
- (parameters
- (declare (in) sampler2DShadow sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))
-
-)
- (function shadow2DProj
- (signature vec4
- (parameters
- (declare (in) sampler2DShadow sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) ))))
-
-)
- (function shadow2DProjLod
- (signature vec4
- (parameters
- (declare (in) sampler2DShadow sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref lod) ))))
-
-))
diff --git a/src/glsl/builtins/110_fs/derivatives b/src/glsl/builtins/110_fs/derivatives
deleted file mode 100644
index b79852ee1f..0000000000
--- a/src/glsl/builtins/110_fs/derivatives
+++ /dev/null
@@ -1,73 +0,0 @@
-((function dFdx
- (signature float
- (parameters
- (declare (in) float p))
- ((return (expression float dFdx (var_ref p)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 p))
- ((return (expression vec2 dFdx (var_ref p)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 p))
- ((return (expression vec3 dFdx (var_ref p)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 p))
- ((return (expression vec4 dFdx (var_ref p)))))
- )
-
- (function dFdy
- (signature float
- (parameters
- (declare (in) float p))
- ((return (expression float dFdy (var_ref p)))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 p))
- ((return (expression vec2 dFdy (var_ref p)))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 p))
- ((return (expression vec3 dFdy (var_ref p)))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 p))
- ((return (expression vec4 dFdy (var_ref p)))))
- )
-
- (function fwidth
- (signature float
- (parameters
- (declare (in) float p))
- ((return (expression float +
- (expression float abs (expression float dFdx (var_ref p)))
- (expression float abs (expression float dFdy (var_ref p)))))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 p))
- ((return (expression vec2 +
- (expression vec2 abs (expression vec2 dFdx (var_ref p)))
- (expression vec2 abs (expression vec2 dFdy (var_ref p)))))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 p))
- ((return (expression vec3 +
- (expression vec3 abs (expression vec3 dFdx (var_ref p)))
- (expression vec3 abs (expression vec3 dFdy (var_ref p)))))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 p))
- ((return (expression vec4 +
- (expression vec4 abs (expression vec4 dFdx (var_ref p)))
- (expression vec4 abs (expression vec4 dFdy (var_ref p)))))))
-))
diff --git a/src/glsl/builtins/110_fs/textures b/src/glsl/builtins/110_fs/textures
deleted file mode 100644
index 38f3787e9e..0000000000
--- a/src/glsl/builtins/110_fs/textures
+++ /dev/null
@@ -1,113 +0,0 @@
-((function texture1D
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-)
- (function texture1DProj
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
-)
- (function texture2D
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-)
- (function texture2DProj
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
-)
- (function texture3D
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-)
- (function texture3DProj
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
-)
- (function textureCube
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-)
- (function shadow1D
- (signature vec4
- (parameters
- (declare (in) sampler1DShadow sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))
-
-)
- (function shadow1DProj
- (signature vec4
- (parameters
- (declare (in) sampler1DShadow sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref bias) ))))
-
-)
- (function shadow2D
- (signature vec4
- (parameters
- (declare (in) sampler2DShadow sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))
-
-)
- (function shadow2DProj
- (signature vec4
- (parameters
- (declare (in) sampler2DShadow sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref bias) ))))
-
-))
diff --git a/src/glsl/builtins/130/equal b/src/glsl/builtins/130/equal
deleted file mode 100644
index 079c3e97fb..0000000000
--- a/src/glsl/builtins/130/equal
+++ /dev/null
@@ -1,31 +0,0 @@
-((function equal
- (signature bvec2
- (parameters
- (declare (in) uvec2 arg0)
- (declare (in) uvec2 arg1))
- ((declare () bvec2 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec3
- (parameters
- (declare (in) uvec3 arg0)
- (declare (in) uvec3 arg1))
- ((declare () bvec3 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec4
- (parameters
- (declare (in) uvec4 arg0)
- (declare (in) uvec4 arg1))
- ((declare () bvec4 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
- (return (var_ref temp))))
-))
diff --git a/src/glsl/builtins/130/greaterThan b/src/glsl/builtins/130/greaterThan
deleted file mode 100644
index a9fb7b3a43..0000000000
--- a/src/glsl/builtins/130/greaterThan
+++ /dev/null
@@ -1,31 +0,0 @@
-((function greaterThan
- (signature bvec2
- (parameters
- (declare (in) uvec2 arg0)
- (declare (in) uvec2 arg1))
- ((declare () bvec2 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec3
- (parameters
- (declare (in) uvec3 arg0)
- (declare (in) uvec3 arg1))
- ((declare () bvec3 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec4
- (parameters
- (declare (in) uvec4 arg0)
- (declare (in) uvec4 arg1))
- ((declare () bvec4 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
- (return (var_ref temp))))
-))
diff --git a/src/glsl/builtins/130/greaterThanEqual b/src/glsl/builtins/130/greaterThanEqual
deleted file mode 100644
index 293c93c7cc..0000000000
--- a/src/glsl/builtins/130/greaterThanEqual
+++ /dev/null
@@ -1,31 +0,0 @@
-((function greaterThanEqual
- (signature bvec2
- (parameters
- (declare (in) uvec2 arg0)
- (declare (in) uvec2 arg1))
- ((declare () bvec2 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec3
- (parameters
- (declare (in) uvec3 arg0)
- (declare (in) uvec3 arg1))
- ((declare () bvec3 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec4
- (parameters
- (declare (in) uvec4 arg0)
- (declare (in) uvec4 arg1))
- ((declare () bvec4 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
- (return (var_ref temp))))
-))
diff --git a/src/glsl/builtins/130/lessThan b/src/glsl/builtins/130/lessThan
deleted file mode 100644
index d9f693fd63..0000000000
--- a/src/glsl/builtins/130/lessThan
+++ /dev/null
@@ -1,31 +0,0 @@
-((function lessThan
- (signature bvec2
- (parameters
- (declare (in) uvec2 arg0)
- (declare (in) uvec2 arg1))
- ((declare () bvec2 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec3
- (parameters
- (declare (in) uvec3 arg0)
- (declare (in) uvec3 arg1))
- ((declare () bvec3 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec4
- (parameters
- (declare (in) uvec4 arg0)
- (declare (in) uvec4 arg1))
- ((declare () bvec4 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
- (return (var_ref temp))))
-))
diff --git a/src/glsl/builtins/130/lessThanEqual b/src/glsl/builtins/130/lessThanEqual
deleted file mode 100644
index 494411b869..0000000000
--- a/src/glsl/builtins/130/lessThanEqual
+++ /dev/null
@@ -1,31 +0,0 @@
-((function lessThanEqual
- (signature bvec2
- (parameters
- (declare (in) uvec2 arg0)
- (declare (in) uvec2 arg1))
- ((declare () bvec2 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec3
- (parameters
- (declare (in) uvec3 arg0)
- (declare (in) uvec3 arg1))
- ((declare () bvec3 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec4
- (parameters
- (declare (in) uvec4 arg0)
- (declare (in) uvec4 arg1))
- ((declare () bvec4 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
- (return (var_ref temp))))
-))
diff --git a/src/glsl/builtins/130/mix b/src/glsl/builtins/130/mix
deleted file mode 100644
index 9a1fcd70ff..0000000000
--- a/src/glsl/builtins/130/mix
+++ /dev/null
@@ -1,39 +0,0 @@
-((function mix
- (signature float
- (parameters
- (declare (in) float v1)
- (declare (in) float v2)
- (declare (in) bool a))
- ((assign (var_ref a) (var_ref v1) (var_ref v2))
- (return (var_ref v1))))
-
- (signature vec2
- (parameters
- (declare (in) vec2 v1)
- (declare (in) vec2 v2)
- (declare (in) bvec2 a))
- ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))
- (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))
- (return (var_ref v1))))
-
- (signature vec3
- (parameters
- (declare (in) vec3 v1)
- (declare (in) vec3 v2)
- (declare (in) bvec3 a))
- ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))
- (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))
- (assign (swiz z (var_ref a)) (swiz z (var_ref v1)) (swiz z (var_ref v2)))
- (return (var_ref v1))))
-
- (signature vec4
- (parameters
- (declare (in) vec4 v1)
- (declare (in) vec4 v2)
- (declare (in) bvec4 a))
- ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))
- (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))
- (assign (swiz z (var_ref a)) (swiz z (var_ref v1)) (swiz z (var_ref v2)))
- (assign (swiz w (var_ref a)) (swiz w (var_ref v1)) (swiz w (var_ref v2)))
- (return (var_ref v1))))
-))
diff --git a/src/glsl/builtins/130/notEqual b/src/glsl/builtins/130/notEqual
deleted file mode 100644
index 81e6376bd9..0000000000
--- a/src/glsl/builtins/130/notEqual
+++ /dev/null
@@ -1,31 +0,0 @@
-((function notEqual
- (signature bvec2
- (parameters
- (declare (in) uvec2 arg0)
- (declare (in) uvec2 arg1))
- ((declare () bvec2 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec3
- (parameters
- (declare (in) uvec3 arg0)
- (declare (in) uvec3 arg1))
- ((declare () bvec3 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (return (var_ref temp))))
-
- (signature bvec4
- (parameters
- (declare (in) uvec4 arg0)
- (declare (in) uvec4 arg1))
- ((declare () bvec4 temp)
- (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
- (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
- (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
- (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool != (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
- (return (var_ref temp))))
-))
diff --git a/src/glsl/builtins/130/texelFetch b/src/glsl/builtins/130/texelFetch
deleted file mode 100644
index d51ce65a89..0000000000
--- a/src/glsl/builtins/130/texelFetch
+++ /dev/null
@@ -1,107 +0,0 @@
-((function texelFetch
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) int P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) int P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) int P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) ivec2 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) ivec2 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) ivec2 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) ivec3 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) ivec3 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) ivec3 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) ivec2 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1DArray sampler)
- (declare (in) ivec2 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1DArray sampler)
- (declare (in) ivec2 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) ivec3 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2DArray sampler)
- (declare (in) ivec3 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2DArray sampler)
- (declare (in) ivec3 P)
- (declare (in) int lod) )
- ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))
-
-))
diff --git a/src/glsl/builtins/130/texture b/src/glsl/builtins/130/texture
deleted file mode 100644
index b170b58309..0000000000
--- a/src/glsl/builtins/130/texture
+++ /dev/null
@@ -1,110 +0,0 @@
-((function texture
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) float P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) float P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isamplerCube sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usamplerCube sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1DArray sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1DArray sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2DArray sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2DArray sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-))
diff --git a/src/glsl/builtins/130/textureGrad b/src/glsl/builtins/130/textureGrad
deleted file mode 100644
index 0ef428c224..0000000000
--- a/src/glsl/builtins/130/textureGrad
+++ /dev/null
@@ -1,147 +0,0 @@
-((function textureGrad
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) float P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) float P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isamplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usamplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))
-
-)
-)
diff --git a/src/glsl/builtins/130/textureLod b/src/glsl/builtins/130/textureLod
deleted file mode 100644
index 7d7059d848..0000000000
--- a/src/glsl/builtins/130/textureLod
+++ /dev/null
@@ -1,128 +0,0 @@
-((function textureLod
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) float P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) float P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isamplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usamplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-))
diff --git a/src/glsl/builtins/130/textureProj b/src/glsl/builtins/130/textureProj
deleted file mode 100644
index 40ea1c2af6..0000000000
--- a/src/glsl/builtins/130/textureProj
+++ /dev/null
@@ -1,92 +0,0 @@
-((function textureProj
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))
-
-))
diff --git a/src/glsl/builtins/130/textureProjGrad b/src/glsl/builtins/130/textureProjGrad
deleted file mode 100644
index b4bfa58c12..0000000000
--- a/src/glsl/builtins/130/textureProjGrad
+++ /dev/null
@@ -1,122 +0,0 @@
-((function textureProjGrad
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float dPdx)
- (declare (in) float dPdy) )
- ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) vec2 dPdx)
- (declare (in) vec2 dPdy) )
- ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) vec3 dPdx)
- (declare (in) vec3 dPdy) )
- ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))
-
-))
diff --git a/src/glsl/builtins/130/textureProjLod b/src/glsl/builtins/130/textureProjLod
deleted file mode 100644
index d242f7e40f..0000000000
--- a/src/glsl/builtins/130/textureProjLod
+++ /dev/null
@@ -1,107 +0,0 @@
-((function textureProjLod
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))
-
-))
diff --git a/src/glsl/builtins/130_fs/texture b/src/glsl/builtins/130_fs/texture
deleted file mode 100644
index 0de981397f..0000000000
--- a/src/glsl/builtins/130_fs/texture
+++ /dev/null
@@ -1,128 +0,0 @@
-((function texture
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) float P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) float P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) float P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) samplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isamplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usamplerCube sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-))
diff --git a/src/glsl/builtins/130_fs/textureProj b/src/glsl/builtins/130_fs/textureProj
deleted file mode 100644
index b1d8f0a2f3..0000000000
--- a/src/glsl/builtins/130_fs/textureProj
+++ /dev/null
@@ -1,107 +0,0 @@
-((function textureProj
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler1D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler2D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature vec4
- (parameters
- (declare (in) sampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature ivec4
- (parameters
- (declare (in) isampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
- (signature uvec4
- (parameters
- (declare (in) usampler3D sampler)
- (declare (in) vec4 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))
-
-))
diff --git a/src/glsl/builtins/ARB_texture_rectangle/textures b/src/glsl/builtins/ARB_texture_rectangle/textures
deleted file mode 100644
index 161d8c4a54..0000000000
--- a/src/glsl/builtins/ARB_texture_rectangle/textures
+++ /dev/null
@@ -1,16 +0,0 @@
-((function texture2DRect
- (signature vec4
- (parameters
- (declare (in) sampler2DRect sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
- (function shadow2DRect
- (signature vec4
- (parameters
- (declare (in) sampler2DRectShadow sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))
-
-))
diff --git a/src/glsl/builtins/EXT_texture_array/textures b/src/glsl/builtins/EXT_texture_array/textures
deleted file mode 100644
index 8a91f90140..0000000000
--- a/src/glsl/builtins/EXT_texture_array/textures
+++ /dev/null
@@ -1,59 +0,0 @@
-((function texture1DArray
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
- (function texture1DArrayLod
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-)
- (function texture2DArray
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))
-
-)
- (function texture2DArrayLod
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))
-
-)
- (function shadow1DArray
- (signature vec4
- (parameters
- (declare (in) sampler1DArrayShadow sampler)
- (declare (in) vec3 P) )
- ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))
-
-)
- (function shadow1DArrayLod
- (signature vec4
- (parameters
- (declare (in) sampler1DArrayShadow sampler)
- (declare (in) vec3 P)
- (declare (in) float lod) )
- ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))
-
-)
- (function shadow2DArray
- (signature vec4
- (parameters
- (declare (in) sampler2DArrayShadow sampler)
- (declare (in) vec4 P) )
- ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) 1 (swiz w (var_ref P)) ))))
-
-))
diff --git a/src/glsl/builtins/EXT_texture_array_fs/textures b/src/glsl/builtins/EXT_texture_array_fs/textures
deleted file mode 100644
index 74e184387a..0000000000
--- a/src/glsl/builtins/EXT_texture_array_fs/textures
+++ /dev/null
@@ -1,27 +0,0 @@
-((function texture1DArray
- (signature vec4
- (parameters
- (declare (in) sampler1DArray sampler)
- (declare (in) vec2 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-)
- (function texture2DArray
- (signature vec4
- (parameters
- (declare (in) sampler2DArray sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))
-
-)
- (function shadow1DArray
- (signature vec4
- (parameters
- (declare (in) sampler1DArrayShadow sampler)
- (declare (in) vec3 P)
- (declare (in) float bias) )
- ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))
-
-))
diff --git a/src/glsl/builtins/110/abs b/src/glsl/builtins/ir/abs
index 904845307c..904845307c 100644
--- a/src/glsl/builtins/110/abs
+++ b/src/glsl/builtins/ir/abs
diff --git a/src/glsl/builtins/ir/acos b/src/glsl/builtins/ir/acos
new file mode 100644
index 0000000000..d1cfebeff8
--- /dev/null
+++ b/src/glsl/builtins/ir/acos
@@ -0,0 +1,22 @@
+((function acos
+ (signature float
+ (parameters
+ (declare (in) float x))
+ ((return (expression float - (constant float (1.5707963))
+ (call asin ((var_ref x)))))))
+ (signature vec2
+ (parameters
+ (declare (in) vec2 x))
+ ((return (expression vec2 - (constant float (1.5707963))
+ (call asin ((var_ref x)))))))
+ (signature vec3
+ (parameters
+ (declare (in) vec3 x))
+ ((return (expression vec3 - (constant float (1.5707963))
+ (call asin ((var_ref x)))))))
+ (signature vec4
+ (parameters
+ (declare (in) vec4 x))
+ ((return (expression vec4 - (constant float (1.5707963))
+ (call asin ((var_ref x)))))))
+))
diff --git a/src/glsl/builtins/110/all b/src/glsl/builtins/ir/all
index 2cac0dfb68..2cac0dfb68 100644
--- a/src/glsl/builtins/110/all
+++ b/src/glsl/builtins/ir/all
diff --git a/src/glsl/builtins/110/any b/src/glsl/builtins/ir/any
index f10e8a7b47..f10e8a7b47 100644
--- a/src/glsl/builtins/110/any
+++ b/src/glsl/builtins/ir/any
diff --git a/src/glsl/builtins/110/asin b/src/glsl/builtins/ir/asin
index d26bde364b..e230ad614e 100644
--- a/src/glsl/builtins/110/asin
+++ b/src/glsl/builtins/ir/asin
@@ -93,28 +93,5 @@
(constant float (-0.2121144))
(expression vec4 *
(constant float (0.0742610))
- (expression vec4 abs (var_ref x)))))))))))
-))
-
- (function acos
- (signature float
- (parameters
- (declare (in) float x))
- ((return (expression float - (constant float (1.5707963))
- (call asin ((var_ref x)))))))
- (signature vec2
- (parameters
- (declare (in) vec2 x))
- ((return (expression vec2 - (constant float (1.5707963))
- (call asin ((var_ref x)))))))
- (signature vec3
- (parameters
- (declare (in) vec3 x))
- ((return (expression vec3 - (constant float (1.5707963))
- (call asin ((var_ref x)))))))
- (signature vec4
- (parameters
- (declare (in) vec4 x))
- ((return (expression vec4 - (constant float (1.5707963))
- (call asin ((var_ref x)))))))
+ (expression vec4 abs (var_ref x))))))))))))
))
diff --git a/src/glsl/builtins/110/atan b/src/glsl/builtins/ir/atan
index 8404829387..8404829387 100644
--- a/src/glsl/builtins/110/atan
+++ b/src/glsl/builtins/ir/atan
diff --git a/src/glsl/builtins/110/ceil b/src/glsl/builtins/ir/ceil
index a26a775049..a26a775049 100644
--- a/src/glsl/builtins/110/ceil
+++ b/src/glsl/builtins/ir/ceil
diff --git a/src/glsl/builtins/130/clamp b/src/glsl/builtins/ir/clamp
index e1aad5c8d9..2bdc466b26 100644
--- a/src/glsl/builtins/130/clamp
+++ b/src/glsl/builtins/ir/clamp
@@ -1,4 +1,53 @@
((function clamp
+ (signature float
+ (parameters
+ (declare (in) float arg0)
+ (declare (in) float arg1)
+ (declare (in) float arg2))
+ ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0)
+ (declare (in) vec2 arg1)
+ (declare (in) vec2 arg2))
+ ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0)
+ (declare (in) vec3 arg1)
+ (declare (in) vec3 arg2))
+ ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0)
+ (declare (in) vec4 arg1)
+ (declare (in) vec4 arg2))
+ ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0)
+ (declare (in) float arg1)
+ (declare (in) float arg2))
+ ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0)
+ (declare (in) float arg1)
+ (declare (in) float arg2))
+ ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0)
+ (declare (in) float arg1)
+ (declare (in) float arg2))
+ ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))
+
(signature int
(parameters
(declare (in) int arg0)
diff --git a/src/glsl/builtins/110/cos b/src/glsl/builtins/ir/cos
index 88f266eccb..88f266eccb 100644
--- a/src/glsl/builtins/110/cos
+++ b/src/glsl/builtins/ir/cos
diff --git a/src/glsl/builtins/130/cosh b/src/glsl/builtins/ir/cosh
index 45e0ae427d..45e0ae427d 100644
--- a/src/glsl/builtins/130/cosh
+++ b/src/glsl/builtins/ir/cosh
diff --git a/src/glsl/builtins/110/cross b/src/glsl/builtins/ir/cross
index 24717a2183..24717a2183 100644
--- a/src/glsl/builtins/110/cross
+++ b/src/glsl/builtins/ir/cross
diff --git a/src/glsl/builtins/ir/dFdx b/src/glsl/builtins/ir/dFdx
new file mode 100644
index 0000000000..30594d33c7
--- /dev/null
+++ b/src/glsl/builtins/ir/dFdx
@@ -0,0 +1,21 @@
+((function dFdx
+ (signature float
+ (parameters
+ (declare (in) float p))
+ ((return (expression float dFdx (var_ref p)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 p))
+ ((return (expression vec2 dFdx (var_ref p)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 p))
+ ((return (expression vec3 dFdx (var_ref p)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 p))
+ ((return (expression vec4 dFdx (var_ref p)))))
+))
diff --git a/src/glsl/builtins/ir/dFdy b/src/glsl/builtins/ir/dFdy
new file mode 100644
index 0000000000..fb5798d3cb
--- /dev/null
+++ b/src/glsl/builtins/ir/dFdy
@@ -0,0 +1,21 @@
+((function dFdy
+ (signature float
+ (parameters
+ (declare (in) float p))
+ ((return (expression float dFdy (var_ref p)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 p))
+ ((return (expression vec2 dFdy (var_ref p)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 p))
+ ((return (expression vec3 dFdy (var_ref p)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 p))
+ ((return (expression vec4 dFdy (var_ref p)))))
+))
diff --git a/src/glsl/builtins/110/degrees b/src/glsl/builtins/ir/degrees
index dc0d7b9e20..dc0d7b9e20 100644
--- a/src/glsl/builtins/110/degrees
+++ b/src/glsl/builtins/ir/degrees
diff --git a/src/glsl/builtins/110/distance b/src/glsl/builtins/ir/distance
index a2309c484f..a2309c484f 100644
--- a/src/glsl/builtins/110/distance
+++ b/src/glsl/builtins/ir/distance
diff --git a/src/glsl/builtins/110/dot b/src/glsl/builtins/ir/dot
index a91a6d2c56..a91a6d2c56 100644
--- a/src/glsl/builtins/110/dot
+++ b/src/glsl/builtins/ir/dot
diff --git a/src/glsl/builtins/110/equal b/src/glsl/builtins/ir/equal
index ae7ddc53bd..d7a4bc6063 100644
--- a/src/glsl/builtins/110/equal
+++ b/src/glsl/builtins/ir/equal
@@ -58,4 +58,34 @@
(assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
(assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
(return (var_ref temp))))
+
+ (signature bvec2
+ (parameters
+ (declare (in) uvec2 arg0)
+ (declare (in) uvec2 arg1))
+ ((declare () bvec2 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec3
+ (parameters
+ (declare (in) uvec3 arg0)
+ (declare (in) uvec3 arg1))
+ ((declare () bvec3 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec4
+ (parameters
+ (declare (in) uvec4 arg0)
+ (declare (in) uvec4 arg1))
+ ((declare () bvec4 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
+ (return (var_ref temp))))
))
diff --git a/src/glsl/builtins/110/exp b/src/glsl/builtins/ir/exp
index a73bd6a7f8..a73bd6a7f8 100644
--- a/src/glsl/builtins/110/exp
+++ b/src/glsl/builtins/ir/exp
diff --git a/src/glsl/builtins/110/exp2 b/src/glsl/builtins/ir/exp2
index a842d3fe65..a842d3fe65 100644
--- a/src/glsl/builtins/110/exp2
+++ b/src/glsl/builtins/ir/exp2
diff --git a/src/glsl/builtins/110/faceforward b/src/glsl/builtins/ir/faceforward
index d170397238..d170397238 100644
--- a/src/glsl/builtins/110/faceforward
+++ b/src/glsl/builtins/ir/faceforward
diff --git a/src/glsl/builtins/110/floor b/src/glsl/builtins/ir/floor
index 8dd8052799..8dd8052799 100644
--- a/src/glsl/builtins/110/floor
+++ b/src/glsl/builtins/ir/floor
diff --git a/src/glsl/builtins/110/fract b/src/glsl/builtins/ir/fract
index 3f0763d1b3..3f0763d1b3 100644
--- a/src/glsl/builtins/110/fract
+++ b/src/glsl/builtins/ir/fract
diff --git a/src/glsl/builtins/110_vs/ftransform b/src/glsl/builtins/ir/ftransform
index 9ca63dc1e3..9ca63dc1e3 100644
--- a/src/glsl/builtins/110_vs/ftransform
+++ b/src/glsl/builtins/ir/ftransform
diff --git a/src/glsl/builtins/ir/fwidth b/src/glsl/builtins/ir/fwidth
new file mode 100644
index 0000000000..385e05d6a1
--- /dev/null
+++ b/src/glsl/builtins/ir/fwidth
@@ -0,0 +1,29 @@
+((function fwidth
+ (signature float
+ (parameters
+ (declare (in) float p))
+ ((return (expression float +
+ (expression float abs (expression float dFdx (var_ref p)))
+ (expression float abs (expression float dFdy (var_ref p)))))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 p))
+ ((return (expression vec2 +
+ (expression vec2 abs (expression vec2 dFdx (var_ref p)))
+ (expression vec2 abs (expression vec2 dFdy (var_ref p)))))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 p))
+ ((return (expression vec3 +
+ (expression vec3 abs (expression vec3 dFdx (var_ref p)))
+ (expression vec3 abs (expression vec3 dFdy (var_ref p)))))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 p))
+ ((return (expression vec4 +
+ (expression vec4 abs (expression vec4 dFdx (var_ref p)))
+ (expression vec4 abs (expression vec4 dFdy (var_ref p)))))))
+))
diff --git a/src/glsl/builtins/110/greaterThan b/src/glsl/builtins/ir/greaterThan
index ae03030e49..ce7bd29bed 100644
--- a/src/glsl/builtins/110/greaterThan
+++ b/src/glsl/builtins/ir/greaterThan
@@ -58,4 +58,34 @@
(assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
(assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
(return (var_ref temp))))
+
+ (signature bvec2
+ (parameters
+ (declare (in) uvec2 arg0)
+ (declare (in) uvec2 arg1))
+ ((declare () bvec2 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec3
+ (parameters
+ (declare (in) uvec3 arg0)
+ (declare (in) uvec3 arg1))
+ ((declare () bvec3 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec4
+ (parameters
+ (declare (in) uvec4 arg0)
+ (declare (in) uvec4 arg1))
+ ((declare () bvec4 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
+ (return (var_ref temp))))
))
diff --git a/src/glsl/builtins/110/greaterThanEqual b/src/glsl/builtins/ir/greaterThanEqual
index 204d5fd143..de1a9f9516 100644
--- a/src/glsl/builtins/110/greaterThanEqual
+++ b/src/glsl/builtins/ir/greaterThanEqual
@@ -58,4 +58,34 @@
(assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
(assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
(return (var_ref temp))))
+
+ (signature bvec2
+ (parameters
+ (declare (in) uvec2 arg0)
+ (declare (in) uvec2 arg1))
+ ((declare () bvec2 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec3
+ (parameters
+ (declare (in) uvec3 arg0)
+ (declare (in) uvec3 arg1))
+ ((declare () bvec3 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec4
+ (parameters
+ (declare (in) uvec4 arg0)
+ (declare (in) uvec4 arg1))
+ ((declare () bvec4 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
+ (return (var_ref temp))))
))
diff --git a/src/glsl/builtins/110/inversesqrt b/src/glsl/builtins/ir/inversesqrt
index 5b66d2b369..5b66d2b369 100644
--- a/src/glsl/builtins/110/inversesqrt
+++ b/src/glsl/builtins/ir/inversesqrt
diff --git a/src/glsl/builtins/110/length b/src/glsl/builtins/ir/length
index 89ff7f3ef1..89ff7f3ef1 100644
--- a/src/glsl/builtins/110/length
+++ b/src/glsl/builtins/ir/length
diff --git a/src/glsl/builtins/110/lessThan b/src/glsl/builtins/ir/lessThan
index 5c4254165c..52113b7046 100644
--- a/src/glsl/builtins/110/lessThan
+++ b/src/glsl/builtins/ir/lessThan
@@ -58,4 +58,34 @@
(assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
(assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
(return (var_ref temp))))
+
+ (signature bvec2
+ (parameters
+ (declare (in) uvec2 arg0)
+ (declare (in) uvec2 arg1))
+ ((declare () bvec2 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec3
+ (parameters
+ (declare (in) uvec3 arg0)
+ (declare (in) uvec3 arg1))
+ ((declare () bvec3 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec4
+ (parameters
+ (declare (in) uvec4 arg0)
+ (declare (in) uvec4 arg1))
+ ((declare () bvec4 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
+ (return (var_ref temp))))
))
diff --git a/src/glsl/builtins/110/lessThanEqual b/src/glsl/builtins/ir/lessThanEqual
index ccb955b8a7..4b240be5d1 100644
--- a/src/glsl/builtins/110/lessThanEqual
+++ b/src/glsl/builtins/ir/lessThanEqual
@@ -58,4 +58,34 @@
(assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
(assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
(return (var_ref temp))))
+
+ (signature bvec2
+ (parameters
+ (declare (in) uvec2 arg0)
+ (declare (in) uvec2 arg1))
+ ((declare () bvec2 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec3
+ (parameters
+ (declare (in) uvec3 arg0)
+ (declare (in) uvec3 arg1))
+ ((declare () bvec3 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec4
+ (parameters
+ (declare (in) uvec4 arg0)
+ (declare (in) uvec4 arg1))
+ ((declare () bvec4 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
+ (return (var_ref temp))))
))
diff --git a/src/glsl/builtins/110/log b/src/glsl/builtins/ir/log
index d168abb5a7..d168abb5a7 100644
--- a/src/glsl/builtins/110/log
+++ b/src/glsl/builtins/ir/log
diff --git a/src/glsl/builtins/110/log2 b/src/glsl/builtins/ir/log2
index b96c6276f0..b96c6276f0 100644
--- a/src/glsl/builtins/110/log2
+++ b/src/glsl/builtins/ir/log2
diff --git a/src/glsl/builtins/120/matrixCompMult b/src/glsl/builtins/ir/matrixCompMult
index 69331e2652..538da18a79 100644
--- a/src/glsl/builtins/120/matrixCompMult
+++ b/src/glsl/builtins/ir/matrixCompMult
@@ -1,4 +1,34 @@
((function matrixCompMult
+ (signature mat2
+ (parameters
+ (declare (in) mat2 x)
+ (declare (in) mat2 y))
+ ((declare () mat2 z)
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))
+(return (var_ref z))))
+
+ (signature mat3
+ (parameters
+ (declare (in) mat3 x)
+ (declare (in) mat3 y))
+ ((declare () mat3 z)
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))
+(return (var_ref z))))
+
+ (signature mat4
+ (parameters
+ (declare (in) mat4 x)
+ (declare (in) mat4 y))
+ ((declare () mat4 z)
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))
+ (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3))) (expression vec4 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))
+(return (var_ref z))))
+
(signature mat2x3
(parameters
(declare (in) mat2x3 x)
diff --git a/src/glsl/builtins/130/max b/src/glsl/builtins/ir/max
index 0863e411a3..2b5a02868c 100644
--- a/src/glsl/builtins/130/max
+++ b/src/glsl/builtins/ir/max
@@ -1,4 +1,46 @@
((function max
+ (signature float
+ (parameters
+ (declare (in) float arg0)
+ (declare (in) float arg1))
+ ((return (expression float max (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0)
+ (declare (in) vec2 arg1))
+ ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0)
+ (declare (in) vec3 arg1))
+ ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0)
+ (declare (in) vec4 arg1))
+ ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0)
+ (declare (in) float arg1))
+ ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0)
+ (declare (in) float arg1))
+ ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0)
+ (declare (in) float arg1))
+ ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))
+
(signature int
(parameters
(declare (in) int arg0)
diff --git a/src/glsl/builtins/130/min b/src/glsl/builtins/ir/min
index 576546f6f2..2deef1118a 100644
--- a/src/glsl/builtins/130/min
+++ b/src/glsl/builtins/ir/min
@@ -1,4 +1,46 @@
((function min
+ (signature float
+ (parameters
+ (declare (in) float arg0)
+ (declare (in) float arg1))
+ ((return (expression float min (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0)
+ (declare (in) vec2 arg1))
+ ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0)
+ (declare (in) vec3 arg1))
+ ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0)
+ (declare (in) vec4 arg1))
+ ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 arg0)
+ (declare (in) float arg1))
+ ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 arg0)
+ (declare (in) float arg1))
+ ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 arg0)
+ (declare (in) float arg1))
+ ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))
+
(signature int
(parameters
(declare (in) int arg0)
diff --git a/src/glsl/builtins/110/mix b/src/glsl/builtins/ir/mix
index 8638d06887..6bc6f0a43e 100644
--- a/src/glsl/builtins/110/mix
+++ b/src/glsl/builtins/ir/mix
@@ -47,4 +47,42 @@
(declare (in) vec4 arg1)
(declare (in) float arg2))
((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))
+
+ (signature float
+ (parameters
+ (declare (in) float v1)
+ (declare (in) float v2)
+ (declare (in) bool a))
+ ((assign (var_ref a) (var_ref v1) (var_ref v2))
+ (return (var_ref v1))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 v1)
+ (declare (in) vec2 v2)
+ (declare (in) bvec2 a))
+ ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))
+ (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))
+ (return (var_ref v1))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 v1)
+ (declare (in) vec3 v2)
+ (declare (in) bvec3 a))
+ ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))
+ (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))
+ (assign (swiz z (var_ref a)) (swiz z (var_ref v1)) (swiz z (var_ref v2)))
+ (return (var_ref v1))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 v1)
+ (declare (in) vec4 v2)
+ (declare (in) bvec4 a))
+ ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))
+ (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))
+ (assign (swiz z (var_ref a)) (swiz z (var_ref v1)) (swiz z (var_ref v2)))
+ (assign (swiz w (var_ref a)) (swiz w (var_ref v1)) (swiz w (var_ref v2)))
+ (return (var_ref v1))))
))
diff --git a/src/glsl/builtins/110/mod b/src/glsl/builtins/ir/mod
index aeaea240e2..aeaea240e2 100644
--- a/src/glsl/builtins/110/mod
+++ b/src/glsl/builtins/ir/mod
diff --git a/src/glsl/builtins/ir/noise1 b/src/glsl/builtins/ir/noise1
new file mode 100644
index 0000000000..eb7be35857
--- /dev/null
+++ b/src/glsl/builtins/ir/noise1
@@ -0,0 +1,18 @@
+((function noise1
+ (signature float
+ (parameters
+ (declare (in) float x))
+ ((return (constant float (0)))))
+ (signature float
+ (parameters
+ (declare (in) vec2 x))
+ ((return (constant float (0)))))
+ (signature float
+ (parameters
+ (declare (in) vec3 x))
+ ((return (constant float (0)))))
+ (signature float
+ (parameters
+ (declare (in) vec4 x))
+ ((return (constant float (0)))))
+))
diff --git a/src/glsl/builtins/ir/noise2 b/src/glsl/builtins/ir/noise2
new file mode 100644
index 0000000000..ae4443a704
--- /dev/null
+++ b/src/glsl/builtins/ir/noise2
@@ -0,0 +1,18 @@
+((function noise2
+ (signature vec2
+ (parameters
+ (declare (in) float x))
+ ((return (constant vec2 (0 0)))))
+ (signature vec2
+ (parameters
+ (declare (in) vec2 x))
+ ((return (constant vec2 (0 0)))))
+ (signature vec2
+ (parameters
+ (declare (in) vec3 x))
+ ((return (constant vec2 (0 0)))))
+ (signature vec2
+ (parameters
+ (declare (in) vec4 x))
+ ((return (constant vec2 (0 0)))))
+))
diff --git a/src/glsl/builtins/ir/noise3 b/src/glsl/builtins/ir/noise3
new file mode 100644
index 0000000000..30d9681890
--- /dev/null
+++ b/src/glsl/builtins/ir/noise3
@@ -0,0 +1,18 @@
+((function noise3
+ (signature vec3
+ (parameters
+ (declare (in) float x))
+ ((return (constant vec3 (0 0 0)))))
+ (signature vec3
+ (parameters
+ (declare (in) vec2 x))
+ ((return (constant vec3 (0 0 0)))))
+ (signature vec3
+ (parameters
+ (declare (in) vec3 x))
+ ((return (constant vec3 (0 0 0)))))
+ (signature vec3
+ (parameters
+ (declare (in) vec4 x))
+ ((return (constant vec3 (0 0 0)))))
+))
diff --git a/src/glsl/builtins/ir/noise4 b/src/glsl/builtins/ir/noise4
new file mode 100644
index 0000000000..913bef2aa1
--- /dev/null
+++ b/src/glsl/builtins/ir/noise4
@@ -0,0 +1,18 @@
+((function noise4
+ (signature vec4
+ (parameters
+ (declare (in) float x))
+ ((return (constant vec4 (0 0 0 0)))))
+ (signature vec4
+ (parameters
+ (declare (in) vec2 x))
+ ((return (constant vec4 (0 0 0 0)))))
+ (signature vec4
+ (parameters
+ (declare (in) vec3 x))
+ ((return (constant vec4 (0 0 0 0)))))
+ (signature vec4
+ (parameters
+ (declare (in) vec4 x))
+ ((return (constant vec4 (0 0 0 0)))))
+))
diff --git a/src/glsl/builtins/110/normalize b/src/glsl/builtins/ir/normalize
index be88a9830d..be88a9830d 100644
--- a/src/glsl/builtins/110/normalize
+++ b/src/glsl/builtins/ir/normalize
diff --git a/src/glsl/builtins/110/not b/src/glsl/builtins/ir/not
index b696b06557..b696b06557 100644
--- a/src/glsl/builtins/110/not
+++ b/src/glsl/builtins/ir/not
diff --git a/src/glsl/builtins/110/notEqual b/src/glsl/builtins/ir/notEqual
index ccdcaa3aaf..bcc7339bb6 100644
--- a/src/glsl/builtins/110/notEqual
+++ b/src/glsl/builtins/ir/notEqual
@@ -58,4 +58,34 @@
(assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
(assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool != (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
(return (var_ref temp))))
+
+ (signature bvec2
+ (parameters
+ (declare (in) uvec2 arg0)
+ (declare (in) uvec2 arg1))
+ ((declare () bvec2 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec3
+ (parameters
+ (declare (in) uvec3 arg0)
+ (declare (in) uvec3 arg1))
+ ((declare () bvec3 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (return (var_ref temp))))
+
+ (signature bvec4
+ (parameters
+ (declare (in) uvec4 arg0)
+ (declare (in) uvec4 arg1))
+ ((declare () bvec4 temp)
+ (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))
+ (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))
+ (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))
+ (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool != (swiz w (var_ref arg0))(swiz w (var_ref arg1))))
+ (return (var_ref temp))))
))
diff --git a/src/glsl/builtins/120/outerProduct b/src/glsl/builtins/ir/outerProduct
index 69ae741e17..69ae741e17 100644
--- a/src/glsl/builtins/120/outerProduct
+++ b/src/glsl/builtins/ir/outerProduct
diff --git a/src/glsl/builtins/110/pow b/src/glsl/builtins/ir/pow
index a61bc4418e..a61bc4418e 100644
--- a/src/glsl/builtins/110/pow
+++ b/src/glsl/builtins/ir/pow
diff --git a/src/glsl/builtins/110/radians b/src/glsl/builtins/ir/radians
index 6a0f5d2e21..6a0f5d2e21 100644
--- a/src/glsl/builtins/110/radians
+++ b/src/glsl/builtins/ir/radians
diff --git a/src/glsl/builtins/110/reflect b/src/glsl/builtins/ir/reflect
index 8238fdc93f..8238fdc93f 100644
--- a/src/glsl/builtins/110/reflect
+++ b/src/glsl/builtins/ir/reflect
diff --git a/src/glsl/builtins/110/refract b/src/glsl/builtins/ir/refract
index 522ab41173..522ab41173 100644
--- a/src/glsl/builtins/110/refract
+++ b/src/glsl/builtins/ir/refract
diff --git a/src/glsl/builtins/130/sign b/src/glsl/builtins/ir/sign
index f86062a244..1f51718dab 100644
--- a/src/glsl/builtins/130/sign
+++ b/src/glsl/builtins/ir/sign
@@ -1,4 +1,24 @@
((function sign
+ (signature float
+ (parameters
+ (declare (in) float x))
+ ((return (expression float sign (var_ref x)))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 x))
+ ((return (expression vec2 sign (var_ref x)))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 x))
+ ((return (expression vec3 sign (var_ref x)))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 x))
+ ((return (expression vec4 sign (var_ref x)))))
+
(signature int
(parameters
(declare (in) int x))
diff --git a/src/glsl/builtins/110/sin b/src/glsl/builtins/ir/sin
index e6009d8ef1..e6009d8ef1 100644
--- a/src/glsl/builtins/110/sin
+++ b/src/glsl/builtins/ir/sin
diff --git a/src/glsl/builtins/130/sinh b/src/glsl/builtins/ir/sinh
index 7ad4f58e20..7ad4f58e20 100644
--- a/src/glsl/builtins/130/sinh
+++ b/src/glsl/builtins/ir/sinh
diff --git a/src/glsl/builtins/110/smoothstep b/src/glsl/builtins/ir/smoothstep
index 663eec6341..663eec6341 100644
--- a/src/glsl/builtins/110/smoothstep
+++ b/src/glsl/builtins/ir/smoothstep
diff --git a/src/glsl/builtins/110/sqrt b/src/glsl/builtins/ir/sqrt
index 0302d164ae..0302d164ae 100644
--- a/src/glsl/builtins/110/sqrt
+++ b/src/glsl/builtins/ir/sqrt
diff --git a/src/glsl/builtins/110/step b/src/glsl/builtins/ir/step
index ce6f435422..ce6f435422 100644
--- a/src/glsl/builtins/110/step
+++ b/src/glsl/builtins/ir/step
diff --git a/src/glsl/builtins/110/tan b/src/glsl/builtins/ir/tan
index 9979863185..9979863185 100644
--- a/src/glsl/builtins/110/tan
+++ b/src/glsl/builtins/ir/tan
diff --git a/src/glsl/builtins/130/tanh b/src/glsl/builtins/ir/tanh
index 3b7271bf77..3b7271bf77 100644
--- a/src/glsl/builtins/130/tanh
+++ b/src/glsl/builtins/ir/tanh
diff --git a/src/glsl/builtins/120/transpose b/src/glsl/builtins/ir/transpose
index 416a0ee467..416a0ee467 100644
--- a/src/glsl/builtins/120/transpose
+++ b/src/glsl/builtins/ir/transpose
diff --git a/src/glsl/builtins/profiles/110.frag b/src/glsl/builtins/profiles/110.frag
new file mode 100644
index 0000000000..25bc62c093
--- /dev/null
+++ b/src/glsl/builtins/profiles/110.frag
@@ -0,0 +1,364 @@
+#version 110
+/*
+ * 8.1 - Angle and Trigonometry Functions
+ */
+float radians(float degrees);
+vec2 radians(vec2 degrees);
+vec3 radians(vec3 degrees);
+vec4 radians(vec4 degrees);
+
+float degrees(float radians);
+vec2 degrees(vec2 radians);
+vec3 degrees(vec3 radians);
+vec4 degrees(vec4 radians);
+
+float sin(float angle);
+vec2 sin(vec2 angle);
+vec3 sin(vec3 angle);
+vec4 sin(vec4 angle);
+
+float cos(float angle);
+vec2 cos(vec2 angle);
+vec3 cos(vec3 angle);
+vec4 cos(vec4 angle);
+
+float tan(float angle);
+vec2 tan(vec2 angle);
+vec3 tan(vec3 angle);
+vec4 tan(vec4 angle);
+
+float asin(float angle);
+vec2 asin(vec2 angle);
+vec3 asin(vec3 angle);
+vec4 asin(vec4 angle);
+
+float acos(float angle);
+vec2 acos(vec2 angle);
+vec3 acos(vec3 angle);
+vec4 acos(vec4 angle);
+
+float atan(float y, float x);
+vec2 atan(vec2 y, vec2 x);
+vec3 atan(vec3 y, vec3 x);
+vec4 atan(vec4 y, vec4 x);
+
+float atan(float y_over_x);
+vec2 atan(vec2 y_over_x);
+vec3 atan(vec3 y_over_x);
+vec4 atan(vec4 y_over_x);
+
+/*
+ * 8.2 - Exponential Functions
+ */
+float pow(float x, float y);
+vec2 pow(vec2 x, vec2 y);
+vec3 pow(vec3 x, vec3 y);
+vec4 pow(vec4 x, vec4 y);
+
+float exp(float x);
+vec2 exp(vec2 x);
+vec3 exp(vec3 x);
+vec4 exp(vec4 x);
+
+float log(float x);
+vec2 log(vec2 x);
+vec3 log(vec3 x);
+vec4 log(vec4 x);
+
+float exp2(float x);
+vec2 exp2(vec2 x);
+vec3 exp2(vec3 x);
+vec4 exp2(vec4 x);
+
+float log2(float x);
+vec2 log2(vec2 x);
+vec3 log2(vec3 x);
+vec4 log2(vec4 x);
+
+float sqrt(float x);
+vec2 sqrt(vec2 x);
+vec3 sqrt(vec3 x);
+vec4 sqrt(vec4 x);
+
+float inversesqrt(float x);
+vec2 inversesqrt(vec2 x);
+vec3 inversesqrt(vec3 x);
+vec4 inversesqrt(vec4 x);
+
+/*
+ * 8.3 - Common Functions
+ */
+float abs(float x);
+vec2 abs(vec2 x);
+vec3 abs(vec3 x);
+vec4 abs(vec4 x);
+
+float sign(float x);
+vec2 sign(vec2 x);
+vec3 sign(vec3 x);
+vec4 sign(vec4 x);
+
+float floor(float x);
+vec2 floor(vec2 x);
+vec3 floor(vec3 x);
+vec4 floor(vec4 x);
+
+float ceil(float x);
+vec2 ceil(vec2 x);
+vec3 ceil(vec3 x);
+vec4 ceil(vec4 x);
+
+float fract(float x);
+vec2 fract(vec2 x);
+vec3 fract(vec3 x);
+vec4 fract(vec4 x);
+
+float mod(float x, float y);
+vec2 mod(vec2 x, float y);
+vec3 mod(vec3 x, float y);
+vec4 mod(vec4 x, float y);
+
+vec2 mod(vec2 x, vec2 y);
+vec3 mod(vec3 x, vec3 y);
+vec4 mod(vec4 x, vec4 y);
+
+float min(float x, float y);
+vec2 min(vec2 x, vec2 y);
+vec3 min(vec3 x, vec3 y);
+vec4 min(vec4 x, vec4 y);
+
+vec2 min(vec2 x, float y);
+vec3 min(vec3 x, float y);
+vec4 min(vec4 x, float y);
+
+float max(float x, float y);
+vec2 max(vec2 x, vec2 y);
+vec3 max(vec3 x, vec3 y);
+vec4 max(vec4 x, vec4 y);
+
+vec2 max(vec2 x, float y);
+vec3 max(vec3 x, float y);
+vec4 max(vec4 x, float y);
+
+float clamp(float x, float minVal, float maxVal);
+vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal);
+vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal);
+vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal);
+
+vec2 clamp(vec2 x, float minVal, float maxVal);
+vec3 clamp(vec3 x, float minVal, float maxVal);
+vec4 clamp(vec4 x, float minVal, float maxVal);
+
+float mix(float x, float y, float a);
+vec2 mix(vec2 x, vec2 y, vec2 a);
+vec3 mix(vec3 x, vec3 y, vec3 a);
+vec4 mix(vec4 x, vec4 y, vec4 a);
+
+vec2 mix(vec2 x, vec2 y, float a);
+vec3 mix(vec3 x, vec3 y, float a);
+vec4 mix(vec4 x, vec4 y, float a);
+
+float step(float edge, float x);
+vec2 step(vec2 edge, vec2 x);
+vec3 step(vec3 edge, vec3 x);
+vec4 step(vec4 edge, vec4 x);
+
+vec2 step(float edge, vec2 x);
+vec3 step(float edge, vec3 x);
+vec4 step(float edge, vec4 x);
+
+float smoothstep(float edge0, float edge1, float x);
+vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x);
+vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x);
+vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x);
+
+vec2 smoothstep(float edge0, float edge1, vec2 x);
+vec3 smoothstep(float edge0, float edge1, vec3 x);
+vec4 smoothstep(float edge0, float edge1, vec4 x);
+
+/*
+ * 8.4 - Geometric Functions
+ */
+float length(float x);
+float length(vec2 x);
+float length(vec3 x);
+float length(vec4 x);
+
+float distance(float p0, float p1);
+float distance(vec2 p0, vec2 p1);
+float distance(vec3 p0, vec3 p1);
+float distance(vec4 p0, vec4 p1);
+
+float dot(float x, float y);
+float dot(vec2 x, vec2 y);
+float dot(vec3 x, vec3 y);
+float dot(vec4 x, vec4 y);
+
+vec3 cross(vec3 x, vec3 y);
+
+float normalize(float x);
+vec2 normalize(vec2 x);
+vec3 normalize(vec3 x);
+vec4 normalize(vec4 x);
+
+float faceforward(float N, float I, float Nref);
+vec2 faceforward(vec2 N, vec2 I, vec2 Nref);
+vec3 faceforward(vec3 N, vec3 I, vec3 Nref);
+vec4 faceforward(vec4 N, vec4 I, vec4 Nref);
+
+float reflect(float I, float N);
+vec2 reflect(vec2 I, vec2 N);
+vec3 reflect(vec3 I, vec3 N);
+vec4 reflect(vec4 I, vec4 N);
+
+float refract(float I, float N, float eta);
+vec2 refract(vec2 I, vec2 N, float eta);
+vec3 refract(vec3 I, vec3 N, float eta);
+vec4 refract(vec4 I, vec4 N, float eta);
+
+
+/*
+ * 8.5 - Matrix Functions
+ */
+mat2 matrixCompMult(mat2 x, mat2 y);
+mat3 matrixCompMult(mat3 x, mat3 y);
+mat4 matrixCompMult(mat4 x, mat4 y);
+
+/*
+ * 8.6 - Vector Relational Functions
+ */
+bvec2 lessThan( vec2 x, vec2 y);
+bvec3 lessThan( vec3 x, vec3 y);
+bvec4 lessThan( vec4 x, vec4 y);
+bvec2 lessThan(ivec2 x, ivec2 y);
+bvec3 lessThan(ivec3 x, ivec3 y);
+bvec4 lessThan(ivec4 x, ivec4 y);
+
+bvec2 lessThanEqual( vec2 x, vec2 y);
+bvec3 lessThanEqual( vec3 x, vec3 y);
+bvec4 lessThanEqual( vec4 x, vec4 y);
+bvec2 lessThanEqual(ivec2 x, ivec2 y);
+bvec3 lessThanEqual(ivec3 x, ivec3 y);
+bvec4 lessThanEqual(ivec4 x, ivec4 y);
+
+bvec2 greaterThan( vec2 x, vec2 y);
+bvec3 greaterThan( vec3 x, vec3 y);
+bvec4 greaterThan( vec4 x, vec4 y);
+bvec2 greaterThan(ivec2 x, ivec2 y);
+bvec3 greaterThan(ivec3 x, ivec3 y);
+bvec4 greaterThan(ivec4 x, ivec4 y);
+
+bvec2 greaterThanEqual( vec2 x, vec2 y);
+bvec3 greaterThanEqual( vec3 x, vec3 y);
+bvec4 greaterThanEqual( vec4 x, vec4 y);
+bvec2 greaterThanEqual(ivec2 x, ivec2 y);
+bvec3 greaterThanEqual(ivec3 x, ivec3 y);
+bvec4 greaterThanEqual(ivec4 x, ivec4 y);
+
+bvec2 equal( vec2 x, vec2 y);
+bvec3 equal( vec3 x, vec3 y);
+bvec4 equal( vec4 x, vec4 y);
+bvec2 equal(ivec2 x, ivec2 y);
+bvec3 equal(ivec3 x, ivec3 y);
+bvec4 equal(ivec4 x, ivec4 y);
+bvec2 equal(bvec2 x, bvec2 y);
+bvec3 equal(bvec3 x, bvec3 y);
+bvec4 equal(bvec4 x, bvec4 y);
+
+bvec2 notEqual( vec2 x, vec2 y);
+bvec3 notEqual( vec3 x, vec3 y);
+bvec4 notEqual( vec4 x, vec4 y);
+bvec2 notEqual(ivec2 x, ivec2 y);
+bvec3 notEqual(ivec3 x, ivec3 y);
+bvec4 notEqual(ivec4 x, ivec4 y);
+bvec2 notEqual(bvec2 x, bvec2 y);
+bvec3 notEqual(bvec3 x, bvec3 y);
+bvec4 notEqual(bvec4 x, bvec4 y);
+
+bool any(bvec2 x);
+bool any(bvec3 x);
+bool any(bvec4 x);
+
+bool all(bvec2 x);
+bool all(bvec3 x);
+bool all(bvec4 x);
+
+bvec2 not(bvec2 x);
+bvec3 not(bvec3 x);
+bvec4 not(bvec4 x);
+
+/*
+ * 8.7 - Texture Lookup Functions
+ */
+vec4 texture1D (sampler1D sampler, float coord);
+vec4 texture1DProj (sampler1D sampler, vec2 coord);
+vec4 texture1DProj (sampler1D sampler, vec4 coord);
+vec4 texture1D (sampler1D sampler, float coord, float bias);
+vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias);
+vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias);
+
+vec4 texture2D (sampler2D sampler, vec2 coord);
+vec4 texture2DProj (sampler2D sampler, vec3 coord);
+vec4 texture2DProj (sampler2D sampler, vec4 coord);
+vec4 texture2D (sampler2D sampler, vec2 coord, float bias);
+vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias);
+vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias);
+
+vec4 texture3D (sampler3D sampler, vec3 coord);
+vec4 texture3DProj (sampler3D sampler, vec4 coord);
+vec4 texture3D (sampler3D sampler, vec3 coord, float bias);
+vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias);
+
+vec4 textureCube (samplerCube sampler, vec3 coord);
+vec4 textureCube (samplerCube sampler, vec3 coord, float bias);
+
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord);
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord);
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord);
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord);
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias);
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias);
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias);
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias);
+
+
+/*
+ * 8.8 - Fragment Processing Functions
+ */
+float dFdx(float p);
+vec2 dFdx(vec2 p);
+vec3 dFdx(vec3 p);
+vec4 dFdx(vec4 p);
+
+float dFdy(float p);
+vec2 dFdy(vec2 p);
+vec3 dFdy(vec3 p);
+vec4 dFdy(vec4 p);
+
+float fwidth(float p);
+vec2 fwidth(vec2 p);
+vec3 fwidth(vec3 p);
+vec4 fwidth(vec4 p);
+
+/*
+ * 8.9 - Noise Functions
+ */
+float noise1(float x);
+float noise1(vec2 x);
+float noise1(vec3 x);
+float noise1(vec4 x);
+
+vec2 noise2(float x);
+vec2 noise2(vec2 x);
+vec2 noise2(vec3 x);
+vec2 noise2(vec4 x);
+
+vec3 noise3(float x);
+vec3 noise3(vec2 x);
+vec3 noise3(vec3 x);
+vec3 noise3(vec4 x);
+
+vec4 noise4(float x);
+vec4 noise4(vec2 x);
+vec4 noise4(vec3 x);
+vec4 noise4(vec4 x);
diff --git a/src/glsl/builtins/profiles/110.vert b/src/glsl/builtins/profiles/110.vert
new file mode 100644
index 0000000000..545e59c539
--- /dev/null
+++ b/src/glsl/builtins/profiles/110.vert
@@ -0,0 +1,351 @@
+#version 110
+/*
+ * 8.1 - Angle and Trigonometry Functions
+ */
+float radians(float degrees);
+vec2 radians(vec2 degrees);
+vec3 radians(vec3 degrees);
+vec4 radians(vec4 degrees);
+
+float degrees(float radians);
+vec2 degrees(vec2 radians);
+vec3 degrees(vec3 radians);
+vec4 degrees(vec4 radians);
+
+float sin(float angle);
+vec2 sin(vec2 angle);
+vec3 sin(vec3 angle);
+vec4 sin(vec4 angle);
+
+float cos(float angle);
+vec2 cos(vec2 angle);
+vec3 cos(vec3 angle);
+vec4 cos(vec4 angle);
+
+float tan(float angle);
+vec2 tan(vec2 angle);
+vec3 tan(vec3 angle);
+vec4 tan(vec4 angle);
+
+float asin(float angle);
+vec2 asin(vec2 angle);
+vec3 asin(vec3 angle);
+vec4 asin(vec4 angle);
+
+float acos(float angle);
+vec2 acos(vec2 angle);
+vec3 acos(vec3 angle);
+vec4 acos(vec4 angle);
+
+float atan(float y, float x);
+vec2 atan(vec2 y, vec2 x);
+vec3 atan(vec3 y, vec3 x);
+vec4 atan(vec4 y, vec4 x);
+
+float atan(float y_over_x);
+vec2 atan(vec2 y_over_x);
+vec3 atan(vec3 y_over_x);
+vec4 atan(vec4 y_over_x);
+
+/*
+ * 8.2 - Exponential Functions
+ */
+float pow(float x, float y);
+vec2 pow(vec2 x, vec2 y);
+vec3 pow(vec3 x, vec3 y);
+vec4 pow(vec4 x, vec4 y);
+
+float exp(float x);
+vec2 exp(vec2 x);
+vec3 exp(vec3 x);
+vec4 exp(vec4 x);
+
+float log(float x);
+vec2 log(vec2 x);
+vec3 log(vec3 x);
+vec4 log(vec4 x);
+
+float exp2(float x);
+vec2 exp2(vec2 x);
+vec3 exp2(vec3 x);
+vec4 exp2(vec4 x);
+
+float log2(float x);
+vec2 log2(vec2 x);
+vec3 log2(vec3 x);
+vec4 log2(vec4 x);
+
+float sqrt(float x);
+vec2 sqrt(vec2 x);
+vec3 sqrt(vec3 x);
+vec4 sqrt(vec4 x);
+
+float inversesqrt(float x);
+vec2 inversesqrt(vec2 x);
+vec3 inversesqrt(vec3 x);
+vec4 inversesqrt(vec4 x);
+
+/*
+ * 8.3 - Common Functions
+ */
+float abs(float x);
+vec2 abs(vec2 x);
+vec3 abs(vec3 x);
+vec4 abs(vec4 x);
+
+float sign(float x);
+vec2 sign(vec2 x);
+vec3 sign(vec3 x);
+vec4 sign(vec4 x);
+
+float floor(float x);
+vec2 floor(vec2 x);
+vec3 floor(vec3 x);
+vec4 floor(vec4 x);
+
+float ceil(float x);
+vec2 ceil(vec2 x);
+vec3 ceil(vec3 x);
+vec4 ceil(vec4 x);
+
+float fract(float x);
+vec2 fract(vec2 x);
+vec3 fract(vec3 x);
+vec4 fract(vec4 x);
+
+float mod(float x, float y);
+vec2 mod(vec2 x, float y);
+vec3 mod(vec3 x, float y);
+vec4 mod(vec4 x, float y);
+
+vec2 mod(vec2 x, vec2 y);
+vec3 mod(vec3 x, vec3 y);
+vec4 mod(vec4 x, vec4 y);
+
+float min(float x, float y);
+vec2 min(vec2 x, vec2 y);
+vec3 min(vec3 x, vec3 y);
+vec4 min(vec4 x, vec4 y);
+
+vec2 min(vec2 x, float y);
+vec3 min(vec3 x, float y);
+vec4 min(vec4 x, float y);
+
+float max(float x, float y);
+vec2 max(vec2 x, vec2 y);
+vec3 max(vec3 x, vec3 y);
+vec4 max(vec4 x, vec4 y);
+
+vec2 max(vec2 x, float y);
+vec3 max(vec3 x, float y);
+vec4 max(vec4 x, float y);
+
+float clamp(float x, float minVal, float maxVal);
+vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal);
+vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal);
+vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal);
+
+vec2 clamp(vec2 x, float minVal, float maxVal);
+vec3 clamp(vec3 x, float minVal, float maxVal);
+vec4 clamp(vec4 x, float minVal, float maxVal);
+
+float mix(float x, float y, float a);
+vec2 mix(vec2 x, vec2 y, vec2 a);
+vec3 mix(vec3 x, vec3 y, vec3 a);
+vec4 mix(vec4 x, vec4 y, vec4 a);
+
+vec2 mix(vec2 x, vec2 y, float a);
+vec3 mix(vec3 x, vec3 y, float a);
+vec4 mix(vec4 x, vec4 y, float a);
+
+float step(float edge, float x);
+vec2 step(vec2 edge, vec2 x);
+vec3 step(vec3 edge, vec3 x);
+vec4 step(vec4 edge, vec4 x);
+
+vec2 step(float edge, vec2 x);
+vec3 step(float edge, vec3 x);
+vec4 step(float edge, vec4 x);
+
+float smoothstep(float edge0, float edge1, float x);
+vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x);
+vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x);
+vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x);
+
+vec2 smoothstep(float edge0, float edge1, vec2 x);
+vec3 smoothstep(float edge0, float edge1, vec3 x);
+vec4 smoothstep(float edge0, float edge1, vec4 x);
+
+/*
+ * 8.4 - Geometric Functions
+ */
+float length(float x);
+float length(vec2 x);
+float length(vec3 x);
+float length(vec4 x);
+
+float distance(float p0, float p1);
+float distance(vec2 p0, vec2 p1);
+float distance(vec3 p0, vec3 p1);
+float distance(vec4 p0, vec4 p1);
+
+float dot(float x, float y);
+float dot(vec2 x, vec2 y);
+float dot(vec3 x, vec3 y);
+float dot(vec4 x, vec4 y);
+
+vec3 cross(vec3 x, vec3 y);
+
+float normalize(float x);
+vec2 normalize(vec2 x);
+vec3 normalize(vec3 x);
+vec4 normalize(vec4 x);
+
+vec4 ftransform();
+
+float faceforward(float N, float I, float Nref);
+vec2 faceforward(vec2 N, vec2 I, vec2 Nref);
+vec3 faceforward(vec3 N, vec3 I, vec3 Nref);
+vec4 faceforward(vec4 N, vec4 I, vec4 Nref);
+
+float reflect(float I, float N);
+vec2 reflect(vec2 I, vec2 N);
+vec3 reflect(vec3 I, vec3 N);
+vec4 reflect(vec4 I, vec4 N);
+
+float refract(float I, float N, float eta);
+vec2 refract(vec2 I, vec2 N, float eta);
+vec3 refract(vec3 I, vec3 N, float eta);
+vec4 refract(vec4 I, vec4 N, float eta);
+
+
+/*
+ * 8.5 - Matrix Functions
+ */
+mat2 matrixCompMult(mat2 x, mat2 y);
+mat3 matrixCompMult(mat3 x, mat3 y);
+mat4 matrixCompMult(mat4 x, mat4 y);
+
+/*
+ * 8.6 - Vector Relational Functions
+ */
+bvec2 lessThan( vec2 x, vec2 y);
+bvec3 lessThan( vec3 x, vec3 y);
+bvec4 lessThan( vec4 x, vec4 y);
+bvec2 lessThan(ivec2 x, ivec2 y);
+bvec3 lessThan(ivec3 x, ivec3 y);
+bvec4 lessThan(ivec4 x, ivec4 y);
+
+bvec2 lessThanEqual( vec2 x, vec2 y);
+bvec3 lessThanEqual( vec3 x, vec3 y);
+bvec4 lessThanEqual( vec4 x, vec4 y);
+bvec2 lessThanEqual(ivec2 x, ivec2 y);
+bvec3 lessThanEqual(ivec3 x, ivec3 y);
+bvec4 lessThanEqual(ivec4 x, ivec4 y);
+
+bvec2 greaterThan( vec2 x, vec2 y);
+bvec3 greaterThan( vec3 x, vec3 y);
+bvec4 greaterThan( vec4 x, vec4 y);
+bvec2 greaterThan(ivec2 x, ivec2 y);
+bvec3 greaterThan(ivec3 x, ivec3 y);
+bvec4 greaterThan(ivec4 x, ivec4 y);
+
+bvec2 greaterThanEqual( vec2 x, vec2 y);
+bvec3 greaterThanEqual( vec3 x, vec3 y);
+bvec4 greaterThanEqual( vec4 x, vec4 y);
+bvec2 greaterThanEqual(ivec2 x, ivec2 y);
+bvec3 greaterThanEqual(ivec3 x, ivec3 y);
+bvec4 greaterThanEqual(ivec4 x, ivec4 y);
+
+bvec2 equal( vec2 x, vec2 y);
+bvec3 equal( vec3 x, vec3 y);
+bvec4 equal( vec4 x, vec4 y);
+bvec2 equal(ivec2 x, ivec2 y);
+bvec3 equal(ivec3 x, ivec3 y);
+bvec4 equal(ivec4 x, ivec4 y);
+bvec2 equal(bvec2 x, bvec2 y);
+bvec3 equal(bvec3 x, bvec3 y);
+bvec4 equal(bvec4 x, bvec4 y);
+
+bvec2 notEqual( vec2 x, vec2 y);
+bvec3 notEqual( vec3 x, vec3 y);
+bvec4 notEqual( vec4 x, vec4 y);
+bvec2 notEqual(ivec2 x, ivec2 y);
+bvec3 notEqual(ivec3 x, ivec3 y);
+bvec4 notEqual(ivec4 x, ivec4 y);
+bvec2 notEqual(bvec2 x, bvec2 y);
+bvec3 notEqual(bvec3 x, bvec3 y);
+bvec4 notEqual(bvec4 x, bvec4 y);
+
+bool any(bvec2 x);
+bool any(bvec3 x);
+bool any(bvec4 x);
+
+bool all(bvec2 x);
+bool all(bvec3 x);
+bool all(bvec4 x);
+
+bvec2 not(bvec2 x);
+bvec3 not(bvec3 x);
+bvec4 not(bvec4 x);
+
+/*
+ * 8.7 - Texture Lookup Functions
+ */
+vec4 texture1D (sampler1D sampler, float coord);
+vec4 texture1DProj (sampler1D sampler, vec2 coord);
+vec4 texture1DProj (sampler1D sampler, vec4 coord);
+vec4 texture1DLod (sampler1D sampler, float coord, float lod);
+vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod);
+vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod);
+
+vec4 texture2D (sampler2D sampler, vec2 coord);
+vec4 texture2DProj (sampler2D sampler, vec3 coord);
+vec4 texture2DProj (sampler2D sampler, vec4 coord);
+vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod);
+vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod);
+vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod);
+
+vec4 texture3D (sampler3D sampler, vec3 coord);
+vec4 texture3DProj (sampler3D sampler, vec4 coord);
+vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod);
+vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod);
+
+vec4 textureCube (samplerCube sampler, vec3 coord);
+vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod);
+
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord);
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord);
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord);
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord);
+vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod);
+vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod);
+vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod);
+vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod);
+
+/*
+ * 8.8 - Fragment Processing Functions (none in vertex shader)
+ */
+
+/*
+ * 8.9 - Noise Functions
+ */
+float noise1(float x);
+float noise1(vec2 x);
+float noise1(vec3 x);
+float noise1(vec4 x);
+
+vec2 noise2(float x);
+vec2 noise2(vec2 x);
+vec2 noise2(vec3 x);
+vec2 noise2(vec4 x);
+
+vec3 noise3(float x);
+vec3 noise3(vec2 x);
+vec3 noise3(vec3 x);
+vec3 noise3(vec4 x);
+
+vec4 noise4(float x);
+vec4 noise4(vec2 x);
+vec4 noise4(vec3 x);
+vec4 noise4(vec4 x);
diff --git a/src/glsl/builtins/profiles/120.frag b/src/glsl/builtins/profiles/120.frag
new file mode 100644
index 0000000000..a207435f33
--- /dev/null
+++ b/src/glsl/builtins/profiles/120.frag
@@ -0,0 +1,396 @@
+#version 120
+/*
+ * 8.1 - Angle and Trigonometry Functions
+ */
+float radians(float degrees);
+vec2 radians(vec2 degrees);
+vec3 radians(vec3 degrees);
+vec4 radians(vec4 degrees);
+
+float degrees(float radians);
+vec2 degrees(vec2 radians);
+vec3 degrees(vec3 radians);
+vec4 degrees(vec4 radians);
+
+float sin(float angle);
+vec2 sin(vec2 angle);
+vec3 sin(vec3 angle);
+vec4 sin(vec4 angle);
+
+float cos(float angle);
+vec2 cos(vec2 angle);
+vec3 cos(vec3 angle);
+vec4 cos(vec4 angle);
+
+float tan(float angle);
+vec2 tan(vec2 angle);
+vec3 tan(vec3 angle);
+vec4 tan(vec4 angle);
+
+float asin(float angle);
+vec2 asin(vec2 angle);
+vec3 asin(vec3 angle);
+vec4 asin(vec4 angle);
+
+float acos(float angle);
+vec2 acos(vec2 angle);
+vec3 acos(vec3 angle);
+vec4 acos(vec4 angle);
+
+float atan(float y, float x);
+vec2 atan(vec2 y, vec2 x);
+vec3 atan(vec3 y, vec3 x);
+vec4 atan(vec4 y, vec4 x);
+
+float atan(float y_over_x);
+vec2 atan(vec2 y_over_x);
+vec3 atan(vec3 y_over_x);
+vec4 atan(vec4 y_over_x);
+
+/*
+ * 8.2 - Exponential Functions
+ */
+float pow(float x, float y);
+vec2 pow(vec2 x, vec2 y);
+vec3 pow(vec3 x, vec3 y);
+vec4 pow(vec4 x, vec4 y);
+
+float exp(float x);
+vec2 exp(vec2 x);
+vec3 exp(vec3 x);
+vec4 exp(vec4 x);
+
+float log(float x);
+vec2 log(vec2 x);
+vec3 log(vec3 x);
+vec4 log(vec4 x);
+
+float exp2(float x);
+vec2 exp2(vec2 x);
+vec3 exp2(vec3 x);
+vec4 exp2(vec4 x);
+
+float log2(float x);
+vec2 log2(vec2 x);
+vec3 log2(vec3 x);
+vec4 log2(vec4 x);
+
+float sqrt(float x);
+vec2 sqrt(vec2 x);
+vec3 sqrt(vec3 x);
+vec4 sqrt(vec4 x);
+
+float inversesqrt(float x);
+vec2 inversesqrt(vec2 x);
+vec3 inversesqrt(vec3 x);
+vec4 inversesqrt(vec4 x);
+
+/*
+ * 8.3 - Common Functions
+ */
+float abs(float x);
+vec2 abs(vec2 x);
+vec3 abs(vec3 x);
+vec4 abs(vec4 x);
+
+float sign(float x);
+vec2 sign(vec2 x);
+vec3 sign(vec3 x);
+vec4 sign(vec4 x);
+
+float floor(float x);
+vec2 floor(vec2 x);
+vec3 floor(vec3 x);
+vec4 floor(vec4 x);
+
+float ceil(float x);
+vec2 ceil(vec2 x);
+vec3 ceil(vec3 x);
+vec4 ceil(vec4 x);
+
+float fract(float x);
+vec2 fract(vec2 x);
+vec3 fract(vec3 x);
+vec4 fract(vec4 x);
+
+float mod(float x, float y);
+vec2 mod(vec2 x, float y);
+vec3 mod(vec3 x, float y);
+vec4 mod(vec4 x, float y);
+
+vec2 mod(vec2 x, vec2 y);
+vec3 mod(vec3 x, vec3 y);
+vec4 mod(vec4 x, vec4 y);
+
+float min(float x, float y);
+vec2 min(vec2 x, vec2 y);
+vec3 min(vec3 x, vec3 y);
+vec4 min(vec4 x, vec4 y);
+
+vec2 min(vec2 x, float y);
+vec3 min(vec3 x, float y);
+vec4 min(vec4 x, float y);
+
+float max(float x, float y);
+vec2 max(vec2 x, vec2 y);
+vec3 max(vec3 x, vec3 y);
+vec4 max(vec4 x, vec4 y);
+
+vec2 max(vec2 x, float y);
+vec3 max(vec3 x, float y);
+vec4 max(vec4 x, float y);
+
+float clamp(float x, float minVal, float maxVal);
+vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal);
+vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal);
+vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal);
+
+vec2 clamp(vec2 x, float minVal, float maxVal);
+vec3 clamp(vec3 x, float minVal, float maxVal);
+vec4 clamp(vec4 x, float minVal, float maxVal);
+
+float mix(float x, float y, float a);
+vec2 mix(vec2 x, vec2 y, vec2 a);
+vec3 mix(vec3 x, vec3 y, vec3 a);
+vec4 mix(vec4 x, vec4 y, vec4 a);
+
+vec2 mix(vec2 x, vec2 y, float a);
+vec3 mix(vec3 x, vec3 y, float a);
+vec4 mix(vec4 x, vec4 y, float a);
+
+float step(float edge, float x);
+vec2 step(vec2 edge, vec2 x);
+vec3 step(vec3 edge, vec3 x);
+vec4 step(vec4 edge, vec4 x);
+
+vec2 step(float edge, vec2 x);
+vec3 step(float edge, vec3 x);
+vec4 step(float edge, vec4 x);
+
+float smoothstep(float edge0, float edge1, float x);
+vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x);
+vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x);
+vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x);
+
+vec2 smoothstep(float edge0, float edge1, vec2 x);
+vec3 smoothstep(float edge0, float edge1, vec3 x);
+vec4 smoothstep(float edge0, float edge1, vec4 x);
+
+/*
+ * 8.4 - Geometric Functions
+ */
+float length(float x);
+float length(vec2 x);
+float length(vec3 x);
+float length(vec4 x);
+
+float distance(float p0, float p1);
+float distance(vec2 p0, vec2 p1);
+float distance(vec3 p0, vec3 p1);
+float distance(vec4 p0, vec4 p1);
+
+float dot(float x, float y);
+float dot(vec2 x, vec2 y);
+float dot(vec3 x, vec3 y);
+float dot(vec4 x, vec4 y);
+
+vec3 cross(vec3 x, vec3 y);
+
+float normalize(float x);
+vec2 normalize(vec2 x);
+vec3 normalize(vec3 x);
+vec4 normalize(vec4 x);
+
+float faceforward(float N, float I, float Nref);
+vec2 faceforward(vec2 N, vec2 I, vec2 Nref);
+vec3 faceforward(vec3 N, vec3 I, vec3 Nref);
+vec4 faceforward(vec4 N, vec4 I, vec4 Nref);
+
+float reflect(float I, float N);
+vec2 reflect(vec2 I, vec2 N);
+vec3 reflect(vec3 I, vec3 N);
+vec4 reflect(vec4 I, vec4 N);
+
+float refract(float I, float N, float eta);
+vec2 refract(vec2 I, vec2 N, float eta);
+vec3 refract(vec3 I, vec3 N, float eta);
+vec4 refract(vec4 I, vec4 N, float eta);
+
+
+/*
+ * 8.5 - Matrix Functions
+ */
+mat2 matrixCompMult(mat2 x, mat2 y);
+mat3 matrixCompMult(mat3 x, mat3 y);
+mat4 matrixCompMult(mat4 x, mat4 y);
+mat2x3 matrixCompMult(mat2x3 x, mat2x3 y);
+mat2x4 matrixCompMult(mat2x4 x, mat2x4 y);
+mat3x2 matrixCompMult(mat3x2 x, mat3x2 y);
+mat3x4 matrixCompMult(mat3x4 x, mat3x4 y);
+mat4x2 matrixCompMult(mat4x2 x, mat4x2 y);
+mat4x3 matrixCompMult(mat4x3 x, mat4x3 y);
+
+mat2 outerProduct(vec2 c, vec2 r);
+mat3 outerProduct(vec3 c, vec3 r);
+mat4 outerProduct(vec4 c, vec4 r);
+
+mat2x3 outerProduct(vec3 c, vec2 r);
+mat3x2 outerProduct(vec2 c, vec3 r);
+
+mat2x4 outerProduct(vec4 c, vec2 r);
+mat4x2 outerProduct(vec2 c, vec4 r);
+
+mat3x4 outerProduct(vec4 c, vec3 r);
+mat4x3 outerProduct(vec3 c, vec4 r);
+
+mat2 transpose(mat2 m);
+mat3 transpose(mat3 m);
+mat4 transpose(mat4 m);
+
+mat2x3 transpose(mat3x2 m);
+mat3x2 transpose(mat2x3 m);
+
+mat2x4 transpose(mat4x2 m);
+mat4x2 transpose(mat2x4 m);
+
+mat3x4 transpose(mat4x3 m);
+mat4x3 transpose(mat3x4 m);
+
+/*
+ * 8.6 - Vector Relational Functions
+ */
+bvec2 lessThan( vec2 x, vec2 y);
+bvec3 lessThan( vec3 x, vec3 y);
+bvec4 lessThan( vec4 x, vec4 y);
+bvec2 lessThan(ivec2 x, ivec2 y);
+bvec3 lessThan(ivec3 x, ivec3 y);
+bvec4 lessThan(ivec4 x, ivec4 y);
+
+bvec2 lessThanEqual( vec2 x, vec2 y);
+bvec3 lessThanEqual( vec3 x, vec3 y);
+bvec4 lessThanEqual( vec4 x, vec4 y);
+bvec2 lessThanEqual(ivec2 x, ivec2 y);
+bvec3 lessThanEqual(ivec3 x, ivec3 y);
+bvec4 lessThanEqual(ivec4 x, ivec4 y);
+
+bvec2 greaterThan( vec2 x, vec2 y);
+bvec3 greaterThan( vec3 x, vec3 y);
+bvec4 greaterThan( vec4 x, vec4 y);
+bvec2 greaterThan(ivec2 x, ivec2 y);
+bvec3 greaterThan(ivec3 x, ivec3 y);
+bvec4 greaterThan(ivec4 x, ivec4 y);
+
+bvec2 greaterThanEqual( vec2 x, vec2 y);
+bvec3 greaterThanEqual( vec3 x, vec3 y);
+bvec4 greaterThanEqual( vec4 x, vec4 y);
+bvec2 greaterThanEqual(ivec2 x, ivec2 y);
+bvec3 greaterThanEqual(ivec3 x, ivec3 y);
+bvec4 greaterThanEqual(ivec4 x, ivec4 y);
+
+bvec2 equal( vec2 x, vec2 y);
+bvec3 equal( vec3 x, vec3 y);
+bvec4 equal( vec4 x, vec4 y);
+bvec2 equal(ivec2 x, ivec2 y);
+bvec3 equal(ivec3 x, ivec3 y);
+bvec4 equal(ivec4 x, ivec4 y);
+bvec2 equal(bvec2 x, bvec2 y);
+bvec3 equal(bvec3 x, bvec3 y);
+bvec4 equal(bvec4 x, bvec4 y);
+
+bvec2 notEqual( vec2 x, vec2 y);
+bvec3 notEqual( vec3 x, vec3 y);
+bvec4 notEqual( vec4 x, vec4 y);
+bvec2 notEqual(ivec2 x, ivec2 y);
+bvec3 notEqual(ivec3 x, ivec3 y);
+bvec4 notEqual(ivec4 x, ivec4 y);
+bvec2 notEqual(bvec2 x, bvec2 y);
+bvec3 notEqual(bvec3 x, bvec3 y);
+bvec4 notEqual(bvec4 x, bvec4 y);
+
+bool any(bvec2 x);
+bool any(bvec3 x);
+bool any(bvec4 x);
+
+bool all(bvec2 x);
+bool all(bvec3 x);
+bool all(bvec4 x);
+
+bvec2 not(bvec2 x);
+bvec3 not(bvec3 x);
+bvec4 not(bvec4 x);
+
+/*
+ * 8.7 - Texture Lookup Functions
+ */
+vec4 texture1D (sampler1D sampler, float coord);
+vec4 texture1DProj (sampler1D sampler, vec2 coord);
+vec4 texture1DProj (sampler1D sampler, vec4 coord);
+vec4 texture1D (sampler1D sampler, float coord, float bias);
+vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias);
+vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias);
+
+vec4 texture2D (sampler2D sampler, vec2 coord);
+vec4 texture2DProj (sampler2D sampler, vec3 coord);
+vec4 texture2DProj (sampler2D sampler, vec4 coord);
+vec4 texture2D (sampler2D sampler, vec2 coord, float bias);
+vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias);
+vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias);
+
+vec4 texture3D (sampler3D sampler, vec3 coord);
+vec4 texture3DProj (sampler3D sampler, vec4 coord);
+vec4 texture3D (sampler3D sampler, vec3 coord, float bias);
+vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias);
+
+vec4 textureCube (samplerCube sampler, vec3 coord);
+vec4 textureCube (samplerCube sampler, vec3 coord, float bias);
+
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord);
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord);
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord);
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord);
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias);
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias);
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias);
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias);
+
+
+/*
+ * 8.8 - Fragment Processing Functions
+ */
+float dFdx(float p);
+vec2 dFdx(vec2 p);
+vec3 dFdx(vec3 p);
+vec4 dFdx(vec4 p);
+
+float dFdy(float p);
+vec2 dFdy(vec2 p);
+vec3 dFdy(vec3 p);
+vec4 dFdy(vec4 p);
+
+float fwidth(float p);
+vec2 fwidth(vec2 p);
+vec3 fwidth(vec3 p);
+vec4 fwidth(vec4 p);
+
+/*
+ * 8.9 - Noise Functions
+ */
+float noise1(float x);
+float noise1(vec2 x);
+float noise1(vec3 x);
+float noise1(vec4 x);
+
+vec2 noise2(float x);
+vec2 noise2(vec2 x);
+vec2 noise2(vec3 x);
+vec2 noise2(vec4 x);
+
+vec3 noise3(float x);
+vec3 noise3(vec2 x);
+vec3 noise3(vec3 x);
+vec3 noise3(vec4 x);
+
+vec4 noise4(float x);
+vec4 noise4(vec2 x);
+vec4 noise4(vec3 x);
+vec4 noise4(vec4 x);
diff --git a/src/glsl/builtins/profiles/120.vert b/src/glsl/builtins/profiles/120.vert
new file mode 100644
index 0000000000..e14c931647
--- /dev/null
+++ b/src/glsl/builtins/profiles/120.vert
@@ -0,0 +1,383 @@
+#version 120
+/*
+ * 8.1 - Angle and Trigonometry Functions
+ */
+float radians(float degrees);
+vec2 radians(vec2 degrees);
+vec3 radians(vec3 degrees);
+vec4 radians(vec4 degrees);
+
+float degrees(float radians);
+vec2 degrees(vec2 radians);
+vec3 degrees(vec3 radians);
+vec4 degrees(vec4 radians);
+
+float sin(float angle);
+vec2 sin(vec2 angle);
+vec3 sin(vec3 angle);
+vec4 sin(vec4 angle);
+
+float cos(float angle);
+vec2 cos(vec2 angle);
+vec3 cos(vec3 angle);
+vec4 cos(vec4 angle);
+
+float tan(float angle);
+vec2 tan(vec2 angle);
+vec3 tan(vec3 angle);
+vec4 tan(vec4 angle);
+
+float asin(float angle);
+vec2 asin(vec2 angle);
+vec3 asin(vec3 angle);
+vec4 asin(vec4 angle);
+
+float acos(float angle);
+vec2 acos(vec2 angle);
+vec3 acos(vec3 angle);
+vec4 acos(vec4 angle);
+
+float atan(float y, float x);
+vec2 atan(vec2 y, vec2 x);
+vec3 atan(vec3 y, vec3 x);
+vec4 atan(vec4 y, vec4 x);
+
+float atan(float y_over_x);
+vec2 atan(vec2 y_over_x);
+vec3 atan(vec3 y_over_x);
+vec4 atan(vec4 y_over_x);
+
+/*
+ * 8.2 - Exponential Functions
+ */
+float pow(float x, float y);
+vec2 pow(vec2 x, vec2 y);
+vec3 pow(vec3 x, vec3 y);
+vec4 pow(vec4 x, vec4 y);
+
+float exp(float x);
+vec2 exp(vec2 x);
+vec3 exp(vec3 x);
+vec4 exp(vec4 x);
+
+float log(float x);
+vec2 log(vec2 x);
+vec3 log(vec3 x);
+vec4 log(vec4 x);
+
+float exp2(float x);
+vec2 exp2(vec2 x);
+vec3 exp2(vec3 x);
+vec4 exp2(vec4 x);
+
+float log2(float x);
+vec2 log2(vec2 x);
+vec3 log2(vec3 x);
+vec4 log2(vec4 x);
+
+float sqrt(float x);
+vec2 sqrt(vec2 x);
+vec3 sqrt(vec3 x);
+vec4 sqrt(vec4 x);
+
+float inversesqrt(float x);
+vec2 inversesqrt(vec2 x);
+vec3 inversesqrt(vec3 x);
+vec4 inversesqrt(vec4 x);
+
+/*
+ * 8.3 - Common Functions
+ */
+float abs(float x);
+vec2 abs(vec2 x);
+vec3 abs(vec3 x);
+vec4 abs(vec4 x);
+
+float sign(float x);
+vec2 sign(vec2 x);
+vec3 sign(vec3 x);
+vec4 sign(vec4 x);
+
+float floor(float x);
+vec2 floor(vec2 x);
+vec3 floor(vec3 x);
+vec4 floor(vec4 x);
+
+float ceil(float x);
+vec2 ceil(vec2 x);
+vec3 ceil(vec3 x);
+vec4 ceil(vec4 x);
+
+float fract(float x);
+vec2 fract(vec2 x);
+vec3 fract(vec3 x);
+vec4 fract(vec4 x);
+
+float mod(float x, float y);
+vec2 mod(vec2 x, float y);
+vec3 mod(vec3 x, float y);
+vec4 mod(vec4 x, float y);
+
+vec2 mod(vec2 x, vec2 y);
+vec3 mod(vec3 x, vec3 y);
+vec4 mod(vec4 x, vec4 y);
+
+float min(float x, float y);
+vec2 min(vec2 x, vec2 y);
+vec3 min(vec3 x, vec3 y);
+vec4 min(vec4 x, vec4 y);
+
+vec2 min(vec2 x, float y);
+vec3 min(vec3 x, float y);
+vec4 min(vec4 x, float y);
+
+float max(float x, float y);
+vec2 max(vec2 x, vec2 y);
+vec3 max(vec3 x, vec3 y);
+vec4 max(vec4 x, vec4 y);
+
+vec2 max(vec2 x, float y);
+vec3 max(vec3 x, float y);
+vec4 max(vec4 x, float y);
+
+float clamp(float x, float minVal, float maxVal);
+vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal);
+vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal);
+vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal);
+
+vec2 clamp(vec2 x, float minVal, float maxVal);
+vec3 clamp(vec3 x, float minVal, float maxVal);
+vec4 clamp(vec4 x, float minVal, float maxVal);
+
+float mix(float x, float y, float a);
+vec2 mix(vec2 x, vec2 y, vec2 a);
+vec3 mix(vec3 x, vec3 y, vec3 a);
+vec4 mix(vec4 x, vec4 y, vec4 a);
+
+vec2 mix(vec2 x, vec2 y, float a);
+vec3 mix(vec3 x, vec3 y, float a);
+vec4 mix(vec4 x, vec4 y, float a);
+
+float step(float edge, float x);
+vec2 step(vec2 edge, vec2 x);
+vec3 step(vec3 edge, vec3 x);
+vec4 step(vec4 edge, vec4 x);
+
+vec2 step(float edge, vec2 x);
+vec3 step(float edge, vec3 x);
+vec4 step(float edge, vec4 x);
+
+float smoothstep(float edge0, float edge1, float x);
+vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x);
+vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x);
+vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x);
+
+vec2 smoothstep(float edge0, float edge1, vec2 x);
+vec3 smoothstep(float edge0, float edge1, vec3 x);
+vec4 smoothstep(float edge0, float edge1, vec4 x);
+
+/*
+ * 8.4 - Geometric Functions
+ */
+float length(float x);
+float length(vec2 x);
+float length(vec3 x);
+float length(vec4 x);
+
+float distance(float p0, float p1);
+float distance(vec2 p0, vec2 p1);
+float distance(vec3 p0, vec3 p1);
+float distance(vec4 p0, vec4 p1);
+
+float dot(float x, float y);
+float dot(vec2 x, vec2 y);
+float dot(vec3 x, vec3 y);
+float dot(vec4 x, vec4 y);
+
+vec3 cross(vec3 x, vec3 y);
+
+float normalize(float x);
+vec2 normalize(vec2 x);
+vec3 normalize(vec3 x);
+vec4 normalize(vec4 x);
+
+vec4 ftransform();
+
+float faceforward(float N, float I, float Nref);
+vec2 faceforward(vec2 N, vec2 I, vec2 Nref);
+vec3 faceforward(vec3 N, vec3 I, vec3 Nref);
+vec4 faceforward(vec4 N, vec4 I, vec4 Nref);
+
+float reflect(float I, float N);
+vec2 reflect(vec2 I, vec2 N);
+vec3 reflect(vec3 I, vec3 N);
+vec4 reflect(vec4 I, vec4 N);
+
+float refract(float I, float N, float eta);
+vec2 refract(vec2 I, vec2 N, float eta);
+vec3 refract(vec3 I, vec3 N, float eta);
+vec4 refract(vec4 I, vec4 N, float eta);
+
+
+/*
+ * 8.5 - Matrix Functions
+ */
+mat2 matrixCompMult(mat2 x, mat2 y);
+mat3 matrixCompMult(mat3 x, mat3 y);
+mat4 matrixCompMult(mat4 x, mat4 y);
+mat2x3 matrixCompMult(mat2x3 x, mat2x3 y);
+mat2x4 matrixCompMult(mat2x4 x, mat2x4 y);
+mat3x2 matrixCompMult(mat3x2 x, mat3x2 y);
+mat3x4 matrixCompMult(mat3x4 x, mat3x4 y);
+mat4x2 matrixCompMult(mat4x2 x, mat4x2 y);
+mat4x3 matrixCompMult(mat4x3 x, mat4x3 y);
+
+mat2 outerProduct(vec2 c, vec2 r);
+mat3 outerProduct(vec3 c, vec3 r);
+mat4 outerProduct(vec4 c, vec4 r);
+
+mat2x3 outerProduct(vec3 c, vec2 r);
+mat3x2 outerProduct(vec2 c, vec3 r);
+
+mat2x4 outerProduct(vec4 c, vec2 r);
+mat4x2 outerProduct(vec2 c, vec4 r);
+
+mat3x4 outerProduct(vec4 c, vec3 r);
+mat4x3 outerProduct(vec3 c, vec4 r);
+
+mat2 transpose(mat2 m);
+mat3 transpose(mat3 m);
+mat4 transpose(mat4 m);
+
+mat2x3 transpose(mat3x2 m);
+mat3x2 transpose(mat2x3 m);
+
+mat2x4 transpose(mat4x2 m);
+mat4x2 transpose(mat2x4 m);
+
+mat3x4 transpose(mat4x3 m);
+mat4x3 transpose(mat3x4 m);
+
+/*
+ * 8.6 - Vector Relational Functions
+ */
+bvec2 lessThan( vec2 x, vec2 y);
+bvec3 lessThan( vec3 x, vec3 y);
+bvec4 lessThan( vec4 x, vec4 y);
+bvec2 lessThan(ivec2 x, ivec2 y);
+bvec3 lessThan(ivec3 x, ivec3 y);
+bvec4 lessThan(ivec4 x, ivec4 y);
+
+bvec2 lessThanEqual( vec2 x, vec2 y);
+bvec3 lessThanEqual( vec3 x, vec3 y);
+bvec4 lessThanEqual( vec4 x, vec4 y);
+bvec2 lessThanEqual(ivec2 x, ivec2 y);
+bvec3 lessThanEqual(ivec3 x, ivec3 y);
+bvec4 lessThanEqual(ivec4 x, ivec4 y);
+
+bvec2 greaterThan( vec2 x, vec2 y);
+bvec3 greaterThan( vec3 x, vec3 y);
+bvec4 greaterThan( vec4 x, vec4 y);
+bvec2 greaterThan(ivec2 x, ivec2 y);
+bvec3 greaterThan(ivec3 x, ivec3 y);
+bvec4 greaterThan(ivec4 x, ivec4 y);
+
+bvec2 greaterThanEqual( vec2 x, vec2 y);
+bvec3 greaterThanEqual( vec3 x, vec3 y);
+bvec4 greaterThanEqual( vec4 x, vec4 y);
+bvec2 greaterThanEqual(ivec2 x, ivec2 y);
+bvec3 greaterThanEqual(ivec3 x, ivec3 y);
+bvec4 greaterThanEqual(ivec4 x, ivec4 y);
+
+bvec2 equal( vec2 x, vec2 y);
+bvec3 equal( vec3 x, vec3 y);
+bvec4 equal( vec4 x, vec4 y);
+bvec2 equal(ivec2 x, ivec2 y);
+bvec3 equal(ivec3 x, ivec3 y);
+bvec4 equal(ivec4 x, ivec4 y);
+bvec2 equal(bvec2 x, bvec2 y);
+bvec3 equal(bvec3 x, bvec3 y);
+bvec4 equal(bvec4 x, bvec4 y);
+
+bvec2 notEqual( vec2 x, vec2 y);
+bvec3 notEqual( vec3 x, vec3 y);
+bvec4 notEqual( vec4 x, vec4 y);
+bvec2 notEqual(ivec2 x, ivec2 y);
+bvec3 notEqual(ivec3 x, ivec3 y);
+bvec4 notEqual(ivec4 x, ivec4 y);
+bvec2 notEqual(bvec2 x, bvec2 y);
+bvec3 notEqual(bvec3 x, bvec3 y);
+bvec4 notEqual(bvec4 x, bvec4 y);
+
+bool any(bvec2 x);
+bool any(bvec3 x);
+bool any(bvec4 x);
+
+bool all(bvec2 x);
+bool all(bvec3 x);
+bool all(bvec4 x);
+
+bvec2 not(bvec2 x);
+bvec3 not(bvec3 x);
+bvec4 not(bvec4 x);
+
+/*
+ * 8.7 - Texture Lookup Functions
+ */
+vec4 texture1D (sampler1D sampler, float coord);
+vec4 texture1DProj (sampler1D sampler, vec2 coord);
+vec4 texture1DProj (sampler1D sampler, vec4 coord);
+vec4 texture1DLod (sampler1D sampler, float coord, float lod);
+vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod);
+vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod);
+
+vec4 texture2D (sampler2D sampler, vec2 coord);
+vec4 texture2DProj (sampler2D sampler, vec3 coord);
+vec4 texture2DProj (sampler2D sampler, vec4 coord);
+vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod);
+vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod);
+vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod);
+
+vec4 texture3D (sampler3D sampler, vec3 coord);
+vec4 texture3DProj (sampler3D sampler, vec4 coord);
+vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod);
+vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod);
+
+vec4 textureCube (samplerCube sampler, vec3 coord);
+vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod);
+
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord);
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord);
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord);
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord);
+vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod);
+vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod);
+vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod);
+vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod);
+
+/*
+ * 8.8 - Fragment Processing Functions (none in vertex shader)
+ */
+
+/*
+ * 8.9 - Noise Functions
+ */
+float noise1(float x);
+float noise1(vec2 x);
+float noise1(vec3 x);
+float noise1(vec4 x);
+
+vec2 noise2(float x);
+vec2 noise2(vec2 x);
+vec2 noise2(vec3 x);
+vec2 noise2(vec4 x);
+
+vec3 noise3(float x);
+vec3 noise3(vec2 x);
+vec3 noise3(vec3 x);
+vec3 noise3(vec4 x);
+
+vec4 noise4(float x);
+vec4 noise4(vec2 x);
+vec4 noise4(vec3 x);
+vec4 noise4(vec4 x);
diff --git a/src/glsl/builtins/profiles/ARB_texture_rectangle.frag b/src/glsl/builtins/profiles/ARB_texture_rectangle.frag
new file mode 100644
index 0000000000..8938aa3e97
--- /dev/null
+++ b/src/glsl/builtins/profiles/ARB_texture_rectangle.frag
@@ -0,0 +1,7 @@
+#extension GL_ARB_texture_rectangle : enable
+vec4 texture2DRect(sampler2DRect sampler, vec2 coord);
+vec4 texture2DRectProj(sampler2DRect sampler, vec3 coord);
+vec4 texture2DRectProj(sampler2DRect sampler, vec4 coord);
+
+vec4 shadow2DRect(sampler2DRectShadow sampler, vec3 coord);
+vec4 shadow2DRectProj(sampler2DRectShadow sampler, vec4 coord);
diff --git a/src/glsl/builtins/profiles/ARB_texture_rectangle.vert b/src/glsl/builtins/profiles/ARB_texture_rectangle.vert
new file mode 100644
index 0000000000..8938aa3e97
--- /dev/null
+++ b/src/glsl/builtins/profiles/ARB_texture_rectangle.vert
@@ -0,0 +1,7 @@
+#extension GL_ARB_texture_rectangle : enable
+vec4 texture2DRect(sampler2DRect sampler, vec2 coord);
+vec4 texture2DRectProj(sampler2DRect sampler, vec3 coord);
+vec4 texture2DRectProj(sampler2DRect sampler, vec4 coord);
+
+vec4 shadow2DRect(sampler2DRectShadow sampler, vec3 coord);
+vec4 shadow2DRectProj(sampler2DRectShadow sampler, vec4 coord);
diff --git a/src/glsl/builtins/profiles/EXT_texture_array.frag b/src/glsl/builtins/profiles/EXT_texture_array.frag
new file mode 100644
index 0000000000..d133132191
--- /dev/null
+++ b/src/glsl/builtins/profiles/EXT_texture_array.frag
@@ -0,0 +1,11 @@
+#extension GL_EXT_texture_array : enable
+vec4 texture1DArray(sampler1DArray sampler, vec2 coord);
+vec4 texture1DArray(sampler1DArray sampler, vec2 coord, float bias);
+
+vec4 texture2DArray(sampler1DArray sampler, vec2 coord);
+vec4 texture2DArray(sampler1DArray sampler, vec2 coord, float bias);
+
+vec4 shadow1DArray(sampler1DArrayShadow sampler, vec3 coord);
+vec4 shadow1DArray(sampler1DArrayShadow sampler, vec3 coord, float bias);
+
+vec4 shadow2DArray(sampler2DArrayShadow sampler, vec4 coord);
diff --git a/src/glsl/builtins/profiles/EXT_texture_array.vert b/src/glsl/builtins/profiles/EXT_texture_array.vert
new file mode 100644
index 0000000000..4f7b2b5f8b
--- /dev/null
+++ b/src/glsl/builtins/profiles/EXT_texture_array.vert
@@ -0,0 +1,11 @@
+#extension GL_EXT_texture_array : enable
+vec4 texture1DArray(sampler1DArray sampler, vec2 coord);
+vec4 texture1DArrayLod(sampler1DArray sampler, vec2 coord, float lod);
+
+vec4 texture2DArray(sampler1DArray sampler, vec2 coord);
+vec4 texture2DArrayLod(sampler1DArray sampler, vec2 coord, float lod);
+
+vec4 shadow1DArray(sampler1DArrayShadow sampler, vec3 coord);
+vec4 shadow1DArrayLod(sampler1DArrayShadow sampler, vec3 coord, float lod);
+
+vec4 shadow2DArray(sampler2DArrayShadow sampler, vec4 coord);
diff --git a/src/glsl/builtins/tools/builtin_function.cpp b/src/glsl/builtins/tools/builtin_function.cpp
new file mode 100644
index 0000000000..c44804f2ef
--- /dev/null
+++ b/src/glsl/builtins/tools/builtin_function.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#include <stdio.h>
+#include "glsl_parser_extras.h"
+
+/* A dummy file. When compiling prototypes, we don't care about builtins.
+ * We really don't want to half-compile builtin_functions.cpp and fail, though.
+ */
+void
+_mesa_glsl_release_functions(void)
+{
+}
+
+void
+_mesa_glsl_initialize_functions(exec_list *instructions,
+ struct _mesa_glsl_parse_state *state)
+{
+}
diff --git a/src/glsl/builtins/tools/generate_builtins.pl b/src/glsl/builtins/tools/generate_builtins.pl
deleted file mode 100755
index 91ef8917b0..0000000000
--- a/src/glsl/builtins/tools/generate_builtins.pl
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env perl
-
-sub process_version {
- my ($version) = @_;
- my @vars;
- print "/* $version builtins */\n\n";
-
- my @files = <builtins/$version/*>;
- foreach $file (@files) {
- push(@vars, process_file($file));
- }
-
- print "static const char *functions_for_$version [] = {\n";
- foreach $var (@vars) {
- print " $var,\n";
- }
- print "};\n\n"
-}
-
-sub process_file {
- my ($file) = @_;
-
- # Change from builtins/110/foo to builtins_110_foo
- my $var = $file; $var =~ s!/!_!g;
-
- print "static const char *$var = {\n";
- open SRC, "<", "$file" or die $!;
- while (<SRC>) {
- s/\\/\\\\/g;
- s/\"/\\\"/g;
- s/\n/\\n/g;
- print " \"$_\"\n";
- }
- print "};\n\n";
- close SRC or die $!;
- return $var;
-}
-
-print << 'EOF';
-/* DO NOT MODIFY - automatically generated by generate_builtins.pl */
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include <stdio.h>
-#include "main/compiler.h"
-#include "glsl_parser_extras.h"
-#include "ir_reader.h"
-#include "program.h"
-
-extern "C" struct gl_shader *
-_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type);
-
-gl_shader *
-read_builtins(GLenum target, const char **functions, unsigned count)
-{
- gl_shader *sh = _mesa_new_shader(NULL, 0, target);
- struct _mesa_glsl_parse_state *st =
- new(sh) _mesa_glsl_parse_state(NULL, target, sh);
-
- st->language_version = 130;
- st->ARB_texture_rectangle_enable = true;
- st->EXT_texture_array_enable = true;
- _mesa_glsl_initialize_types(st);
-
- sh->ir = new(sh) exec_list;
- sh->symbols = st->symbols;
-
- for (unsigned i = 0; i < count; i++) {
- _mesa_glsl_read_ir(st, sh->ir, functions[i]);
-
- if (st->error) {
- printf("error reading builtin: %.35s ...\n", functions[i]);
- delete st;
- talloc_free(sh);
- return NULL;
- }
- }
-
- reparent_ir(sh->ir, sh);
- delete st;
-
- return sh;
-}
-
-EOF
-
-@versions = sort(<builtins/[1-9A-Z]*>);
-foreach $version (@versions) {
- $version =~ s!builtins/!!g;
- process_version($version);
-}
-
-print << 'EOF';
-void *builtin_mem_ctx = NULL;
-
-void
-_mesa_glsl_release_functions(void)
-{
- talloc_free(builtin_mem_ctx);
-}
-
-void
-_mesa_glsl_initialize_functions(exec_list *instructions,
- struct _mesa_glsl_parse_state *state)
-{
- if (builtin_mem_ctx == NULL)
- builtin_mem_ctx = talloc_init("GLSL built-in functions");
-
- state->num_builtins_to_link = 0;
-EOF
-
-foreach $version_xs (@versions) {
- $check = "";
- if ($version_xs =~ /_vs/) {
- $check = "state->target == vertex_shader && ";
- } elsif ($version_xs =~ /_fs/) {
- $check = "state->target == fragment_shader && ";
- }
- $version = $version_xs;
- $version =~ s/_[vf]s//g;
-
- if ($version =~ /^[1-9][0-9][0-9]/) {
- $check = "${check}state->language_version >= $version";
- } else {
- # Not a version...an extension name
- $check = "${check}state->${version}_enable";
- }
- print " if ($check) {\n";
- print " static gl_shader *sh = NULL;\n";
- print "\n";
- print " if (sh == NULL) {\n";
- print " sh = read_builtins(GL_VERTEX_SHADER, functions_for_$version_xs,\n";
- print " Elements(functions_for_$version_xs));\n";
- print " talloc_steal(builtin_mem_ctx, sh);\n";
- print " }\n";
- print "\n";
- print " import_prototypes(sh->ir, instructions, state->symbols, state);\n";
- print " state->builtins_to_link[state->num_builtins_to_link] = sh;\n";
- print " state->num_builtins_to_link++;\n";
- print " }\n";
- print "\n";
-}
-
-print "}\n";
diff --git a/src/glsl/builtins/tools/generate_builtins.py b/src/glsl/builtins/tools/generate_builtins.py
new file mode 100755
index 0000000000..2eb67e398a
--- /dev/null
+++ b/src/glsl/builtins/tools/generate_builtins.py
@@ -0,0 +1,207 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import re, glob, sys
+from os import path
+from subprocess import Popen, PIPE
+
+# Local module: generator for texture lookup builtins
+from texture_builtins import generate_texture_functions
+
+builtins_dir = path.join(path.dirname(path.abspath(__file__)), "..")
+
+# Read the files in builtins/ir/*...add them to the supplied dictionary.
+def read_ir_files(fs):
+ for filename in glob.glob(path.join(path.join(builtins_dir, 'ir'), '*')):
+ with open(filename) as f:
+ fs[path.basename(filename)] = f.read()
+
+# Return a dictionary containing all builtin definitions (even generated)
+def get_builtin_definitions():
+ fs = {}
+ generate_texture_functions(fs)
+ read_ir_files(fs)
+ return fs
+
+def stringify(s):
+ t = s.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n"\n "')
+ return ' "' + t + '"\n'
+
+def write_function_definitions():
+ fs = get_builtin_definitions()
+ for k, v in fs.iteritems():
+ print 'static const char *builtin_' + k + ' ='
+ print stringify(v), ';'
+
+def run_compiler(args):
+ compiler_path = path.join(path.join(builtins_dir, '..'), 'glsl_compiler')
+ command = [compiler_path, '--dump-lir'] + args
+ p = Popen(command, 1, stdout=PIPE, shell=False)
+ output = p.communicate()[0]
+ return (output, p.returncode)
+
+def write_profile(filename, profile):
+ (proto_ir, returncode) = run_compiler([filename])
+
+ if returncode != 0:
+ print '#error builtins profile', profile, 'failed to compile'
+ return
+
+ # Kill any global variable declarations. We don't want them.
+ kill_globals = re.compile(r'^\(declare.*\n', re.MULTILINE);
+ proto_ir = kill_globals.sub('', proto_ir)
+
+ print 'static const char *prototypes_for_' + profile + ' ='
+ print stringify(proto_ir), ';'
+
+ # Print a table of all the functions (not signatures) referenced.
+ # This is done so we can avoid bothering with a hash table in the C++ code.
+
+ function_names = set()
+ for func in re.finditer(r'\(function (.+)\n', proto_ir):
+ function_names.add(func.group(1))
+
+ print 'static const char *functions_for_' + profile + ' [] = {'
+ for func in function_names:
+ print ' builtin_' + func + ','
+ print '};'
+
+def write_profiles():
+ profiles = get_profile_list()
+ for (filename, profile) in profiles:
+ write_profile(filename, profile)
+
+def get_profile_list():
+ profiles = []
+ for pfile in glob.glob(path.join(path.join(builtins_dir, 'profiles'), '*')):
+ profiles.append((pfile, path.basename(pfile).replace('.', '_')))
+ return profiles
+
+if __name__ == "__main__":
+ print """/* DO NOT MODIFY - automatically generated by generate_builtins.py */
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#include <stdio.h>
+#include "main/compiler.h"
+#include "glsl_parser_extras.h"
+#include "ir_reader.h"
+#include "program.h"
+#include "ast.h"
+
+extern "C" struct gl_shader *
+_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type);
+
+gl_shader *
+read_builtins(GLenum target, const char *protos, const char **functions, unsigned count)
+{
+ gl_shader *sh = _mesa_new_shader(NULL, 0, target);
+ struct _mesa_glsl_parse_state *st =
+ new(sh) _mesa_glsl_parse_state(NULL, target, sh);
+
+ st->language_version = 130;
+ st->ARB_texture_rectangle_enable = true;
+ st->EXT_texture_array_enable = true;
+ _mesa_glsl_initialize_types(st);
+
+ sh->ir = new(sh) exec_list;
+ sh->symbols = st->symbols;
+
+ /* Read the IR containing the prototypes */
+ _mesa_glsl_read_ir(st, sh->ir, protos, true);
+
+ /* Read ALL the function bodies, telling the IR reader not to scan for
+ * prototypes (we've already created them). The IR reader will skip any
+ * signature that does not already exist as a prototype.
+ */
+ for (unsigned i = 0; i < count; i++) {
+ _mesa_glsl_read_ir(st, sh->ir, functions[i], false);
+
+ if (st->error) {
+ printf("error reading builtin: %.35s ...\\n", functions[i]);
+ talloc_free(sh);
+ return NULL;
+ }
+ }
+
+ reparent_ir(sh->ir, sh);
+ delete st;
+
+ return sh;
+}
+"""
+
+ write_function_definitions()
+ write_profiles()
+
+ print """
+void *builtin_mem_ctx = NULL;
+
+void
+_mesa_glsl_release_functions(void)
+{
+ talloc_free(builtin_mem_ctx);
+}
+
+void
+_mesa_glsl_initialize_functions(exec_list *instructions,
+ struct _mesa_glsl_parse_state *state)
+{
+ if (builtin_mem_ctx == NULL)
+ builtin_mem_ctx = talloc_init("GLSL built-in functions");
+
+ state->num_builtins_to_link = 0;
+"""
+
+ profiles = get_profile_list()
+ for (filename, profile) in profiles:
+ if profile.endswith('_vert'):
+ check = 'state->target == vertex_shader && '
+ elif profile.endswith('_frag'):
+ check = 'state->target == fragment_shader && '
+
+ version = re.sub(r'_(vert|frag)$', '', profile)
+ if version.isdigit():
+ check += 'state->language_version == ' + version
+ else: # an extension name
+ check += 'state->' + version + '_enable'
+
+ print ' if (' + check + ') {'
+ print ' static gl_shader *sh = NULL;'
+ print ' if (sh == NULL) {'
+ print ' sh = read_builtins(GL_VERTEX_SHADER,'
+ print ' prototypes_for_' + profile + ','
+ print ' functions_for_' + profile + ','
+ print ' Elements(functions_for_' + profile,
+ print '));'
+ print ' talloc_steal(builtin_mem_ctx, sh);'
+ print ' }'
+ print
+ print ' import_prototypes(sh->ir, instructions, state->symbols,'
+ print ' state);'
+ print ' state->builtins_to_link[state->num_builtins_to_link] = sh;'
+ print ' state->num_builtins_to_link++;'
+ print ' }'
+ print
+ print '}'
+
diff --git a/src/glsl/builtins/tools/texture_builtins.py b/src/glsl/builtins/tools/texture_builtins.py
index 33d9642ef7..8bf708b5aa 100755
--- a/src/glsl/builtins/tools/texture_builtins.py
+++ b/src/glsl/builtins/tools/texture_builtins.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
-from os import path
import sys
+import StringIO
def vec_type(g, size):
if size == 1:
@@ -95,204 +95,255 @@ def generate_fiu_sigs(tex_inst, sampler_type, use_proj = False, unused_fields =
generate_sigs("i", tex_inst, sampler_type, use_proj, unused_fields)
generate_sigs("u", tex_inst, sampler_type, use_proj, unused_fields)
-builtins_dir = path.join(path.dirname(path.abspath(__file__)), "..")
+def start_function(name):
+ sys.stdout = StringIO.StringIO()
+ print "((function " + name
-with open(path.join(builtins_dir, "130", "texture"), 'w') as sys.stdout:
- print "((function texture"
+def end_function(fs, name):
+ print "))"
+ fs[name] = sys.stdout.getvalue();
+ sys.stdout.close()
+
+# Generate all the functions and store them in the supplied dictionary.
+# This is better than writing them to actual files since they should never be
+# edited; it'd also be easy to confuse them with the many hand-generated files.
+#
+# Takes a dictionary as an argument.
+def generate_texture_functions(fs):
+ start_function("texture")
generate_fiu_sigs("tex", "1D")
generate_fiu_sigs("tex", "2D")
generate_fiu_sigs("tex", "3D")
generate_fiu_sigs("tex", "Cube")
generate_fiu_sigs("tex", "1DArray")
generate_fiu_sigs("tex", "2DArray")
- print "))"
-# txb variants are only allowed within a fragment shader (GLSL 1.30 p. 86)
-with open(path.join(builtins_dir, "130_fs", "texture"), 'w') as sys.stdout:
- print "((function texture"
generate_fiu_sigs("txb", "1D")
generate_fiu_sigs("txb", "2D")
generate_fiu_sigs("txb", "3D")
generate_fiu_sigs("txb", "Cube")
generate_fiu_sigs("txb", "1DArray")
generate_fiu_sigs("txb", "2DArray")
- print "))"
+ end_function(fs, "texture")
-with open(path.join(builtins_dir, "130", "textureProj"), 'w') as sys.stdout:
- print "((function textureProj"
+ start_function("textureProj")
generate_fiu_sigs("tex", "1D", True)
generate_fiu_sigs("tex", "1D", True, 2)
generate_fiu_sigs("tex", "2D", True)
generate_fiu_sigs("tex", "2D", True, 1)
generate_fiu_sigs("tex", "3D", True)
- print "))"
-with open(path.join(builtins_dir, "130_fs", "textureProj"), 'w') as sys.stdout:
- print "((function textureProj"
generate_fiu_sigs("txb", "1D", True)
generate_fiu_sigs("txb", "1D", True, 2)
generate_fiu_sigs("txb", "2D", True)
generate_fiu_sigs("txb", "2D", True, 1)
generate_fiu_sigs("txb", "3D", True)
- print "))"
+ end_function(fs, "textureProj")
-with open(path.join(builtins_dir, "130", "textureLod"), 'w') as sys.stdout:
- print "((function textureLod"
+ start_function("textureLod")
generate_fiu_sigs("txl", "1D")
generate_fiu_sigs("txl", "2D")
generate_fiu_sigs("txl", "3D")
generate_fiu_sigs("txl", "Cube")
generate_fiu_sigs("txl", "1DArray")
generate_fiu_sigs("txl", "2DArray")
- print "))"
+ end_function(fs, "textureLod")
-with open(path.join(builtins_dir, "130", "texelFetch"), 'w') as sys.stdout:
- print "((function texelFetch"
+ start_function("texelFetch")
generate_fiu_sigs("txf", "1D")
generate_fiu_sigs("txf", "2D")
generate_fiu_sigs("txf", "3D")
generate_fiu_sigs("txf", "1DArray")
generate_fiu_sigs("txf", "2DArray")
- print "))"
+ end_function(fs, "texelFetch")
-with open(path.join(builtins_dir, "130", "textureProjLod"), 'w') as sys.stdout:
- print "((function textureProjLod"
+ start_function("textureProjLod")
generate_fiu_sigs("txl", "1D", True)
generate_fiu_sigs("txl", "1D", True, 2)
generate_fiu_sigs("txl", "2D", True)
generate_fiu_sigs("txl", "2D", True, 1)
generate_fiu_sigs("txl", "3D", True)
- print "))"
+ end_function(fs, "textureProjLod")
-with open(path.join(builtins_dir, "130", "textureGrad"), 'w') as sys.stdout:
- print "((function textureGrad"
+ start_function("textureGrad")
generate_fiu_sigs("txd", "1D")
generate_fiu_sigs("txd", "2D")
generate_fiu_sigs("txd", "3D")
generate_fiu_sigs("txd", "Cube")
generate_fiu_sigs("txd", "1DArray")
generate_fiu_sigs("txd", "2DArray")
- print ")\n)"
+ end_function(fs, "textureGrad")
-with open(path.join(builtins_dir, "130", "textureProjGrad"), 'w') as sys.stdout:
- print "((function textureProjGrad"
+ start_function("textureProjGrad")
generate_fiu_sigs("txd", "1D", True)
generate_fiu_sigs("txd", "1D", True, 2)
generate_fiu_sigs("txd", "2D", True)
generate_fiu_sigs("txd", "2D", True, 1)
generate_fiu_sigs("txd", "3D", True)
- print "))"
+ end_function(fs, "textureProjGrad")
-# ARB_texture_rectangle extension
-with open(path.join(builtins_dir, "ARB_texture_rectangle", "textures"), 'w') as sys.stdout:
- print "((function texture2DRect"
+ # ARB_texture_rectangle extension
+ start_function("texture2DRect")
generate_sigs("", "tex", "2DRect")
- print ")\n (function shadow2DRect"
+ end_function(fs, "texture2DRect")
+
+ start_function("texture2DRectProj")
+ generate_sigs("", "tex", "2DRect", True)
+ generate_sigs("", "tex", "2DRect", True, 1)
+ end_function(fs, "texture2DRectProj")
+
+ start_function("shadow2DRect")
generate_sigs("", "tex", "2DRectShadow")
- print "))"
+ end_function(fs, "shadow2DRect")
-# EXT_texture_array extension
-with open(path.join(builtins_dir, "EXT_texture_array", "textures"), 'w') as sys.stdout:
- print "((function texture1DArray"
+ start_function("shadow2DRectProj")
+ generate_sigs("", "tex", "2DRectShadow", True)
+ end_function(fs, "shadow2DRectProj")
+
+ # EXT_texture_array extension
+ start_function("texture1DArray")
generate_sigs("", "tex", "1DArray")
- print ")\n (function texture1DArrayLod"
+ generate_sigs("", "txb", "1DArray")
+ end_function(fs, "texture1DArray")
+
+ start_function("texture1DArrayLod")
generate_sigs("", "txl", "1DArray")
- print ")\n (function texture2DArray"
+ end_function(fs, "texture1DArrayLod")
+
+ start_function("texture2DArray")
generate_sigs("", "tex", "2DArray")
- print ")\n (function texture2DArrayLod"
+ generate_sigs("", "txb", "2DArray")
+ end_function(fs, "texture2DArray")
+
+ start_function("texture2DArrayLod")
generate_sigs("", "txl", "2DArray")
- print ")\n (function shadow1DArray"
+ end_function(fs, "texture2DArrayLod")
+
+ start_function("shadow1DArray")
generate_sigs("", "tex", "1DArrayShadow")
- print ")\n (function shadow1DArrayLod"
+ generate_sigs("", "txb", "1DArrayShadow")
+ end_function(fs, "shadow1DArray")
+
+ start_function("shadow1DArrayLod")
generate_sigs("", "txl", "1DArrayShadow")
- print ")\n (function shadow2DArray"
- generate_sigs("", "tex", "2DArrayShadow")
- print "))"
+ end_function(fs, "shadow1DArrayLod")
-with open(path.join(builtins_dir, "EXT_texture_array_fs", "textures"), 'w') as sys.stdout:
- print "((function texture1DArray"
- generate_sigs("", "txb", "1DArray")
- print ")\n (function texture2DArray"
- generate_sigs("", "txb", "2DArray")
- print ")\n (function shadow1DArray"
- generate_sigs("", "txb", "1DArrayShadow")
- print "))"
+ start_function("shadow2DArray")
+ generate_sigs("", "tex", "2DArrayShadow")
+ end_function(fs, "shadow2DArray")
-# Deprecated (110/120 style) functions with silly names:
-with open(path.join(builtins_dir, "110", "textures"), 'w') as sys.stdout:
- print "((function texture1D"
+ # Deprecated (110/120 style) functions with silly names:
+ start_function("texture1D")
generate_sigs("", "tex", "1D")
- print ")\n (function texture1DLod"
+ generate_sigs("", "txb", "1D")
+ end_function(fs, "texture1D")
+
+ start_function("texture1DLod")
generate_sigs("", "txl", "1D")
- print ")\n (function texture1DProj"
+ end_function(fs, "texture1DLod")
+
+ start_function("texture1DProj")
generate_sigs("", "tex", "1D", True)
generate_sigs("", "tex", "1D", True, 2)
- print ")\n (function texture1DProjLod"
+ generate_sigs("", "txb", "1D", True)
+ generate_sigs("", "txb", "1D", True, 2)
+ end_function(fs, "texture1DProj")
+
+ start_function("texture1DProjLod")
generate_sigs("", "txl", "1D", True)
generate_sigs("", "txl", "1D", True, 2)
- print ")\n (function texture2D"
+ end_function(fs, "texture1DProjLod")
+
+ start_function("texture2D")
generate_sigs("", "tex", "2D")
- print ")\n(function texture2DLod"
+ generate_sigs("", "txb", "2D")
+ end_function(fs, "texture2D")
+
+ start_function("texture2DLod")
generate_sigs("", "txl", "2D")
- print ")\n (function texture2DProj"
+ end_function(fs, "texture2DLod")
+
+ start_function("texture2DProj")
generate_sigs("", "tex", "2D", True)
generate_sigs("", "tex", "2D", True, 1)
- print ")\n (function texture2DProjLod"
+ generate_sigs("", "txb", "2D", True)
+ generate_sigs("", "txb", "2D", True, 1)
+ end_function(fs, "texture2DProj")
+
+ start_function("texture2DProjLod")
generate_sigs("", "txl", "2D", True)
generate_sigs("", "txl", "2D", True, 1)
- print ")\n (function texture3D"
+ end_function(fs, "texture2DProjLod")
+
+ start_function("texture3D")
generate_sigs("", "tex", "3D")
- print ")\n (function texture3DLod"
+ generate_sigs("", "txb", "3D")
+ end_function(fs, "texture3D")
+
+ start_function("texture3DLod")
generate_sigs("", "txl", "3D")
- print ")\n (function texture3DProj"
+ end_function(fs, "texture3DLod")
+
+ start_function("texture3DProj")
generate_sigs("", "tex", "3D", True)
- print ")\n (function texture3DProjLod"
+ generate_sigs("", "txb", "3D", True)
+ end_function(fs, "texture3DProj")
+
+ start_function("texture3DProjLod")
generate_sigs("", "txl", "3D", True)
- print ")\n (function textureCube"
+ end_function(fs, "texture3DProjLod")
+
+ start_function("textureCube")
generate_sigs("", "tex", "Cube")
- print ")\n (function textureCubeLod"
+ generate_sigs("", "txb", "Cube")
+ end_function(fs, "textureCube")
+
+ start_function("textureCubeLod")
generate_sigs("", "txl", "Cube")
- print ")\n (function shadow1D"
+ end_function(fs, "textureCubeLod")
+
+ start_function("shadow1D")
generate_sigs("", "tex", "1DShadow", False, 1)
- print ")\n (function shadow1DLod"
+ generate_sigs("", "txb", "1DShadow", False, 1)
+ end_function(fs, "shadow1D")
+
+ start_function("shadow1DLod")
generate_sigs("", "txl", "1DShadow", False, 1)
- print ")\n (function shadow1DProj"
+ end_function(fs, "shadow1DLod")
+
+ start_function("shadow1DProj")
generate_sigs("", "tex", "1DShadow", True, 1)
- print ")\n (function shadow1DProjLod"
+ generate_sigs("", "txb", "1DShadow", True, 1)
+ end_function(fs, "shadow1DProj")
+
+ start_function("shadow1DProjLod")
generate_sigs("", "txl", "1DShadow", True, 1)
- print ")\n (function shadow2D"
+ end_function(fs, "shadow1DProjLod")
+
+ start_function("shadow2D")
generate_sigs("", "tex", "2DShadow")
- print ")\n (function shadow2DLod"
+ generate_sigs("", "txb", "2DShadow")
+ end_function(fs, "shadow2D")
+
+ start_function("shadow2DLod")
generate_sigs("", "txl", "2DShadow")
- print ")\n (function shadow2DProj"
+ end_function(fs, "shadow2DLod")
+
+ start_function("shadow2DProj")
generate_sigs("", "tex", "2DShadow", True)
- print ")\n (function shadow2DProjLod"
+ generate_sigs("", "txb", "2DShadow", True)
+ end_function(fs, "shadow2DProj")
+
+ start_function("shadow2DProjLod")
generate_sigs("", "txl", "2DShadow", True)
- print "))"
+ end_function(fs, "shadow2DProjLod")
-with open(path.join(builtins_dir, "110_fs", "textures"), 'w') as sys.stdout:
- print "((function texture1D"
- generate_sigs("", "txb", "1D")
- print ")\n (function texture1DProj"
- generate_sigs("", "txb", "1D", True)
- generate_sigs("", "txb", "1D", True, 2)
- print ")\n (function texture2D"
- generate_sigs("", "txb", "2D")
- print ")\n (function texture2DProj"
- generate_sigs("", "txb", "2D", True)
- generate_sigs("", "txb", "2D", True, 1)
- print ")\n (function texture3D"
- generate_sigs("", "txb", "3D")
- print ")\n (function texture3DProj"
- generate_sigs("", "txb", "3D", True)
- print ")\n (function textureCube"
- generate_sigs("", "txb", "Cube")
- print ")\n (function shadow1D"
- generate_sigs("", "txb", "1DShadow", False, 1)
- print ")\n (function shadow1DProj"
- generate_sigs("", "txb", "1DShadow", True, 1)
- print ")\n (function shadow2D"
- generate_sigs("", "txb", "2DShadow")
- print ")\n (function shadow2DProj"
- generate_sigs("", "txb", "2DShadow", True)
- print "))"
+ sys.stdout = sys.__stdout__
+ return fs
+
+# If you actually run this script, it'll print out all the functions.
+if __name__ == "__main__":
+ fs = {}
+ generate_texture_functions(fs);
+ for k, v in fs.iteritems():
+ print v