mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
turnip: Switch tu6_format_texture() to a pipe_format.
To handle Y8 specially, we want a PIPE_FORMAT instead of VK_FORMAT. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13379>
This commit is contained in:
parent
cfabdbd7d3
commit
3b68fc0c6a
4 changed files with 19 additions and 19 deletions
|
|
@ -183,7 +183,7 @@ r2d_src_buffer(struct tu_cmd_buffer *cmd,
|
|||
uint64_t va, uint32_t pitch,
|
||||
uint32_t width, uint32_t height)
|
||||
{
|
||||
struct tu_native_format format = tu6_format_texture(vk_format, TILE6_LINEAR);
|
||||
struct tu_native_format format = tu6_format_texture(tu_vk_format_to_pipe_format(vk_format), TILE6_LINEAR);
|
||||
|
||||
tu_cs_emit_regs(cs,
|
||||
A6XX_SP_PS_2D_SRC_INFO(
|
||||
|
|
@ -873,7 +873,7 @@ r3d_src_buffer(struct tu_cmd_buffer *cmd,
|
|||
{
|
||||
uint32_t desc[A6XX_TEX_CONST_DWORDS];
|
||||
|
||||
struct tu_native_format format = tu6_format_texture(vk_format, TILE6_LINEAR);
|
||||
struct tu_native_format format = tu6_format_texture(tu_vk_format_to_pipe_format(vk_format), TILE6_LINEAR);
|
||||
|
||||
desc[0] =
|
||||
COND(vk_format_is_srgb(vk_format), A6XX_TEX_CONST_0_SRGB) |
|
||||
|
|
@ -910,7 +910,7 @@ r3d_src_gmem(struct tu_cmd_buffer *cmd,
|
|||
|
||||
/* patch the format so that depth/stencil get the right format */
|
||||
desc[0] &= ~A6XX_TEX_CONST_0_FMT__MASK;
|
||||
desc[0] |= A6XX_TEX_CONST_0_FMT(tu6_format_texture(format, TILE6_2).fmt);
|
||||
desc[0] |= A6XX_TEX_CONST_0_FMT(tu6_format_texture(tu_vk_format_to_pipe_format(format), TILE6_2).fmt);
|
||||
|
||||
/* patched for gmem */
|
||||
desc[0] &= ~(A6XX_TEX_CONST_0_SWAP__MASK | A6XX_TEX_CONST_0_TILE_MODE__MASK);
|
||||
|
|
@ -1670,8 +1670,8 @@ tu_CmdCopyImageToBuffer(VkCommandBuffer commandBuffer,
|
|||
static bool
|
||||
is_swapped_format(VkFormat format)
|
||||
{
|
||||
struct tu_native_format linear = tu6_format_texture(format, TILE6_LINEAR);
|
||||
struct tu_native_format tiled = tu6_format_texture(format, TILE6_3);
|
||||
struct tu_native_format linear = tu6_format_texture(tu_vk_format_to_pipe_format(format), TILE6_LINEAR);
|
||||
struct tu_native_format tiled = tu6_format_texture(tu_vk_format_to_pipe_format(format), TILE6_3);
|
||||
return linear.fmt != tiled.fmt || linear.swap != tiled.swap;
|
||||
}
|
||||
|
||||
|
|
@ -2797,7 +2797,7 @@ store_cp_blit(struct tu_cmd_buffer *cmd,
|
|||
|
||||
tu_cs_emit_regs(cs,
|
||||
A6XX_SP_PS_2D_SRC_INFO(
|
||||
.color_format = tu6_format_texture(format, TILE6_2).fmt,
|
||||
.color_format = tu6_format_texture(tu_vk_format_to_pipe_format(format), TILE6_2).fmt,
|
||||
.tile_mode = TILE6_2,
|
||||
.srgb = vk_format_is_srgb(format),
|
||||
.samples = tu_msaa_samples(samples),
|
||||
|
|
|
|||
|
|
@ -114,9 +114,8 @@ tu6_format_color(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
|
|||
}
|
||||
|
||||
static struct tu_native_format
|
||||
tu6_format_texture_unchecked(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
|
||||
tu6_format_texture_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_texture_format(format, tile_mode),
|
||||
.swap = fd6_texture_swap(format, tile_mode),
|
||||
|
|
@ -148,17 +147,17 @@ tu6_format_texture_unchecked(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
|
|||
}
|
||||
|
||||
struct tu_native_format
|
||||
tu6_format_texture(VkFormat vk_format, enum a6xx_tile_mode tile_mode)
|
||||
tu6_format_texture(enum pipe_format format, enum a6xx_tile_mode tile_mode)
|
||||
{
|
||||
struct tu_native_format fmt = tu6_format_texture_unchecked(vk_format, tile_mode);
|
||||
struct tu_native_format fmt = tu6_format_texture_unchecked(format, tile_mode);
|
||||
assert(fmt.fmt != FMT6_NONE);
|
||||
return fmt;
|
||||
}
|
||||
|
||||
bool
|
||||
tu6_format_texture_supported(VkFormat vk_format)
|
||||
tu6_format_texture_supported(enum pipe_format format)
|
||||
{
|
||||
return tu6_format_texture_unchecked(vk_format, TILE6_LINEAR).fmt != FMT6_NONE;
|
||||
return tu6_format_texture_unchecked(format, TILE6_LINEAR).fmt != FMT6_NONE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -173,7 +172,7 @@ tu_physical_device_get_format_properties(
|
|||
|
||||
bool supported_vtx = tu6_format_vtx_supported(vk_format);
|
||||
bool supported_color = tu6_format_color_supported(vk_format);
|
||||
bool supported_tex = tu6_format_texture_supported(vk_format);
|
||||
bool supported_tex = tu6_format_texture_supported(format);
|
||||
|
||||
if (format == PIPE_FORMAT_NONE ||
|
||||
!(supported_vtx || supported_color || supported_tex)) {
|
||||
|
|
@ -223,7 +222,7 @@ tu_physical_device_get_format_properties(
|
|||
* after we enable shaderStorageImageReadWithoutFormat and there are
|
||||
* tests for these formats.
|
||||
*/
|
||||
struct tu_native_format tex = tu6_format_texture(vk_format, TILE6_LINEAR);
|
||||
struct tu_native_format tex = tu6_format_texture(format, TILE6_LINEAR);
|
||||
if (tex.swap == WZYX && tex.fmt != FMT6_1_5_5_5_UNORM) {
|
||||
optimal |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
|
||||
buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
|
||||
|
|
|
|||
|
|
@ -462,7 +462,7 @@ tu_CreateImage(VkDevice _device,
|
|||
if (fmt_list) {
|
||||
may_be_swapped = false;
|
||||
for (uint32_t i = 0; i < fmt_list->viewFormatCount; i++) {
|
||||
if (tu6_format_texture(fmt_list->pViewFormats[i], TILE6_LINEAR).swap) {
|
||||
if (tu6_format_texture(tu_vk_format_to_pipe_format(fmt_list->pViewFormats[i]), TILE6_LINEAR).swap) {
|
||||
may_be_swapped = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -706,8 +706,8 @@ tu_buffer_view_init(struct tu_buffer_view *view,
|
|||
view->buffer = buffer;
|
||||
|
||||
enum VkFormat vfmt = pCreateInfo->format;
|
||||
enum pipe_format pfmt = vk_format_to_pipe_format(vfmt);
|
||||
const struct tu_native_format fmt = tu6_format_texture(vfmt, TILE6_LINEAR);
|
||||
enum pipe_format pfmt = tu_vk_format_to_pipe_format(vfmt);
|
||||
const struct tu_native_format fmt = tu6_format_texture(pfmt, TILE6_LINEAR);
|
||||
|
||||
uint32_t range;
|
||||
if (pCreateInfo->range == VK_WHOLE_SIZE)
|
||||
|
|
|
|||
|
|
@ -1382,12 +1382,13 @@ struct tu_native_format
|
|||
enum a6xx_tile_mode tile_mode : 8;
|
||||
};
|
||||
|
||||
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_texture_supported(VkFormat format);
|
||||
struct tu_native_format tu6_format_texture(VkFormat 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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue