radv: Add CPU color packing for VK_FORMAT_A2B10G10R10_UNORM_PACK32.
For allowing fast color clears in the main render targets of dota2. [airlied: fix clear_vals[1] as suggested by Andres. Signed-off-by: Bas Nieuwenhuizen <basni@google.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:

committed by
Dave Airlie

parent
f64d74aa19
commit
f22836dbdd
@@ -940,8 +940,12 @@ bool radv_format_pack_clear_color(VkFormat format,
|
|||||||
clear_vals[1] |= ((uint16_t)util_iround(CLAMP(value->float32[3], 0.0f, 1.0f) * 0xffff)) << 16;
|
clear_vals[1] |= ((uint16_t)util_iround(CLAMP(value->float32[3], 0.0f, 1.0f) * 0xffff)) << 16;
|
||||||
break;
|
break;
|
||||||
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
|
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
|
||||||
/* TODO */
|
clear_vals[0] = ((uint16_t)util_iround(CLAMP(value->float32[0], 0.0f, 1.0f) * 0x3ff)) & 0x3ff;
|
||||||
return false;
|
clear_vals[0] |= (((uint16_t)util_iround(CLAMP(value->float32[1], 0.0f, 1.0f) * 0x3ff)) & 0x3ff) << 10;
|
||||||
|
clear_vals[0] |= (((uint16_t)util_iround(CLAMP(value->float32[2], 0.0f, 1.0f) * 0x3ff)) & 0x3ff) << 20;
|
||||||
|
clear_vals[0] |= (((uint16_t)util_iround(CLAMP(value->float32[1], 0.0f, 1.0f) * 0x3)) & 0x3) << 30;
|
||||||
|
clear_vals[1] = 0;
|
||||||
|
return true;
|
||||||
case VK_FORMAT_R32G32_SFLOAT:
|
case VK_FORMAT_R32G32_SFLOAT:
|
||||||
clear_vals[0] = fui(value->float32[0]);
|
clear_vals[0] = fui(value->float32[0]);
|
||||||
clear_vals[1] = fui(value->float32[1]);
|
clear_vals[1] = fui(value->float32[1]);
|
||||||
|
Reference in New Issue
Block a user