pvr: cleanup 2101010 int format handling

There is an actual PBE accum format for this, so use that.

Signed-off-by: SoroushIMG <soroush.kashani@imgtec.com>
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31679>
This commit is contained in:
SoroushIMG
2023-05-14 16:18:26 +01:00
committed by Marge Bot
parent 972dd866ad
commit 9a94a28bf4
+12 -14
View File
@@ -138,7 +138,7 @@ static const struct pvr_format pvr_format_table[] = {
/* VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64. */
FORMAT(A2B10G10R10_UNORM_PACK32, A2R10B10G10, A2R10B10G10, F16),
/* VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68. */
FORMAT(A2B10G10R10_UINT_PACK32, A2R10B10G10, U32, UINT32),
FORMAT(A2B10G10R10_UINT_PACK32, A2R10B10G10, U32, U1010102),
/* VK_FORMAT_R16_UNORM = 70. */
FORMAT(R16_UNORM, U16, U16, U16),
/* VK_FORMAT_R16_SNORM = 71. */
@@ -423,10 +423,6 @@ uint32_t pvr_get_pbe_accum_format_size_in_bytes(VkFormat vk_format)
enum pvr_pbe_accum_format pbe_accum_format;
uint32_t nr_components;
/* FIXME: Can we encode this in the format table somehow? */
if (vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32)
return 4;
pbe_accum_format = pvr_get_pbe_accum_format(vk_format);
nr_components = vk_format_get_nr_components(vk_format);
@@ -449,10 +445,13 @@ uint32_t pvr_get_pbe_accum_format_size_in_bytes(VkFormat vk_format)
case PVR_PBE_ACCUM_FORMAT_SINT32:
case PVR_PBE_ACCUM_FORMAT_UINT32_MEDP:
case PVR_PBE_ACCUM_FORMAT_SINT32_MEDP:
case PVR_PBE_ACCUM_FORMAT_U1010102:
case PVR_PBE_ACCUM_FORMAT_U24:
return nr_components * 4;
case PVR_PBE_ACCUM_FORMAT_U1010102:
assert(nr_components == 4);
return 4;
default:
unreachable("Unknown pbe accum format. Implementation error");
}
@@ -560,18 +559,17 @@ void pvr_get_hw_clear_color(
COPY_4V(packed_val.i16, value.int32);
break;
case PVR_PBE_ACCUM_FORMAT_U1010102:
/* The PBE can't handle swizzled 1010102 UINT. */
packed_val.u32[0] = pvr_pack_a2x10y10z10_uint(
value.uint32,
vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32);
break;
case PVR_PBE_ACCUM_FORMAT_F32:
COPY_4V(packed_val.u32, value.uint32);
break;
case PVR_PBE_ACCUM_FORMAT_UINT32:
/* The PBE can't pack 1010102 UINT. */
if (vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32) {
packed_val.u32[0] = pvr_pack_a2x10y10z10_uint(value.uint32, true);
break;
} else if (vk_format == VK_FORMAT_A2R10G10B10_UINT_PACK32) {
packed_val.u32[0] = pvr_pack_a2x10y10z10_uint(value.uint32, false);
break;
}
COPY_4V(packed_val.u32, value.uint32);
break;
case PVR_PBE_ACCUM_FORMAT_SINT32: