Mesa (master): zink: add support for VK_EXT_4444_formats

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Dec 28 21:17:32 UTC 2020


Module: Mesa
Branch: master
Commit: 5a1518e86b4ae743162f92fefd7c41804cac611f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a1518e86b4ae743162f92fefd7c41804cac611f

Author: Hoe Hao Cheng <haochengho12907 at gmail.com>
Date:   Sun Dec 27 01:43:52 2020 +0800

zink: add support for VK_EXT_4444_formats

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8240>

---

 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;
 }
 



More information about the mesa-commit mailing list