From 3fd512440bf094505c02c457f195914239b44475 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 30 Oct 2020 09:57:52 +0100 Subject: [PATCH] etnaviv: tex_desc: fix TS compression enable The TX_CTRL register has a bit to enable TS compression, the setting in TS_SAMPLER_CONFIG is ignored for descriptor based textures. Apparently 256B tile mode already implies enabled compression to the HW, as with the larger tile mode with compression was working fine, only the 128B tile mode needs this change to work correctly. Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_texture.c | 1 + src/gallium/drivers/etnaviv/etnaviv_texture.h | 1 + src/gallium/drivers/etnaviv/etnaviv_texture_desc.c | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.c b/src/gallium/drivers/etnaviv/etnaviv_texture.c index e358f70ac39..9202bda9168 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture.c +++ b/src/gallium/drivers/etnaviv/etnaviv_texture.c @@ -98,6 +98,7 @@ etna_configure_sampler_ts(struct etna_sampler_ts *sts, struct pipe_sampler_view assert(rsc->ts_bo && lev->ts_valid); sts->mode = lev->ts_mode; + sts->comp = lev->ts_compress_fmt >= 0; sts->TS_SAMPLER_CONFIG = VIVS_TS_SAMPLER_CONFIG_ENABLE | COND(lev->ts_compress_fmt >= 0, VIVS_TS_SAMPLER_CONFIG_COMPRESSION) | diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.h b/src/gallium/drivers/etnaviv/etnaviv_texture.h index e2e9d2b51cd..f0d32307cb6 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture.h +++ b/src/gallium/drivers/etnaviv/etnaviv_texture.h @@ -37,6 +37,7 @@ struct etna_context; struct etna_sampler_ts { unsigned enable:1; unsigned mode:1; + unsigned comp:1; uint32_t TS_SAMPLER_CONFIG; struct etna_reloc TS_SAMPLER_STATUS_BASE; uint32_t TS_SAMPLER_CLEAR_VALUE; diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c b/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c index 25efcd3dee3..745d096533c 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c +++ b/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c @@ -297,7 +297,8 @@ etna_emit_texture_desc(struct etna_context *ctx) etna_set_state(stream, VIVS_NTE_DESCRIPTOR_TX_CTRL(x), COND(sv->ts.enable, VIVS_NTE_DESCRIPTOR_TX_CTRL_TS_ENABLE) | VIVS_NTE_DESCRIPTOR_TX_CTRL_TS_MODE(sv->ts.mode) | - VIVS_NTE_DESCRIPTOR_TX_CTRL_TS_INDEX(x)); + VIVS_NTE_DESCRIPTOR_TX_CTRL_TS_INDEX(x)| + COND(sv->ts.comp, VIVS_NTE_DESCRIPTOR_TX_CTRL_COMPRESSION)); etna_set_state(stream, VIVS_NTE_DESCRIPTOR_SAMP_CTRL0(x), ss->SAMP_CTRL0 | sv->SAMP_CTRL0); etna_set_state(stream, VIVS_NTE_DESCRIPTOR_SAMP_CTRL1(x), ss->SAMP_CTRL1 | sv->SAMP_CTRL1); etna_set_state(stream, VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX(x), ss->SAMP_LOD_MINMAX);