summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2020-11-17 18:52:54 -0500
committerMarge Bot <eric+marge@anholt.net>2021-01-21 19:48:45 +0000
commit3f9a6d333b3e5f05ef6560123ee98d217358be89 (patch)
treea451eed68ff4a7826fce4b1d289b98f28c7496c8
parent0daa61553d0888e207ac0546794d9f45a3ac0921 (diff)
zink: export shader image caps using features
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8504>
-rw-r--r--src/gallium/drivers/zink/zink_screen.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index f5d5b014d60..d0b41304483 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -237,6 +237,9 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_MAX_VIEWPORTS:
return screen->info.props.limits.maxViewports;
+ case PIPE_CAP_IMAGE_LOAD_FORMATTED:
+ return screen->info.feats.features.shaderStorageImageExtendedFormats;
+
case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
return 1;
@@ -534,12 +537,13 @@ zink_get_shader_param(struct pipe_screen *pscreen,
return (1 << PIPE_SHADER_IR_NIR) | (1 << PIPE_SHADER_IR_TGSI);
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
-#if 0 /* TODO: needs compiler support */
- return MIN2(screen->info.props.limits.maxPerStageDescriptorStorageImages,
- PIPE_MAX_SHADER_IMAGES);
-#else
+ if (screen->info.have_KHR_vulkan_memory_model &&
+ (screen->info.feats.features.shaderStorageImageExtendedFormats ||
+ (screen->info.feats.features.shaderStorageImageWriteWithoutFormat &&
+ screen->info.feats.features.shaderStorageImageReadWithoutFormat)))
+ return MIN2(screen->info.props.limits.maxPerStageDescriptorStorageImages,
+ PIPE_MAX_SHADER_IMAGES);
return 0;
-#endif
case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS: