[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