Mesa (master): zink: document scalarBlockLayout requirement

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Apr 10 10:02:27 UTC 2021


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

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Fri Apr  9 09:53:31 2021 +0200

zink: document scalarBlockLayout requirement

We're currently using uint arrays instead of uvec4 arrays for UBOs and
SSBOs, which requires scalarBlockLayout. Fixing this is a lot of work,
so let's just document it for now.

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

---

 docs/drivers/zink.rst                        | 4 ++++
 src/gallium/drivers/zink/zink_device_info.py | 4 ++++
 src/gallium/drivers/zink/zink_screen.c       | 2 ++
 3 files changed, 10 insertions(+)

diff --git a/docs/drivers/zink.rst b/docs/drivers/zink.rst
index 5a67de28fa6..c5203679db5 100644
--- a/docs/drivers/zink.rst
+++ b/docs/drivers/zink.rst
@@ -41,6 +41,9 @@ Here's a list of those requirements:
 In addition to this, `VK_KHR_external_memory`_ is required to support the
 DRI code-path.
 
+We also require either the `VK_EXT_scalar_block_layout`_ extension or
+Vulkan 1.2, with the ``scalarBlockLayout`` feature.
+
 OpenGL 3.0
 ^^^^^^^^^^
 
@@ -251,6 +254,7 @@ questions, don't hesitate to visit `#zink on FreeNode
 
 .. _VK_KHR_maintenance1: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance1.html
 .. _VK_KHR_external_memory: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory.html
+.. _VK_EXT_scalar_block_layout: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_scalar_block_layout.html
 .. _VK_EXT_transform_feedback: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_transform_feedback.html
 .. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html
 .. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html
diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py
index 52a5e3383e2..fe6f24d9988 100644
--- a/src/gallium/drivers/zink/zink_device_info.py
+++ b/src/gallium/drivers/zink/zink_device_info.py
@@ -131,6 +131,10 @@ EXTENSIONS = [
     Extension("VK_EXT_4444_formats",
         alias="format_4444",
         features=True),
+    Extension("VK_EXT_scalar_block_layout",
+        alias="scalar_block_layout",
+        features=True,
+        conditions=["$feats.scalarBlockLayout"]),
 ]
 
 # constructor: Versions(device_version(major, minor, patch), struct_version(major, minor))
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index d0d55f5d396..2b407a52a69 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -1423,6 +1423,8 @@ check_base_requements(struct zink_screen *screen)
        !screen->info.feats.features.largePoints ||
        !screen->info.feats.features.alphaToOne ||
        !screen->info.feats.features.shaderClipDistance ||
+       !(screen->info.feats12.scalarBlockLayout ||
+         screen->info.have_EXT_scalar_block_layout) ||
        !screen->info.have_KHR_maintenance1) {
       fprintf(stderr, "WARNING: The Vulkan device doesn't support "
               "the base Zink requirements, some incorrect rendering "



More information about the mesa-commit mailing list