[Mesa-dev] [PATCH 13/21] mesa/ff_shader: Fix sampler state reading
Fixed function fragment shader generator was incorrectly read texture sampling state directly from texture object. To make sure that ARB_sampler_object works correctly shader generator has to use the bound sampler if one exist Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com --- src/mesa/main/ff_fragment_shader.cpp |5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp index 0233f38..f743ce1 100644 --- a/src/mesa/main/ff_fragment_shader.cpp +++ b/src/mesa/main/ff_fragment_shader.cpp @@ -33,6 +33,7 @@ extern C { #include mtypes.h #include main/uniforms.h #include main/macros.h +#include main/samplerobj.h #include program/program.h #include program/prog_parameter.h #include program/prog_cache.h @@ -428,11 +429,13 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) const struct gl_texture_unit *texUnit = ctx-Texture.Unit[i]; const struct gl_texture_object *texObj = texUnit-_Current; const struct gl_tex_env_combine_state *comb = texUnit-_CurrentCombine; + const struct gl_sampler_object *samp; GLenum format; if (!texUnit-_ReallyEnabled || !texUnit-Enabled) continue; + samp = _mesa_get_samplerobj(ctx, i); format = texObj-Image[0][texObj-BaseLevel]-_BaseFormat; key-unit[i].enabled = 1; @@ -444,7 +447,7 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) translate_tex_src_bit(texUnit-_ReallyEnabled); key-unit[i].shadow = - ((texObj-Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE) + ((samp-CompareMode == GL_COMPARE_R_TO_TEXTURE) ((format == GL_DEPTH_COMPONENT) || (format == GL_DEPTH_STENCIL_EXT))); -- 1.7.9.5 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 13/21] mesa/ff_shader: Fix sampler state reading
On 06/11/2012 12:59 AM, Pauli Nieminen wrote: Fixed function fragment shader generator was incorrectly read texture sampling state directly from texture object. To make sure that ARB_sampler_object works correctly shader generator has to use the bound sampler if one exist Signed-off-by: Pauli Nieminenpauli.niemi...@linux.intel.com --- src/mesa/main/ff_fragment_shader.cpp |5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp index 0233f38..f743ce1 100644 --- a/src/mesa/main/ff_fragment_shader.cpp +++ b/src/mesa/main/ff_fragment_shader.cpp @@ -33,6 +33,7 @@ extern C { #include mtypes.h #include main/uniforms.h #include main/macros.h +#include main/samplerobj.h #include program/program.h #include program/prog_parameter.h #include program/prog_cache.h @@ -428,11 +429,13 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) const struct gl_texture_unit *texUnit =ctx-Texture.Unit[i]; const struct gl_texture_object *texObj = texUnit-_Current; const struct gl_tex_env_combine_state *comb = texUnit-_CurrentCombine; + const struct gl_sampler_object *samp; GLenum format; if (!texUnit-_ReallyEnabled || !texUnit-Enabled) continue; + samp = _mesa_get_samplerobj(ctx, i); format = texObj-Image[0][texObj-BaseLevel]-_BaseFormat; key-unit[i].enabled = 1; @@ -444,7 +447,7 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) translate_tex_src_bit(texUnit-_ReallyEnabled); key-unit[i].shadow = - ((texObj-Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE) + ((samp-CompareMode == GL_COMPARE_R_TO_TEXTURE) ((format == GL_DEPTH_COMPONENT) || (format == GL_DEPTH_STENCIL_EXT))); Reviewed-by: Brian Paul bri...@vmware.com ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev