From: Marek Olšák <marek.ol...@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 787d0a9..8c61645 100644
--- a/src/amd/common/gfx9d.h
+++ b/src/amd/common/gfx9d.h
@@ -1338,22 +1338,22 @@
 #define     V_008F14_IMG_DATA_FORMAT_ASTC_3D_LDR                    0x31 /* 
ditto */
 #define     V_008F14_IMG_DATA_FORMAT_ASTC_3D_HDR                    0x32 /* 
ditto */
 #define     V_008F14_IMG_DATA_FORMAT_ASTC_3D_LDR_SRGB               0x33 /* 
ditto */
 #define     V_008F14_IMG_DATA_FORMAT_N_IN_16                        0x34
 #define     V_008F14_IMG_DATA_FORMAT_N_IN_16_16                     0x35
 #define     V_008F14_IMG_DATA_FORMAT_N_IN_16_16_16_16               0x36
 #define     V_008F14_IMG_DATA_FORMAT_N_IN_16_AS_16_16_16_16         0x37
 #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
 #define   S_008F14_NUM_FORMAT_GFX9(x)                                 
(((unsigned)(x) & 0x0F) << 26)
 #define   G_008F14_NUM_FORMAT_GFX9(x)                                 (((x) >> 
26) & 0x0F)
 #define   C_008F14_NUM_FORMAT_GFX9                                    
0xC3FFFFFF
 #define     V_008F14_IMG_NUM_FORMAT_UNORM                           0x00
 #define     V_008F14_IMG_NUM_FORMAT_SNORM                           0x01
 #define     V_008F14_IMG_NUM_FORMAT_USCALED                         0x02
 #define     V_008F14_IMG_NUM_FORMAT_SSCALED                         0x03
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 2a2c3c0..921f374 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3239,20 +3239,26 @@ si_make_texture_descriptor(struct si_screen *screen,
 
        /* Enable clamping for UNORM depth formats promoted to Z32F. */
        if (screen->b.chip_class >= GFX9 &&
            util_format_has_depth(desc) &&
            num_format == V_008F14_IMG_NUM_FORMAT_FLOAT &&
            util_get_depth_format_type(base_desc) != UTIL_FORMAT_TYPE_FLOAT) {
                /* NUM_FORMAT=FLOAT and DATA_FORMAT=24_8 means "clamp to 
[0,1]". */
                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 ||
             (screen->b.chip_class <= VI &&
              res->target == PIPE_TEXTURE_3D))) {
                /* For the purpose of shader images, treat cube maps and 3D
                 * textures as 2D arrays. For 3D textures, the address
                 * calculations for mipmaps are different, so we rely on the
                 * caller to effectively disable mipmaps.
                 */
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to