Mesa (main): zink: emit fbfetch variables as ntv input attachments
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 31 19:56:28 UTC 2021
Module: Mesa
Branch: main
Commit: c9edf964b0ab43e920b83263801a29a60925bd78
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c9edf964b0ab43e920b83263801a29a60925bd78
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Tue Jul 27 13:44:32 2021 -0400
zink: emit fbfetch variables as ntv input attachments
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12603>
---
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
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 3ac7fec06f2..2925252a36f 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
@@ -673,6 +673,8 @@ type_to_dim(enum glsl_sampler_dim gdim, bool *is_ms)
case GLSL_SAMPLER_DIM_MS:
*is_ms = true;
return SpvDim2D;
+ case GLSL_SAMPLER_DIM_SUBPASS:
+ return SpvDimSubpassData;
default:
fprintf(stderr, "unknown sampler type %d\n", gdim);
break;
@@ -805,7 +807,9 @@ emit_image(struct ntv_context *ctx, struct nir_variable *var)
bool is_ms;
bool is_sampler = glsl_type_is_sampler(type);
- if (!is_sampler && !var->data.image.format) {
+ if (var->data.fb_fetch_output) {
+ spirv_builder_emit_cap(&ctx->builder, SpvCapabilityInputAttachment);
+ } else if (!is_sampler && !var->data.image.format) {
if (!(var->data.access & ACCESS_NON_WRITEABLE))
spirv_builder_emit_cap(&ctx->builder, SpvCapabilityStorageImageWriteWithoutFormat);
if (!(var->data.access & ACCESS_NON_READABLE))
@@ -847,6 +851,9 @@ emit_image(struct ntv_context *ctx, struct nir_variable *var)
if (var->name)
spirv_builder_emit_name(&ctx->builder, var_id, var->name);
+ if (var->data.fb_fetch_output)
+ spirv_builder_emit_input_attachment_index(&ctx->builder, var_id, var->data.index);
+
if (is_sampler) {
ctx->sampler_types[index] = image_type;
ctx->samplers[index] = var_id;
More information about the mesa-commit
mailing list