[Mesa-dev] [PATCH 13/21] mesa/ff_shader: Fix sampler state reading

Brian Paul brianp at vmware.com
Mon Jun 11 08:41:51 PDT 2012


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 Nieminen<pauli.nieminen at 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 <brianp at vmware.com>


More information about the mesa-dev mailing list