Mesa (master): zink: set conformant ubo/ssbo size limits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Feb 22 16:04:04 UTC 2021


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Sun Feb 21 12:04:20 2021 -0500

zink: set conformant ubo/ssbo size limits

these caps correspond to descriptor binding limits provided by vulkan drivers

fixes KHR-GL46.shader_storage_buffer_object.basic-max

Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9174>

---

 src/gallium/drivers/zink/zink_screen.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 7ec0c16be6e..a7cc5a8f788 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -430,7 +430,10 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return 0;
 
    case PIPE_CAP_MAX_SHADER_BUFFER_SIZE:
-      return 65536;
+      /* 16777216 (1<<24) is required by GL spec, 1<<27 is required by VK spec */
+      assert(screen->info.props.limits.maxStorageBufferRange >= 1 << 27);
+      /* but Gallium can't handle values that are too big, so clamp to VK spec minimum */
+      return 1 << 27;
 
    case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
@@ -596,7 +599,10 @@ zink_get_shader_param(struct pipe_screen *pscreen,
    }
 
    case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
-      return 65536;
+      /* 16384 required by GL spec, this is the minimum required by VK spec */
+      assert(screen->info.props.limits.maxUniformBufferRange >= 16384);
+      /* but Gallium can't handle values that are too big */
+      return MIN2(screen->info.props.limits.maxUniformBufferRange, 1 << 31);
 
    case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
       return  MIN2(screen->info.props.limits.maxPerStageDescriptorUniformBuffers,



More information about the mesa-commit mailing list