microsoft/compiler: Handle load_output in the HS stage as reading a previously written patch constant

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14399>
This commit is contained in:
Jesse Natalie 2022-01-04 08:39:26 -08:00 committed by Marge Bot
parent a39881b788
commit 8524d04783
1 changed files with 5 additions and 2 deletions

View File

@ -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: