[Mesa-dev] [PATCH] gallivm: adjust wrap mode to CLAMP_TO_EDGE always for cube maps.
Jose Fonseca
jfonseca at vmware.com
Thu Sep 19 07:13:57 PDT 2013
Sounds good to me. Thanks.
Jose
----- Original Message -----
> From: Roland Scheidegger <sroland at vmware.com>
>
> Technically without seamless filtering enabled GL allows any wrap mode, which
> made sense when supporting true borders (can get seamless effect with border
> and CLAMP_TO_BORDER), but gallium doesn't support borders and d3d9 requires
> wrap modes to be ignored and it's a pain to fix up the sampler state (as it
> makes it texture dependent). It is difficult to imagine a situation where an
> app really wants another behavior so just cheat here.
> ---
> src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> index 355e97d..33378bc 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> @@ -2123,14 +2123,18 @@ lp_build_sample_soa(struct gallivm_state *gallivm,
> debug_printf(" .min_mip_filter = %u\n",
> derived_sampler_state.min_mip_filter);
> }
>
> - if ((static_texture_state->target == PIPE_TEXTURE_CUBE ||
> - static_texture_state->target == PIPE_TEXTURE_CUBE_ARRAY) &&
> - static_sampler_state->seamless_cube_map)
> + if (static_texture_state->target == PIPE_TEXTURE_CUBE ||
> + static_texture_state->target == PIPE_TEXTURE_CUBE_ARRAY)
> {
> /*
> * Seamless filtering ignores wrap modes.
> * Setting to CLAMP_TO_EDGE is correct for nearest filtering, for
> * bilinear it's not correct but way better than using for instance
> repeat.
> + * Note we even set this for non-seamless. Technically GL allows any
> wrap
> + * mode, which made sense when supporting true borders (can get
> seamless
> + * effect with border and CLAMP_TO_BORDER), but gallium doesn't
> support
> + * borders and d3d9 requires wrap modes to be ignored and it's a pain
> to fix
> + * up the sampler state (as it makes it texture dependent).
> */
> derived_sampler_state.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
> derived_sampler_state.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
> --
> 1.7.9.5
>
More information about the mesa-dev
mailing list