pvr: support VK_FORMAT_R8G8_SSCALED for vertex attribs

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36412>
This commit is contained in:
Frank Binns 2024-06-11 10:43:28 +01:00 committed by Marge Bot
parent e47512ce94
commit 692893705f
3 changed files with 14 additions and 0 deletions

View file

@ -427,6 +427,7 @@ static VkFormat pvr_get_copy_format(VkFormat format)
case VK_FORMAT_R8_SNORM:
return VK_FORMAT_R8_SINT;
case VK_FORMAT_R8G8_SNORM:
case VK_FORMAT_R8G8_SSCALED:
return VK_FORMAT_R8G8_SINT;
case VK_FORMAT_R8G8B8_SNORM:
return VK_FORMAT_R8G8B8_SINT;

View file

@ -107,6 +107,8 @@ static const struct pvr_format pvr_format_table[] = {
FORMAT(R8G8_UNORM, U8U8, U8U8, U8),
/* VK_FORMAT_R8G8_SNORM = 17. */
FORMAT(R8G8_SNORM, S8S8, S8S8, S8),
/* VK_FORMAT_R8G8_SSCALED = 19. */
FORMAT(R8G8_SSCALED, S8S8, S8S8, INVALID),
/* VK_FORMAT_R8G8_UINT = 20. */
FORMAT(R8G8_UINT, U8U8, U8U8, UINT8),
/* VK_FORMAT_R8G8_SINT = 21. */
@ -607,6 +609,9 @@ pvr_get_image_format_features2(const struct pvr_format *pvr_format,
vk_format = pvr_format->vk_format;
if (vk_format_is_scaled(vk_format))
return 0;
if (pvr_get_tex_format(vk_format) != ROGUE_TEXSTATE_FORMAT_INVALID) {
if (vk_tiling == VK_IMAGE_TILING_OPTIMAL) {
const uint32_t first_component_size =
@ -761,6 +766,9 @@ pvr_get_buffer_format_features2(const struct pvr_format *pvr_format)
desc = vk_format_description(vk_format);
if (vk_format_is_scaled(vk_format))
return VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT;
flags |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT;

View file

@ -215,6 +215,11 @@ static inline bool vk_format_is_alpha_on_msb(VkFormat vk_format)
#endif
}
static inline bool vk_format_is_scaled(VkFormat vk_format)
{
return util_format_is_scaled(vk_format_to_pipe_format(vk_format));
}
static inline unsigned
vk_format_get_blocksize(VkFormat format)
{