mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/spirv: Make output varyings not consumed by the next stage private variables.
This commit is contained in:
parent
11475ef62a
commit
d932fba7c3
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
@ -133,10 +133,7 @@ static enum vkd3d_result remap_output_signature(struct vkd3d_shader_parser *pars
|
||||
}
|
||||
else
|
||||
{
|
||||
vkd3d_shader_parser_error(parser, VKD3D_SHADER_ERROR_VSIR_NOT_IMPLEMENTED,
|
||||
"Aborting due to not yet implemented feature: "
|
||||
"This stage outputs varyings not consumed by the next stage.");
|
||||
return VKD3D_ERROR_NOT_IMPLEMENTED;
|
||||
e->target_location = SIGNATURE_TARGET_LOCATION_UNUSED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4978,6 +4978,12 @@ static void spirv_compiler_emit_output(struct spirv_compiler *compiler,
|
||||
|
||||
spirv_compiler_emit_register_execution_mode(compiler, &dst->reg);
|
||||
}
|
||||
else if (signature_element->target_location == SIGNATURE_TARGET_LOCATION_UNUSED)
|
||||
{
|
||||
storage_class = SpvStorageClassPrivate;
|
||||
id = spirv_compiler_emit_array_variable(compiler, &builder->global_stream,
|
||||
storage_class, component_type, output_component_count, array_sizes, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int location = signature_element->target_location;
|
||||
|
@ -809,6 +809,8 @@ enum vkd3d_shader_input_sysval_semantic
|
||||
VKD3D_SIV_LINE_DENSITY_TESS_FACTOR = 22,
|
||||
};
|
||||
|
||||
#define SIGNATURE_TARGET_LOCATION_UNUSED (~0u)
|
||||
|
||||
struct signature_element
|
||||
{
|
||||
unsigned int sort_index;
|
||||
@ -823,7 +825,8 @@ struct signature_element
|
||||
unsigned int mask;
|
||||
unsigned int used_mask;
|
||||
enum vkd3d_shader_minimum_precision min_precision;
|
||||
/* Register index / location in the target shader. */
|
||||
/* Register index / location in the target shader.
|
||||
* If SIGNATURE_TARGET_LOCATION_UNUSED, this element should not be written. */
|
||||
unsigned int target_location;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user