Mesa (master): radeonsi/gfx9: fix TC-compatible stencil compression

Marek Olšák mareko at kemper.freedesktop.org
Mon Jun 19 18:18:45 UTC 2017


Module: Mesa
Branch: master
Commit: 0f827b51c0b7e6120df1fedadf34b578b5bcff53
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f827b51c0b7e6120df1fedadf34b578b5bcff53

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Fri Jun 16 22:54:26 2017 +0200

radeonsi/gfx9: fix TC-compatible stencil compression

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/amd/common/gfx9d.h                  | 4 ++--
 src/gallium/drivers/radeonsi/si_state.c | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/amd/common/gfx9d.h b/src/amd/common/gfx9d.h
index 787d0a94df..8c61645184 100644
--- a/src/amd/common/gfx9d.h
+++ b/src/amd/common/gfx9d.h
@@ -1345,8 +1345,8 @@
 #define     V_008F14_IMG_DATA_FORMAT_RESERVED_56                    0x38
 #define     V_008F14_IMG_DATA_FORMAT_4_4                            0x39
 #define     V_008F14_IMG_DATA_FORMAT_6_5_5                          0x3A
-#define     V_008F14_IMG_DATA_S8_16                                 0x3B
-#define     V_008F14_IMG_DATA_S8_32                                 0x3C
+#define     V_008F14_IMG_DATA_FORMAT_S8_16                          0x3B
+#define     V_008F14_IMG_DATA_FORMAT_S8_32                          0x3C
 #define     V_008F14_IMG_DATA_FORMAT_8_AS_32                        0x3D
 #define     V_008F14_IMG_DATA_FORMAT_8_AS_32_32                     0x3E
 #define     V_008F14_IMG_DATA_FORMAT_32_AS_32_32_32_32              0x3F
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 1cd1f9190e..831c6b8ea3 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3227,6 +3227,12 @@ si_make_texture_descriptor(struct si_screen *screen,
 		data_format = V_008F14_IMG_DATA_FORMAT_24_8;
 	}
 
+	/* S8 with Z32 HTILE needs a special format. */
+	if (screen->b.chip_class >= GFX9 &&
+	    pipe_format == PIPE_FORMAT_S8_UINT &&
+	    tex->tc_compatible_htile)
+		data_format = V_008F14_IMG_DATA_FORMAT_S8_32;
+
 	if (!sampler &&
 	    (res->target == PIPE_TEXTURE_CUBE ||
 	     res->target == PIPE_TEXTURE_CUBE_ARRAY ||




More information about the mesa-commit mailing list