vkd3d-shader/hlsl: Store hull and domain shader properties in vsir_program.

The alternative to adding the vsir_program->tess_output_primitive and
vsir_program->tess_partitioning fields would be to emit the vsir
DCL_TESSELLATOR_OUTPUT_PRIMITIVE and DCL_TESSELLATOR_PARTITIONING
instructions, like DXIL does, but I think that the preference is to store
these kind of data directly in the vsir_program.
This commit is contained in:
Francisco Casas
2024-11-26 17:50:19 -03:00
committed by Henri Verbeet
parent 347e7a396d
commit f22729461e
Notes: Henri Verbeet 2024-12-10 15:58:38 +01:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1308
4 changed files with 34 additions and 11 deletions

View File

@@ -9902,6 +9902,19 @@ static void sm4_generate_vsir(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl
program->thread_group_size.y = ctx->thread_count[1];
program->thread_group_size.z = ctx->thread_count[2];
}
else if (version.type == VKD3D_SHADER_TYPE_HULL)
{
program->input_control_point_count = 1; /* TODO: Obtain from InputPatch */
program->output_control_point_count = ctx->output_control_point_count;
program->tess_domain = ctx->domain;
program->tess_partitioning = ctx->partitioning;
program->tess_output_primitive = ctx->output_primitive;
}
else if (version.type == VKD3D_SHADER_TYPE_DOMAIN)
{
program->input_control_point_count = 0; /* TODO: Obtain from OutputPatch */
program->tess_domain = ctx->domain;
}
LIST_FOR_EACH_ENTRY(cbuffer, &ctx->buffers, struct hlsl_buffer, entry)
{