mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 12:50:12 +01:00
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>
This commit is contained in:
parent
3b68fc0c6a
commit
e4e8db0132
3 changed files with 21 additions and 21 deletions
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue