diff options
author | Mike Blumenkrantz <michael.blumenkrantz@gmail.com> | 2020-11-17 18:52:54 -0500 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-01-21 19:48:45 +0000 |
commit | 3f9a6d333b3e5f05ef6560123ee98d217358be89 (patch) | |
tree | a451eed68ff4a7826fce4b1d289b98f28c7496c8 | |
parent | 0daa61553d0888e207ac0546794d9f45a3ac0921 (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.c | 14 |
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: |