aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Scheidegger <[email protected]>2013-09-19 17:13:18 +0200
committerRoland Scheidegger <[email protected]>2013-09-19 17:14:36 +0200
commit532dc8939f81c1fe2ecd37fda9dfb24ee38ae201 (patch)
treea14a53453980bdd06915385f089e21213e769f74
parent602d368446e7c97225f98429ffd54b53522c3b36 (diff)
gallivm: adjust wrap mode to CLAMP_TO_EDGE always for cube maps.
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. (It looks like some graphics hw (intel) actually requires this too hence it should be safe.) Reviewed-by: Jose Fonseca <[email protected]>
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c10
1 files 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 355e97d76a6..33378bcdcd0 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;