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