vkd3d-shader/hlsl: Generate vsir signature entries for patch variables.

This commit is contained in:
Shaun Ren
2025-01-29 18:20:16 -05:00
committed by Henri Verbeet
parent aa29d0a2e5
commit f127f0849e
Notes: Henri Verbeet 2025-02-03 16:40:17 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Elizabeth Figura (@zfigura)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1362
3 changed files with 42 additions and 16 deletions

View File

@@ -3070,7 +3070,7 @@ static bool get_insidetessfactor_sysval_semantic(enum vkd3d_shader_sysval_semant
bool sm4_sysval_semantic_from_semantic_name(enum vkd3d_shader_sysval_semantic *sysval_semantic,
const struct vkd3d_shader_version *version, bool semantic_compat_mapping, enum vkd3d_tessellator_domain domain,
const char *semantic_name, unsigned int semantic_idx, bool output, bool is_patch_constant_func)
const char *semantic_name, unsigned int semantic_idx, bool output, bool is_patch_constant_func, bool is_patch)
{
unsigned int i;
@@ -3133,6 +3133,20 @@ bool sm4_sysval_semantic_from_semantic_name(enum vkd3d_shader_sysval_semantic *s
};
bool has_sv_prefix = !ascii_strncasecmp(semantic_name, "sv_", 3);
if (is_patch)
{
VKD3D_ASSERT(!output);
if (!ascii_strcasecmp(semantic_name, "sv_position")
|| (semantic_compat_mapping && !ascii_strcasecmp(semantic_name, "position")))
*sysval_semantic = VKD3D_SHADER_SV_POSITION;
else if (has_sv_prefix)
return false;
else
*sysval_semantic = VKD3D_SHADER_SV_NONE;
return true;
}
if (is_patch_constant_func)
{
if (output)