mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Implement output semantics for geometry shaders.
This commit is contained in:
Notes:
Henri Verbeet
2025-05-24 21:46:59 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1488
@@ -9983,6 +9983,9 @@ static void sm4_generate_vsir_instr_dcl_semantic(struct hlsl_ctx *ctx, struct vs
|
||||
if (semantic == VKD3D_SHADER_SV_NONE || version->type == VKD3D_SHADER_TYPE_PIXEL
|
||||
|| (version->type == VKD3D_SHADER_TYPE_HULL && !ctx->is_patch_constant_func))
|
||||
opcode = VKD3DSIH_DCL_OUTPUT;
|
||||
else if ((semantic == VKD3D_SHADER_SV_PRIMITIVE_ID || semantic == VKD3D_SHADER_SV_IS_FRONT_FACE)
|
||||
&& version->type == VKD3D_SHADER_TYPE_GEOMETRY)
|
||||
opcode = VKD3DSIH_DCL_OUTPUT_SGV;
|
||||
else
|
||||
opcode = VKD3DSIH_DCL_OUTPUT_SIV;
|
||||
}
|
||||
|
@@ -3132,6 +3132,9 @@ bool sm4_sysval_semantic_from_semantic_name(enum vkd3d_shader_sysval_semantic *s
|
||||
{"position", true, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_POSITION},
|
||||
{"sv_position", true, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_POSITION},
|
||||
{"sv_primitiveid", true, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_PRIMITIVE_ID},
|
||||
{"sv_isfrontface", true, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_IS_FRONT_FACE},
|
||||
{"sv_rendertargetarrayindex", true, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX},
|
||||
{"sv_viewportarrayindex", true, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX},
|
||||
|
||||
{"sv_outputcontrolpointid", false, VKD3D_SHADER_TYPE_HULL, ~0u},
|
||||
{"sv_position", false, VKD3D_SHADER_TYPE_HULL, ~0u},
|
||||
@@ -4138,6 +4141,10 @@ static void tpf_handle_instruction(struct tpf_compiler *tpf, const struct vkd3d_
|
||||
tpf_dcl_semantic(tpf, VKD3D_SM4_OP_DCL_OUTPUT, &ins->declaration.dst, 0);
|
||||
break;
|
||||
|
||||
case VKD3DSIH_DCL_OUTPUT_SGV:
|
||||
tpf_dcl_siv_semantic(tpf, VKD3D_SM4_OP_DCL_OUTPUT_SGV, &ins->declaration.register_semantic, 0);
|
||||
break;
|
||||
|
||||
case VKD3DSIH_DCL_OUTPUT_SIV:
|
||||
tpf_dcl_siv_semantic(tpf, VKD3D_SM4_OP_DCL_OUTPUT_SIV, &ins->declaration.register_semantic, 0);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user