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