Mesa (master): zink: tighten emitted image spir-v caps
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Mar 26 14:38:38 UTC 2021
Module: Mesa
Branch: master
Commit: 3463b8bf416430b9b381522b019a72e0fdabafd7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3463b8bf416430b9b381522b019a72e0fdabafd7
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Fri Mar 26 14:22:01 2021 +0100
zink: tighten emitted image spir-v caps
We might only need to emit a read or write cap for a given image. This
could provide the Vulkan driver with the chance to optimize things
slightly.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9855>
---
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
index c1fb1ea7f74..6a7cd61423b 100644
--- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
+++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
@@ -773,8 +773,10 @@ emit_image(struct ntv_context *ctx, struct nir_variable *var)
bool is_sampler = glsl_type_is_sampler(type);
if (!is_sampler && !var->data.image.format) {
- spirv_builder_emit_cap(&ctx->builder, SpvCapabilityStorageImageWriteWithoutFormat);
- spirv_builder_emit_cap(&ctx->builder, SpvCapabilityStorageImageReadWithoutFormat);
+ if (!(var->data.access & ACCESS_NON_WRITEABLE))
+ spirv_builder_emit_cap(&ctx->builder, SpvCapabilityStorageImageWriteWithoutFormat);
+ if (!(var->data.access & ACCESS_NON_READABLE))
+ spirv_builder_emit_cap(&ctx->builder, SpvCapabilityStorageImageReadWithoutFormat);
}
SpvDim dimension = type_to_dim(glsl_get_sampler_dim(type), &is_ms);
More information about the mesa-commit
mailing list