From 8524d047831115deb7e7b057fdef40992c6fc0c5 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Tue, 4 Jan 2022 08:39:26 -0800 Subject: [PATCH] microsoft/compiler: Handle load_output in the HS stage as reading a previously written patch constant Reviewed-by: Boris Brezillon Reviewed-by: Bill Kristiansen Part-of: --- src/microsoft/compiler/nir_to_dxil.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c index d725a72..37accd4 100644 --- a/src/microsoft/compiler/nir_to_dxil.c +++ b/src/microsoft/compiler/nir_to_dxil.c @@ -3063,8 +3063,10 @@ emit_load_input_via_intrinsic(struct ntd_context *ctx, nir_intrinsic_instr *intr attr_at_vertex = var && var->data.interpolation == INTERP_MODE_FLAT; } - bool is_patch_constant = ctx->mod.shader_kind == DXIL_DOMAIN_SHADER && - intr->intrinsic == nir_intrinsic_load_input; + bool is_patch_constant = (ctx->mod.shader_kind == DXIL_DOMAIN_SHADER && + intr->intrinsic == nir_intrinsic_load_input) || + (ctx->mod.shader_kind == DXIL_HULL_SHADER && + intr->intrinsic == nir_intrinsic_load_output); bool is_output_control_point = intr->intrinsic == nir_intrinsic_load_per_vertex_output; unsigned opcode_val; @@ -4093,6 +4095,7 @@ emit_intrinsic(struct ntd_context *ctx, nir_intrinsic_instr *intr) return emit_get_ssbo_size(ctx, intr); case nir_intrinsic_load_input: case nir_intrinsic_load_per_vertex_input: + case nir_intrinsic_load_output: case nir_intrinsic_load_per_vertex_output: return emit_load_input_via_intrinsic(ctx, intr); case nir_intrinsic_store_output: -- 2.7.4