mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Output sm1 semantics with unique register_index values.
Match the register_index values from the d3dbc reader.
This commit is contained in:
committed by
Henri Verbeet
parent
41cacba5ce
commit
ecb19b33ba
Notes:
Henri Verbeet
2025-06-25 17:08:41 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1597
@@ -2076,6 +2076,13 @@ static void d3dbc_write_semantic_dcl(struct d3dbc_compiler *d3dbc,
|
|||||||
VKD3D_ASSERT(ret);
|
VKD3D_ASSERT(ret);
|
||||||
reg.reg.type = output ? VKD3DSPR_OUTPUT : VKD3DSPR_INPUT;
|
reg.reg.type = output ? VKD3DSPR_OUTPUT : VKD3DSPR_INPUT;
|
||||||
reg.reg.idx[0].offset = element->register_index;
|
reg.reg.idx[0].offset = element->register_index;
|
||||||
|
if (!vkd3d_shader_ver_ge(version, 3, 0))
|
||||||
|
{
|
||||||
|
if (reg.reg.idx[0].offset > SM1_RASTOUT_REGISTER_OFFSET)
|
||||||
|
reg.reg.idx[0].offset -= SM1_RASTOUT_REGISTER_OFFSET;
|
||||||
|
else if (reg.reg.idx[0].offset > SM1_COLOR_REGISTER_OFFSET)
|
||||||
|
reg.reg.idx[0].offset -= SM1_COLOR_REGISTER_OFFSET;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
token = VKD3D_SM1_OP_DCL;
|
token = VKD3D_SM1_OP_DCL;
|
||||||
|
@@ -8020,8 +8020,19 @@ static void generate_vsir_signature_entry(struct hlsl_ctx *ctx, struct vsir_prog
|
|||||||
if ((!output && !var->last_read) || (output && !var->first_write))
|
if ((!output && !var->last_read) || (output && !var->first_write))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!sm1_register_from_semantic_name(&program->shader_version,
|
if (sm1_register_from_semantic_name(&program->shader_version,
|
||||||
var->semantic.name, var->semantic.index, output, &sysval, &type, ®ister_index))
|
var->semantic.name, var->semantic.index, output, &sysval, &type, ®ister_index))
|
||||||
|
{
|
||||||
|
if (!vkd3d_shader_ver_ge(&program->shader_version, 3, 0))
|
||||||
|
{
|
||||||
|
if (type == VKD3DSPR_RASTOUT)
|
||||||
|
register_index += SM1_RASTOUT_REGISTER_OFFSET;
|
||||||
|
else if (type == VKD3DSPR_ATTROUT
|
||||||
|
|| (type == VKD3DSPR_INPUT && program->shader_version.type == VKD3D_SHADER_TYPE_PIXEL))
|
||||||
|
register_index += SM1_COLOR_REGISTER_OFFSET;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
enum vkd3d_decl_usage usage;
|
enum vkd3d_decl_usage usage;
|
||||||
unsigned int usage_idx;
|
unsigned int usage_idx;
|
||||||
|
Reference in New Issue
Block a user