Commit output of texture_builtins.py and refresh builtin_function.cpp.
diff --git a/builtin_function.cpp b/builtin_function.cpp
index 5bb0007..7a6457c 100644
--- a/builtin_function.cpp
+++ b/builtin_function.cpp
@@ -43,7 +43,7 @@
    }
 }
 
-/* Version 110 builtins */
+/* 110 builtins */
 
 static const char *builtins_110_abs = {
    "((function abs\n"
@@ -1797,6 +1797,222 @@
    "))\n"
 };
 
+static const char *builtins_110_textures = {
+   "((function texture1D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture1DLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture1DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture1DProjLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   "(function texture2DLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2DProjLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture3D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture3DLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture3DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture3DProjLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function textureCube\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   " (function textureCubeLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DShadow sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DShadow sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DShadow sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DProjLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DShadow sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((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) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DShadow sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2DLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DShadow sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DShadow sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2DProjLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DShadow sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((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) ))))\n"
+   "\n"
+   "))\n"
+};
+
 static const char *functions_for_110 [] = {
    builtins_110_abs,
    builtins_110_all,
@@ -1838,9 +2054,132 @@
    builtins_110_sqrt,
    builtins_110_step,
    builtins_110_tan,
+   builtins_110_textures,
 };
 
-/* Version 110_vs builtins */
+/* 110_fs builtins */
+
+static const char *builtins_110_fs_textures = {
+   "((function texture1D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture1DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture3D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture3DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function textureCube\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DShadow sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DShadow sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((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) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2D\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DShadow sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2DProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DShadow sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((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) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *functions_for_110_fs [] = {
+   builtins_110_fs_textures,
+};
+
+/* 110_vs builtins */
 
 static const char *builtins_110_vs_ftransform = {
    "((function ftransform\n"
@@ -1856,7 +2195,7 @@
    builtins_110_vs_ftransform,
 };
 
-/* Version 130 builtins */
+/* 130 builtins */
 
 static const char *builtins_130_equal = {
    "((function equal\n"
@@ -2099,6 +2438,840 @@
    "\n"
 };
 
+static const char *builtins_130_texelFetch = {
+   "((function texelFetch\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) int P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) int P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) int P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) ivec2 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) ivec2 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) ivec2 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) ivec3 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) ivec3 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) ivec3 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) ivec2 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1DArray sampler)\n"
+   "       (declare (in) ivec2 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1DArray sampler)\n"
+   "       (declare (in) ivec2 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) ivec3 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2DArray sampler)\n"
+   "       (declare (in) ivec3 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2DArray sampler)\n"
+   "       (declare (in) ivec3 P) \n"
+   "       (declare (in) int lod) )\n"
+   "     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *builtins_130_texture = {
+   "((function texture\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) float P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) float P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isamplerCube sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usamplerCube sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *builtins_130_textureGrad = {
+   "((function textureGrad\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isamplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usamplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   ")\n"
+   ")\n"
+};
+
+static const char *builtins_130_textureLod = {
+   "((function textureLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isamplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usamplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *builtins_130_textureProj = {
+   "((function textureProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *builtins_130_textureProjGrad = {
+   "((function textureLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float dPdx) \n"
+   "       (declare (in) float dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) vec2 dPdx) \n"
+   "       (declare (in) vec2 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) vec3 dPdx) \n"
+   "       (declare (in) vec3 dPdy) )\n"
+   "     ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *builtins_130_textureProjLod = {
+   "((function textureLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
+   "\n"
+   "))\n"
+};
+
 static const char *functions_for_130 [] = {
    builtins_130_equal,
    builtins_130_greaterThan,
@@ -2107,6 +3280,390 @@
    builtins_130_lessThanEqual,
    builtins_130_notEqual,
    builtins_130_sign,
+   builtins_130_texelFetch,
+   builtins_130_texture,
+   builtins_130_textureGrad,
+   builtins_130_textureLod,
+   builtins_130_textureProj,
+   builtins_130_textureProjGrad,
+   builtins_130_textureProjLod,
+};
+
+/* 130_fs builtins */
+
+static const char *builtins_130_fs_texture = {
+   "((function texture\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) float P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) samplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isamplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usamplerCube sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *builtins_130_fs_textureProj = {
+   "((function textureProj\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler1D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler2D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature ivec4\n"
+   "     (parameters\n"
+   "       (declare (in) isampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "   (signature uvec4\n"
+   "     (parameters\n"
+   "       (declare (in) usampler3D sampler)\n"
+   "       (declare (in) vec4 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *functions_for_130_fs [] = {
+   builtins_130_fs_texture,
+   builtins_130_fs_textureProj,
+};
+
+/* ARB_texture_rectangle builtins */
+
+static const char *builtins_ARB_texture_rectangle_textures = {
+   "((function texture2DRect\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DRect sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2DRect\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DRectShadow sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *functions_for_ARB_texture_rectangle [] = {
+   builtins_ARB_texture_rectangle_textures,
+};
+
+/* EXT_texture_array builtins */
+
+static const char *builtins_EXT_texture_array_textures = {
+   "((function texture1DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture1DArrayLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2DArrayLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArrayShadow sampler)\n"
+   "       (declare (in) vec3 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DArrayLod\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArrayShadow sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float lod) )\n"
+   "     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow2DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArrayShadow sampler)\n"
+   "       (declare (in) vec4 P) )\n"
+   "     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) 1 (swiz w (var_ref P)) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *functions_for_EXT_texture_array [] = {
+   builtins_EXT_texture_array_textures,
+};
+
+/* EXT_texture_array_fs builtins */
+
+static const char *builtins_EXT_texture_array_fs_textures = {
+   "((function texture1DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArray sampler)\n"
+   "       (declare (in) vec2 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function texture2DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler2DArray sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
+   "\n"
+   ")\n"
+   " (function shadow1DArray\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) sampler1DArrayShadow sampler)\n"
+   "       (declare (in) vec3 P) \n"
+   "       (declare (in) float bias) )\n"
+   "     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))\n"
+   "\n"
+   "))\n"
+};
+
+static const char *functions_for_EXT_texture_array_fs [] = {
+   builtins_EXT_texture_array_fs_textures,
 };
 
 void
@@ -2114,15 +3671,43 @@
 			        struct _mesa_glsl_parse_state *state)
 {
    if (state->language_version >= 110)
-      read_builtins(state, instructions, functions_for_110,
+      read_builtins(state, instructions,
+                    functions_for_110,
                     sizeof(functions_for_110) / sizeof(const char *));
 
-   if (state->language_version >= 110 && state->target == vertex_shader)
-      read_builtins(state, instructions, functions_for_110_vs,
+   if (state->target == fragment_shader && state->language_version >= 110)
+      read_builtins(state, instructions,
+                    functions_for_110_fs,
+                    sizeof(functions_for_110_fs) / sizeof(const char *));
+
+   if (state->target == vertex_shader && state->language_version >= 110)
+      read_builtins(state, instructions,
+                    functions_for_110_vs,
                     sizeof(functions_for_110_vs) / sizeof(const char *));
 
    if (state->language_version >= 130)
-      read_builtins(state, instructions, functions_for_130,
+      read_builtins(state, instructions,
+                    functions_for_130,
                     sizeof(functions_for_130) / sizeof(const char *));
 
+   if (state->target == fragment_shader && state->language_version >= 130)
+      read_builtins(state, instructions,
+                    functions_for_130_fs,
+                    sizeof(functions_for_130_fs) / sizeof(const char *));
+
+   if (state->ARB_texture_rectangle_enable)
+      read_builtins(state, instructions,
+                    functions_for_ARB_texture_rectangle,
+                    sizeof(functions_for_ARB_texture_rectangle) / sizeof(const char *));
+
+   if (state->EXT_texture_array_enable)
+      read_builtins(state, instructions,
+                    functions_for_EXT_texture_array,
+                    sizeof(functions_for_EXT_texture_array) / sizeof(const char *));
+
+   if (state->target == fragment_shader && state->EXT_texture_array_enable)
+      read_builtins(state, instructions,
+                    functions_for_EXT_texture_array_fs,
+                    sizeof(functions_for_EXT_texture_array_fs) / sizeof(const char *));
+
 }