Mesa (main): turnip: Switch tu6_format_color() to a pipe_format.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 21 09:15:40 UTC 2021


Module: Mesa
Branch: main
Commit: e4e8db01327d4363ac18c9e92f8fa9ee986cb6ba
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e4e8db01327d4363ac18c9e92f8fa9ee986cb6ba

Author: Emma Anholt <emma at anholt.net>
Date:   Tue Oct  5 20:55:21 2021 -0700

turnip: Switch tu6_format_color() to a pipe_format.

To handle Y8 specially, we want a PIPE_FORMAT instead of VK_FORMAT.  There
are some redundant vk-to-pipe conversions, but they're going to go away
shortly.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13379>

---

 src/freedreno/vulkan/tu_clear_blit.c | 23 ++++++++++++-----------
 src/freedreno/vulkan/tu_formats.c    | 13 ++++++-------
 src/freedreno/vulkan/tu_private.h    |  6 +++---
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c
index bd350c0a3c3..4b60fb6f803 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -220,7 +220,7 @@ r2d_dst_stencil(struct tu_cs *cs, const struct tu_image_view *iview, uint32_t la
 static void
 r2d_dst_buffer(struct tu_cs *cs, VkFormat vk_format, uint64_t va, uint32_t pitch)
 {
-   struct tu_native_format format = tu6_format_color(vk_format, TILE6_LINEAR);
+   struct tu_native_format format = tu6_format_color(tu_vk_format_to_pipe_format(vk_format), TILE6_LINEAR);
 
    tu_cs_emit_regs(cs,
                    A6XX_RB_2D_DST_INFO(
@@ -241,13 +241,14 @@ r2d_setup_common(struct tu_cmd_buffer *cmd,
                  bool ubwc,
                  bool scissor)
 {
-   enum a6xx_format format = tu6_base_format(vk_format);
+   enum pipe_format format = tu_vk_format_to_pipe_format(vk_format);
+   enum a6xx_format fmt = tu6_base_format(format);
    enum a6xx_2d_ifmt ifmt = format_to_ifmt(vk_format);
    uint32_t unknown_8c01 = 0;
 
    if ((vk_format == VK_FORMAT_D24_UNORM_S8_UINT ||
         vk_format == VK_FORMAT_X8_D24_UNORM_PACK32) && ubwc) {
-      format = FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8;
+      fmt = FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8;
    }
 
    /* note: the only format with partial clearing is D24S8 */
@@ -267,8 +268,8 @@ r2d_setup_common(struct tu_cmd_buffer *cmd,
          .scissor = scissor,
          .rotate = blit_param,
          .solid_color = clear,
-         .d24s8 = format == FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8 && !clear,
-         .color_format = format,
+         .d24s8 = fmt == FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8 && !clear,
+         .color_format = fmt,
          .mask = 0xf,
          .ifmt = vk_format_is_srgb(vk_format) ? R2D_UNORM8_SRGB : ifmt,
       ).value;
@@ -279,13 +280,13 @@ r2d_setup_common(struct tu_cmd_buffer *cmd,
    tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_2D_BLIT_CNTL, 1);
    tu_cs_emit(cs, blit_cntl);
 
-   if (format == FMT6_10_10_10_2_UNORM_DEST)
-      format = FMT6_16_16_16_16_FLOAT;
+   if (fmt == FMT6_10_10_10_2_UNORM_DEST)
+      fmt = FMT6_16_16_16_16_FLOAT;
 
    tu_cs_emit_regs(cs, A6XX_SP_2D_DST_FORMAT(
          .sint = vk_format_is_sint(vk_format),
          .uint = vk_format_is_uint(vk_format),
-         .color_format = format,
+         .color_format = fmt,
          .srgb = vk_format_is_srgb(vk_format),
          .mask = 0xf));
 }
@@ -955,7 +956,7 @@ r3d_dst_stencil(struct tu_cs *cs, const struct tu_image_view *iview, uint32_t la
 static void
 r3d_dst_buffer(struct tu_cs *cs, VkFormat vk_format, uint64_t va, uint32_t pitch)
 {
-   struct tu_native_format format = tu6_format_color(vk_format, TILE6_LINEAR);
+   struct tu_native_format format = tu6_format_color(tu_vk_format_to_pipe_format(vk_format), TILE6_LINEAR);
 
    tu_cs_emit_regs(cs,
                    A6XX_RB_MRT_BUF_INFO(0, .color_format = format.fmt, .color_swap = format.swap),
@@ -994,7 +995,7 @@ r3d_setup(struct tu_cmd_buffer *cmd,
           bool ubwc,
           VkSampleCountFlagBits samples)
 {
-   enum a6xx_format format = tu6_base_format(vk_format);
+   enum a6xx_format format = tu6_base_format(tu_vk_format_to_pipe_format(vk_format));
 
    if ((vk_format == VK_FORMAT_D24_UNORM_S8_UINT ||
         vk_format == VK_FORMAT_X8_D24_UNORM_PACK32) && ubwc) {
@@ -2448,7 +2449,7 @@ clear_gmem_attachment(struct tu_cmd_buffer *cmd,
                       const VkClearValue *value)
 {
    tu_cs_emit_pkt4(cs, REG_A6XX_RB_BLIT_DST_INFO, 1);
-   tu_cs_emit(cs, A6XX_RB_BLIT_DST_INFO_COLOR_FORMAT(tu6_base_format(format)));
+   tu_cs_emit(cs, A6XX_RB_BLIT_DST_INFO_COLOR_FORMAT(tu6_base_format(tu_vk_format_to_pipe_format(format))));
 
    tu_cs_emit_regs(cs, A6XX_RB_BLIT_INFO(.gmem = 1, .clear_mask = clear_mask));
 
diff --git a/src/freedreno/vulkan/tu_formats.c b/src/freedreno/vulkan/tu_formats.c
index b5519595728..e783e9b2b6d 100644
--- a/src/freedreno/vulkan/tu_formats.c
+++ b/src/freedreno/vulkan/tu_formats.c
@@ -78,9 +78,8 @@ tu_vk_format_to_pipe_format(VkFormat vk_format)
 }
 
 static struct tu_native_format
-tu6_format_color_unchecked(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
+tu6_format_color_unchecked(enum pipe_format format, enum a6xx_tile_mode tile_mode)
 {
-   enum pipe_format format = tu_vk_format_to_pipe_format(vk_format);
    struct tu_native_format fmt = {
       .fmt = fd6_color_format(format, tile_mode),
       .swap = fd6_color_swap(format, tile_mode),
@@ -100,15 +99,15 @@ tu6_format_color_unchecked(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
 }
 
 bool
-tu6_format_color_supported(VkFormat vk_format)
+tu6_format_color_supported(enum pipe_format format)
 {
-   return tu6_format_color_unchecked(vk_format, TILE6_LINEAR).fmt != FMT6_NONE;
+   return tu6_format_color_unchecked(format, TILE6_LINEAR).fmt != FMT6_NONE;
 }
 
 struct tu_native_format
-tu6_format_color(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
+tu6_format_color(enum pipe_format format, enum a6xx_tile_mode tile_mode)
 {
-   struct tu_native_format fmt = tu6_format_color_unchecked(vk_format, tile_mode);
+   struct tu_native_format fmt = tu6_format_color_unchecked(format, tile_mode);
    assert(fmt.fmt != FMT6_NONE);
    return fmt;
 }
@@ -171,7 +170,7 @@ tu_physical_device_get_format_properties(
    const struct util_format_description *desc = util_format_description(format);
 
    bool supported_vtx = tu6_format_vtx_supported(vk_format);
-   bool supported_color = tu6_format_color_supported(vk_format);
+   bool supported_color = tu6_format_color_supported(format);
    bool supported_tex = tu6_format_texture_supported(format);
 
    if (format == PIPE_FORMAT_NONE ||
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index 0bc571d8ad6..03e88d06a2a 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -1385,13 +1385,13 @@ struct tu_native_format
 enum pipe_format tu_vk_format_to_pipe_format(VkFormat vk_format);
 bool tu6_format_vtx_supported(VkFormat format);
 struct tu_native_format tu6_format_vtx(VkFormat format);
-bool tu6_format_color_supported(VkFormat format);
-struct tu_native_format tu6_format_color(VkFormat format, enum a6xx_tile_mode tile_mode);
+bool tu6_format_color_supported(enum pipe_format format);
+struct tu_native_format tu6_format_color(enum pipe_format format, enum a6xx_tile_mode tile_mode);
 bool tu6_format_texture_supported(enum pipe_format format);
 struct tu_native_format tu6_format_texture(enum pipe_format format, enum a6xx_tile_mode tile_mode);
 
 static inline enum a6xx_format
-tu6_base_format(VkFormat format)
+tu6_base_format(enum pipe_format format)
 {
    /* note: tu6_format_color doesn't care about tiling for .fmt field */
    return tu6_format_color(format, TILE6_LINEAR).fmt;



More information about the mesa-commit mailing list