radv: Add R16G16B16A16_SNORM fast clear support
authorAlex Smith <asmith@feralinteractive.com>
Tue, 10 Oct 2017 16:00:09 +0000 (17:00 +0100)
committerDave Airlie <airlied@redhat.com>
Tue, 10 Oct 2017 21:29:43 +0000 (07:29 +1000)
Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: "17.2" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_formats.c

index 88305abd044c3a624cd7a2b5667b28d54b1b7135..5c79ea74069f847c1e50007fe50d6ec7217e284f 100644 (file)
@@ -961,6 +961,12 @@ bool radv_format_pack_clear_color(VkFormat format,
                clear_vals[1] = ((uint16_t)util_iround(CLAMP(value->float32[2], 0.0f, 1.0f) * 0xffff)) & 0xffff;
                clear_vals[1] |= ((uint16_t)util_iround(CLAMP(value->float32[3], 0.0f, 1.0f) * 0xffff)) << 16;
                break;
+       case VK_FORMAT_R16G16B16A16_SNORM:
+               clear_vals[0] = ((uint16_t)util_iround(CLAMP(value->float32[0], -1.0f, 1.0f) * 0x7fff)) & 0xffff;
+               clear_vals[0] |= ((uint16_t)util_iround(CLAMP(value->float32[1], -1.0f, 1.0f) * 0x7fff)) << 16;
+               clear_vals[1] = ((uint16_t)util_iround(CLAMP(value->float32[2], -1.0f, 1.0f) * 0x7fff)) & 0xffff;
+               clear_vals[1] |= ((uint16_t)util_iround(CLAMP(value->float32[3], -1.0f, 1.0f) * 0x7fff)) << 16;
+               break;
        case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
                clear_vals[0] = ((uint16_t)util_iround(CLAMP(value->float32[0], 0.0f, 1.0f) * 0x3ff)) & 0x3ff;
                clear_vals[0] |= (((uint16_t)util_iround(CLAMP(value->float32[1], 0.0f, 1.0f) * 0x3ff)) & 0x3ff) << 10;