summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Natalie <jenatali@microsoft.com>2022-01-04 08:39:26 -0800
committerMarge Bot <emma+marge@anholt.net>2022-01-26 01:31:35 +0000
commit8524d047831115deb7e7b057fdef40992c6fc0c5 (patch)
treeac979f81a8c9e57a9f4cfc96325e3a24a24f6800
parenta39881b7881712e3857d70e5f06369dc3eedb06f (diff)
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>
-rw-r--r--src/microsoft/compiler/nir_to_dxil.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c
index d725a721095..37accd40253 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: