mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Keep track of the tessellator domain in struct vsir_program.
This commit is contained in:
committed by
Henri Verbeet
parent
49ec9add38
commit
1ed8d907b3
Notes:
Henri Verbeet
2024-11-21 19:36:02 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1266
@@ -6822,15 +6822,11 @@ static void spirv_compiler_emit_dcl_gs_instances(struct spirv_compiler *compiler
|
||||
compiler->spirv_builder.invocation_count = instruction->declaration.count;
|
||||
}
|
||||
|
||||
static void spirv_compiler_emit_dcl_tessellator_domain(struct spirv_compiler *compiler,
|
||||
const struct vkd3d_shader_instruction *instruction)
|
||||
static void spirv_compiler_emit_tessellator_domain(struct spirv_compiler *compiler,
|
||||
enum vkd3d_tessellator_domain domain)
|
||||
{
|
||||
enum vkd3d_tessellator_domain domain = instruction->declaration.tessellator_domain;
|
||||
SpvExecutionMode mode;
|
||||
|
||||
if (compiler->shader_type == VKD3D_SHADER_TYPE_HULL && spirv_compiler_is_opengl_target(compiler))
|
||||
return;
|
||||
|
||||
switch (domain)
|
||||
{
|
||||
case VKD3D_TESSELLATOR_DOMAIN_LINE:
|
||||
@@ -10239,9 +10235,6 @@ static int spirv_compiler_handle_instruction(struct spirv_compiler *compiler,
|
||||
case VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT:
|
||||
spirv_compiler_emit_output_vertex_count(compiler, instruction);
|
||||
break;
|
||||
case VKD3DSIH_DCL_TESSELLATOR_DOMAIN:
|
||||
spirv_compiler_emit_dcl_tessellator_domain(compiler, instruction);
|
||||
break;
|
||||
case VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE:
|
||||
spirv_compiler_emit_tessellator_output_primitive(compiler,
|
||||
instruction->declaration.tessellator_output_primitive);
|
||||
@@ -10743,6 +10736,9 @@ static int spirv_compiler_generate_spirv(struct spirv_compiler *compiler, struct
|
||||
compiler->input_control_point_count = program->input_control_point_count;
|
||||
compiler->output_control_point_count = program->output_control_point_count;
|
||||
|
||||
if (program->shader_version.type == VKD3D_SHADER_TYPE_HULL && !spirv_compiler_is_opengl_target(compiler))
|
||||
spirv_compiler_emit_tessellator_domain(compiler, program->tess_domain);
|
||||
|
||||
if (compiler->shader_type != VKD3D_SHADER_TYPE_HULL)
|
||||
spirv_compiler_emit_shader_signature_outputs(compiler);
|
||||
|
||||
|
Reference in New Issue
Block a user