-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 04/22/2011 12:02 PM, Kenneth Graunke wrote: > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > .../builtins/profiles/ARB_shader_texture_lod.frag | 64 > ++++++++++++++++++++ > .../builtins/profiles/ARB_shader_texture_lod.vert | 46 ++++++++++++++ > src/glsl/builtins/tools/texture_builtins.py | 64 > ++++++++++++++++++++ > src/glsl/glcpp/glcpp-parse.y | 4 + > src/glsl/glsl_parser_extras.cpp | 8 +++ > src/glsl/glsl_parser_extras.h | 2 + > 6 files changed, 188 insertions(+), 0 deletions(-) > create mode 100644 src/glsl/builtins/profiles/ARB_shader_texture_lod.frag > create mode 100644 src/glsl/builtins/profiles/ARB_shader_texture_lod.vert > > diff --git a/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag > b/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag > new file mode 100644 > index 0000000..fefd707 > --- /dev/null > +++ b/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag > @@ -0,0 +1,64 @@ > +/* > + * The existing isotropic vertex texture functions are added to the > + * built-in functions for fragment shaders. > + */ > +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 texture2DLod (sampler2D sampler, vec2 coord, float lod); > +vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); > +vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); > +vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); > +vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); > +vec4 textureCubeLod (sampler3D sampler, vec3 coord, float lod); > +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); > + > +/* New anisotropic texture functions, providing explicit derivatives: */ > +vec4 texture1DGradARB (sampler1D sampler, > + float P, float dPdx, float dPdy); > +vec4 texture1DProjGradARB (sampler1D sampler, > + vec2 P, float dPdx, float dPdy); > +vec4 texture1DProjGradARB (sampler1D sampler, > + vec4 P, float dPdx, float dPdy); > + > +vec4 texture2DGradARB (sampler2D sampler, > + vec2 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DProjGradARB (sampler2D sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DProjGradARB (sampler2D sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > + > +vec4 texture3DGradARB (sampler3D sampler, > + vec3 P, vec3 dPdx, vec3 dPdy); > +vec4 texture3DProjGradARB (sampler3D sampler, > + vec4 P, vec3 dPdx, vec3 dPdy); > + > +vec4 textureCubeGradARB (samplerCube sampler, > + vec3 P, vec3 dPdx, vec3 dPdy); > + > +vec4 shadow1DGradARB (sampler1DShadow sampler, > + vec3 P, float dPdx, float dPdy); > +vec4 shadow1DProjGradARB (sampler1DShadow sampler, > + vec4 P, float dPdx, float dPdy); > + > +vec4 shadow2DGradARB (sampler2DShadow sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 shadow2DProjGradARB (sampler2DShadow sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > + > +#ifdef GL_ARB_texture_rectangle > +vec4 texture2DRectGradARB (sampler2DRect sampler, > + vec2 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DRectProjGradARB(sampler2DRect sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DRectProjGradARB(sampler2DRect sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > + > +vec4 shadow2DRectGradARB (sampler2DRectShadow sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 shadow2DRectProjGradARB (sampler2DRectShadow sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > +#endif > diff --git a/src/glsl/builtins/profiles/ARB_shader_texture_lod.vert > b/src/glsl/builtins/profiles/ARB_shader_texture_lod.vert > new file mode 100644 > index 0000000..edfed26 > --- /dev/null > +++ b/src/glsl/builtins/profiles/ARB_shader_texture_lod.vert > @@ -0,0 +1,46 @@ > +/* New anisotropic texture functions, providing explicit derivatives: */ > +vec4 texture1DGradARB (sampler1D sampler, > + float P, float dPdx, float dPdy); > +vec4 texture1DProjGradARB (sampler1D sampler, > + vec2 P, float dPdx, float dPdy); > +vec4 texture1DProjGradARB (sampler1D sampler, > + vec4 P, float dPdx, float dPdy); > + > +vec4 texture2DGradARB (sampler2D sampler, > + vec2 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DProjGradARB (sampler2D sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DProjGradARB (sampler2D sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > + > +vec4 texture3DGradARB (sampler3D sampler, > + vec3 P, vec3 dPdx, vec3 dPdy); > +vec4 texture3DProjGradARB (sampler3D sampler, > + vec4 P, vec3 dPdx, vec3 dPdy); > + > +vec4 textureCubeGradARB (samplerCube sampler, > + vec3 P, vec3 dPdx, vec3 dPdy); > + > +vec4 shadow1DGradARB (sampler1DShadow sampler, > + vec3 P, float dPdx, float dPdy); > +vec4 shadow1DProjGradARB (sampler1DShadow sampler, > + vec4 P, float dPdx, float dPdy); > + > +vec4 shadow2DGradARB (sampler2DShadow sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 shadow2DProjGradARB (sampler2DShadow sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > + > +#ifdef GL_ARB_texture_rectangle > +vec4 texture2DRectGradARB (sampler2DRect sampler, > + vec2 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DRectProjGradARB(sampler2DRect sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 texture2DRectProjGradARB(sampler2DRect sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > + > +vec4 shadow2DRectGradARB (sampler2DRectShadow sampler, > + vec3 P, vec2 dPdx, vec2 dPdy); > +vec4 shadow2DRectProjGradARB (sampler2DRectShadow sampler, > + vec4 P, vec2 dPdx, vec2 dPdy); > +#endif > diff --git a/src/glsl/builtins/tools/texture_builtins.py > b/src/glsl/builtins/tools/texture_builtins.py > index 2fbe790..a4054ca 100755 > --- a/src/glsl/builtins/tools/texture_builtins.py > +++ b/src/glsl/builtins/tools/texture_builtins.py > @@ -369,6 +369,70 @@ def generate_texture_functions(fs): > generate_sigs("", "tex", "2DArrayShadow") > end_function(fs, "shadow2DArray") > > + # ARB_shader_texture_lod extension > + start_function("texture1DGradARB") > + generate_fiu_sigs("txd", "1D") > + end_function(fs, "texture1DGradARB") > + > + start_function("texture2DGradARB") > + generate_fiu_sigs("txd", "2D") > + end_function(fs, "texture2DGradARB") > + > + start_function("texture3DGradARB") > + generate_fiu_sigs("txd", "3D") > + end_function(fs, "texture3DGradARB") > + > + start_function("textureCubeGradARB") > + generate_fiu_sigs("txd", "Cube") > + end_function(fs, "textureCubeGradARB") > + > + start_function("texture1DProjGradARB") > + generate_fiu_sigs("txd", "1D", True) > + generate_fiu_sigs("txd", "1D", True, 2) > + end_function(fs, "texture1DProjGradARB") > + > + start_function("texture2DProjGradARB") > + generate_fiu_sigs("txd", "2D", True) > + generate_fiu_sigs("txd", "2D", True, 1) > + end_function(fs, "texture2DProjGradARB") > + > + start_function("texture3DProjGradARB") > + generate_fiu_sigs("txd", "3D", True) > + end_function(fs, "texture3DProjGradARB") > + > + start_function("shadow1DGradARB") > + generate_sigs("", "txd", "1DShadow", False, 1) > + end_function(fs, "shadow1DGradARB") > + > + start_function("shadow1DProjGradARB") > + generate_sigs("", "txd", "1DShadow", True, 1) > + end_function(fs, "shadow1DProjGradARB") > + > + start_function("shadow2DGradARB") > + generate_sigs("", "txd", "2DShadow", False) > + end_function(fs, "shadow2DGradARB") > + > + start_function("shadow2DProjGradARB") > + generate_sigs("", "txd", "2DShadow", True) > + end_function(fs, "shadow2DProjGradARB") > + > + start_function("texture2DRectGradARB") > + generate_sigs("", "txd", "2DRect") > + end_function(fs, "texture2DRectGradARB") > + > + start_function("texture2DRectProjGradARB") > + generate_sigs("", "txd", "2DRect", True) > + generate_sigs("", "txd", "2DRect", True, 1) > + end_function(fs, "texture2DRectProjGradARB") > + > + start_function("shadow2DRectGradARB") > + generate_sigs("", "txd", "2DRectShadow", False) > + end_function(fs, "shadow2DRectGradARB") > + > + start_function("shadow2DRectProjGradARB") > + generate_sigs("", "txd", "2DRectShadow", True) > + end_function(fs, "shadow2DRectProjGradARB") > + > # Deprecated (110/120 style) functions with silly names: > start_function("texture1D") > generate_sigs("", "tex", "1D") > diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y > index 6f15e85..0a35e88 100644 > --- a/src/glsl/glcpp/glcpp-parse.y > +++ b/src/glsl/glcpp/glcpp-parse.y > @@ -1128,6 +1128,10 @@ glcpp_parser_create (const struct gl_extensions > *extensions, int api) > > if (extensions->ARB_explicit_attrib_location) > add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1); > + > + if (extensions->ARB_shader_texture_lod) > + add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1); > + > if (extensions->AMD_conservative_depth) > add_builtin_define(parser, "GL_AMD_conservative_depth", 1); > } > diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp > index 5bb3a6f..e95e595 100644 > --- a/src/glsl/glsl_parser_extras.cpp > +++ b/src/glsl/glsl_parser_extras.cpp > @@ -240,6 +240,14 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE > *name_locp, > state->EXT_texture_array_warn = (ext_mode == extension_warn); > > unsupported = !state->extensions->EXT_texture_array; > + } else if (strcmp(name, "GL_ARB_shader_texture_lod") == 0) { > + /* Force ARB_texture_rectangle to be on so sampler2DRects are defined > */ > + state->ARB_texture_rectangle_enable = true;
Isn't this always enabled anyway? > + > + state->ARB_shader_texture_lod_enable = (ext_mode != extension_disable); > + state->ARB_shader_texture_lod_warn = (ext_mode == extension_warn); > + > + unsupported = !state->extensions->ARB_shader_texture_lod; > } else if (strcmp(name, "GL_ARB_shader_stencil_export") == 0) { > state->ARB_shader_stencil_export_enable = (ext_mode != > extension_disable); > state->ARB_shader_stencil_export_warn = (ext_mode == extension_warn); > diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h > index 6df0e16..9abc90f 100644 > --- a/src/glsl/glsl_parser_extras.h > +++ b/src/glsl/glsl_parser_extras.h > @@ -168,6 +168,8 @@ struct _mesa_glsl_parse_state { > unsigned ARB_texture_rectangle_warn:1; > unsigned EXT_texture_array_enable:1; > unsigned EXT_texture_array_warn:1; > + unsigned ARB_shader_texture_lod_enable:1; > + unsigned ARB_shader_texture_lod_warn:1; > unsigned ARB_shader_stencil_export_enable:1; > unsigned ARB_shader_stencil_export_warn:1; > unsigned AMD_conservative_depth_enable:1; -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk218BEACgkQX1gOwKyEAw/3AwCcD3XHuBQrJ9Q2h+NWJ95SBKOz uVcAni0iH2gbyflodpFzNG1TRQFjUHMZ =RbJv -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev