Module: Mesa Branch: main Commit: c9edf964b0ab43e920b83263801a29a60925bd78 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c9edf964b0ab43e920b83263801a29a60925bd78
Author: Mike Blumenkrantz <[email protected]> Date: Tue Jul 27 13:44:32 2021 -0400 zink: emit fbfetch variables as ntv input attachments Reviewed-by: Dave Airlie <[email protected]> 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;
