mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader: Add a separate field for the target location of a signature element.
We want to be able to remap input signatures based on the signature index, but signature normalization both reorders the signature, and requires the old register index, so add a new field for this.
This commit is contained in:
committed by
Alexandre Julliard
parent
bad72d1874
commit
cb96482500
Notes:
Alexandre Julliard
2023-08-03 21:25:28 +09:00
Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/280
@@ -4602,7 +4602,7 @@ static uint32_t spirv_compiler_emit_input(struct spirv_compiler *compiler,
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int location = signature_element->register_index;
|
||||
unsigned int location = signature_element->target_location;
|
||||
|
||||
input_id = spirv_compiler_emit_array_variable(compiler, &builder->global_stream,
|
||||
storage_class, component_type, input_component_count, array_sizes, 2);
|
||||
@@ -4980,7 +4980,7 @@ static void spirv_compiler_emit_output(struct spirv_compiler *compiler,
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int location = signature_element->register_index;
|
||||
unsigned int location = signature_element->target_location;
|
||||
|
||||
if (is_patch_constant)
|
||||
location += shader_signature_next_location(&compiler->output_signature);
|
||||
@@ -4989,10 +4989,10 @@ static void spirv_compiler_emit_output(struct spirv_compiler *compiler,
|
||||
storage_class, component_type, output_component_count, array_sizes, 2);
|
||||
vkd3d_spirv_add_iface_variable(builder, id);
|
||||
|
||||
if (is_dual_source_blending(compiler) && signature_element->register_index < 2)
|
||||
if (is_dual_source_blending(compiler) && location < 2)
|
||||
{
|
||||
vkd3d_spirv_build_op_decorate1(builder, id, SpvDecorationLocation, 0);
|
||||
vkd3d_spirv_build_op_decorate1(builder, id, SpvDecorationIndex, signature_element->register_index);
|
||||
vkd3d_spirv_build_op_decorate1(builder, id, SpvDecorationIndex, location);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user