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@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9855>
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);