From 341332b23af84e8e77cc7d71de92b2edfa0eb2b0 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 21 Apr 2021 15:37:59 +0200 Subject: [PATCH] zink: correct image cap checks PIPE_CAP_IMAGE_LOAD_FORMATTED doesn't depend on shaderStorageImageExtendedFormats or shaderStorageImageWriteWithoutFormat. PIPE_SHADER_CAP_MAX_SHADER_IMAGES enables GL_EXT_shader_image_load_store, which *does* require shaderStorageImageExtendedFormats. Having shaderStorageImageWriteWithoutFormat and shaderStorageImageReadWithoutFormat isn't enough to support this. It *might* be possible to lower extended formats to format-less reads or writes, but we don't currently do that, so we should just correct the test for now. Fixes: 3f9a6d333b3 ("zink: export shader image caps using features") Fixes: 5282210c0b9 ("zink: check correct caps for PIPE_CAP_IMAGE_LOAD_FORMATTED") Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/zink_screen.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 7aa110d3c7d..aca1c577fb9 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -413,9 +413,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return screen->info.props.limits.maxViewports; case PIPE_CAP_IMAGE_LOAD_FORMATTED: - return screen->info.feats.features.shaderStorageImageExtendedFormats && - screen->info.feats.features.shaderStorageImageReadWithoutFormat && - screen->info.feats.features.shaderStorageImageWriteWithoutFormat; + return screen->info.feats.features.shaderStorageImageReadWithoutFormat; case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES: return 1; @@ -752,9 +750,7 @@ 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 (screen->info.feats.features.shaderStorageImageExtendedFormats || - (screen->info.feats.features.shaderStorageImageWriteWithoutFormat && - screen->info.feats.features.shaderStorageImageReadWithoutFormat)) + if (screen->info.feats.features.shaderStorageImageExtendedFormats) return MIN2(screen->info.props.limits.maxPerStageDescriptorStorageImages, PIPE_MAX_SHADER_IMAGES); return 0;