Mesa (master): zink: check for stores and atomics features

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 24 21:21:05 UTC 2021


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

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Wed Mar 24 16:54:25 2021 +0100

zink: check for stores and atomics features

These limits depens on feature-bits.

Fixes: 322a3d4fb0c ("zink: partially enable SSBO pipe cap")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9803>

---

 docs/drivers/zink.rst                  |  2 ++
 src/gallium/drivers/zink/zink_screen.c | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/docs/drivers/zink.rst b/docs/drivers/zink.rst
index 372dd643153..a2983e032d8 100644
--- a/docs/drivers/zink.rst
+++ b/docs/drivers/zink.rst
@@ -138,6 +138,8 @@ supported:
   * ``VkPhysicalDeviceVulkan11Features``:
 
     * ``shaderDrawParameters``
+    * ``vertexPipelineStoresAndAtomics``
+    * ``fragmentStoresAndAtomics``
 
 * For Vulkan 1.1 and below:
 
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index b5c0a46eb67..206194de637 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -713,6 +713,24 @@ zink_get_shader_param(struct pipe_screen *pscreen,
       return 32; /* arbitrary */
 
    case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
+      switch (shader) {
+      case PIPE_SHADER_VERTEX:
+      case PIPE_SHADER_TESS_CTRL:
+      case PIPE_SHADER_TESS_EVAL:
+      case PIPE_SHADER_GEOMETRY:
+         if (!screen->info.feats.features.vertexPipelineStoresAndAtomics)
+            return 0;
+         break;
+
+      case PIPE_SHADER_FRAGMENT:
+         if (!screen->info.feats.features.fragmentStoresAndAtomics)
+            return 0;
+         break;
+
+      default:
+         break;
+      }
+
       /* TODO: this limitation is dumb, and will need some fixes in mesa */
       return MIN2(screen->info.props.limits.maxPerStageDescriptorStorageBuffers, PIPE_MAX_SHADER_BUFFERS);
 



More information about the mesa-commit mailing list