From 5a1518e86b4ae743162f92fefd7c41804cac611f Mon Sep 17 00:00:00 2001 From: Hoe Hao Cheng Date: Sun, 27 Dec 2020 01:43:52 +0800 Subject: zink: add support for VK_EXT_4444_formats Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/zink_device_info.py | 3 +++ src/gallium/drivers/zink/zink_format.c | 2 ++ src/gallium/drivers/zink/zink_screen.c | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py index 6c6957567d5..f849356105f 100644 --- a/src/gallium/drivers/zink/zink_device_info.py +++ b/src/gallium/drivers/zink/zink_device_info.py @@ -113,6 +113,9 @@ EXTENSIONS = [ properties=True, features=True, guard=True), + Extension("VK_EXT_4444_formats", + alias="format_4444", + features=True), ] # constructor: Versions(device_version(major, minor, patch), struct_version(major, minor)) diff --git a/src/gallium/drivers/zink/zink_format.c b/src/gallium/drivers/zink/zink_format.c index 91f51f64ffc..e5a85c9e59d 100644 --- a/src/gallium/drivers/zink/zink_format.c +++ b/src/gallium/drivers/zink/zink_format.c @@ -93,6 +93,8 @@ static const VkFormat formats[PIPE_FORMAT_COUNT] = { // other color formats [PIPE_FORMAT_A4B4G4R4_UNORM] = VK_FORMAT_R4G4B4A4_UNORM_PACK16, [PIPE_FORMAT_A4R4G4B4_UNORM] = VK_FORMAT_B4G4R4A4_UNORM_PACK16, + [PIPE_FORMAT_B4G4R4A4_UNORM] = VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, + [PIPE_FORMAT_R4G4B4A4_UNORM] = VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, [PIPE_FORMAT_B5G6R5_UNORM] = VK_FORMAT_R5G6B5_UNORM_PACK16, [PIPE_FORMAT_R5G6B5_UNORM] = VK_FORMAT_B5G6R5_UNORM_PACK16, diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index b706ead2cc7..8aaaa32883c 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -804,6 +804,12 @@ zink_get_format(struct zink_screen *screen, enum pipe_format format) return VK_FORMAT_D32_SFLOAT_S8_UINT; } + if ((ret == VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT && + !screen->info.format_4444_feats.formatA4B4G4R4) || + (ret == VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT && + !screen->info.format_4444_feats.formatA4R4G4B4)) + return VK_FORMAT_UNDEFINED; + return ret; } -- cgit v1.2.3