On Pre-Evergreen hardware we have a flag
"Force Clamp X,Y policy to wrap for CubeMaps"
but it doesn't seem to affect how border clamping is done. With
bf3027 this is set to PIPE_TEX_WRAP_CLAMP_TO_EDGE for cube maps,
and results in the regression reported in #9028.
Forcing repeat mode fixes the issue.
Fixes:
bf3027c3916ad5be172c22851e7172671709a9bc
mesa/st: Normalize wrap modes for seamless cubes
Related: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9028
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23848>
enum pipe_texture_target target = PIPE_BUFFER;
if (rview)
target = rview->base.texture->target;
+
+ /* If seamless cube map is set, set the CAMP_(X|Y|Z) to
+ * SQ_TEX_WRAP which seems to trigger properly ignoring the
+ * texture wrap mode */
+ if (target == PIPE_TEXTURE_CUBE ||
+ target == PIPE_TEXTURE_CUBE_ARRAY) {
+ if (rstate->seamless_cube_map){
+ uint32_t mask = ~(S_03C000_CLAMP_X(7) |
+ S_03C000_CLAMP_Y(7) |
+ S_03C000_CLAMP_Z(7));
+ rstate->tex_sampler_words[0] &= mask;
+ }
+ }
+
if (target == PIPE_TEXTURE_1D_ARRAY ||
target == PIPE_TEXTURE_2D_ARRAY) {
rstate->tex_sampler_words[0] |= S_03C000_TEX_ARRAY_OVERRIDE(1);