diff options
author | Hoe Hao Cheng <haochengho12907@gmail.com> | 2020-12-27 01:43:52 +0800 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-12-28 21:12:53 +0000 |
commit | 5a1518e86b4ae743162f92fefd7c41804cac611f (patch) | |
tree | 16dea5d495ba682f1821592f63b6d4ae9261dcd9 | |
parent | 0f5726c5035249a6398f8db884d199bffed14a77 (diff) |
zink: add support for VK_EXT_4444_formats
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8240>
-rw-r--r-- | src/gallium/drivers/zink/zink_device_info.py | 3 | ||||
-rw-r--r-- | src/gallium/drivers/zink/zink_format.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/zink/zink_screen.c | 6 |
3 files changed, 11 insertions, 0 deletions
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; } |