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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user