From e2fecf57e343961cd1db9251cef2c9eb95948d2f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 1 May 2019 14:30:10 +1000 Subject: [PATCH] r600: reset tex array override even when no view bound If no view is bound we still should reset the override to 0 and array mode. This should fix misrendering in firefox WebRender since the pbo sampler was removed. Fixes: 1250383e36 (st/mesa: remove sampler associated with buffer texture in pbo logic) --- src/gallium/drivers/r600/r600_state.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index f86764f5220..96ffbf82927 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -1837,18 +1837,17 @@ static void r600_emit_sampler_states(struct r600_context *rctx, /* TEX_ARRAY_OVERRIDE must be set for array textures to disable * filtering between layers. - * Don't update TEX_ARRAY_OVERRIDE if we don't have the sampler view. */ - if (rview) { - enum pipe_texture_target target = rview->base.texture->target; - if (target == PIPE_TEXTURE_1D_ARRAY || - target == PIPE_TEXTURE_2D_ARRAY) { - rstate->tex_sampler_words[0] |= S_03C000_TEX_ARRAY_OVERRIDE(1); - texinfo->is_array_sampler[i] = true; - } else { - rstate->tex_sampler_words[0] &= C_03C000_TEX_ARRAY_OVERRIDE; - texinfo->is_array_sampler[i] = false; - } + enum pipe_texture_target target = PIPE_BUFFER; + if (rview) + target = rview->base.texture->target; + if (target == PIPE_TEXTURE_1D_ARRAY || + target == PIPE_TEXTURE_2D_ARRAY) { + rstate->tex_sampler_words[0] |= S_03C000_TEX_ARRAY_OVERRIDE(1); + texinfo->is_array_sampler[i] = true; + } else { + rstate->tex_sampler_words[0] &= C_03C000_TEX_ARRAY_OVERRIDE; + texinfo->is_array_sampler[i] = false; } radeon_emit(cs, PKT3(PKT3_SET_SAMPLER, 3, 0)); -- 2.30.2