3446 Commits

Author SHA1 Message Date
Henri Verbeet
90616be301 vkd3d-shader/dxil: Shift register write masks by the component index in sm6_parser_emit_dx_store_output().
To account for the change we made in commit
c571a45e656c4331adf092b546c2e68acba6b1cb on the SPIR-V side.
2024-10-15 16:45:28 +02:00
Francisco Casas
104435df5f vkd3d-shader/tpf: Use dcl_input_ps_sgv for sv_isfrontface.
As the native compiler does.
2024-10-15 16:44:38 +02:00
Francisco Casas
ad2f821ff5 vkd3d-shader/tpf: Write sysval semantic consistently.
Specifically we should write the sysval semantic as an instruction idx
for the following instructions:

    VKD3D_SM4_OP_DCL_INPUT_SGV
    VKD3D_SM4_OP_DCL_INPUT_PS_SGV
    VKD3D_SM4_OP_DCL_INPUT_SIV
    VKD3D_SM4_OP_DCL_INPUT_PS_SIV
    VKD3D_SM4_OP_DCL_OUTPUT_SIV

and not the following ones:

    VKD3D_SM4_OP_DCL_INPUT
    VKD3D_SM4_OP_DCL_PS_INPUT
    VKD3D_SM4_OP_DCL_OUTPUT

Which is consistent with what we do when reading these instructions in
the following functions:

    shader_sm4_read_declaration_register_semantic()
    shader_sm4_read_dcl_input_ps_siv()

and

    shader_sm4_read_dcl_input_ps()
    shader_sm4_read_declaration_dst()

for the non-SGV and non-SIV cases.

Note that the non-SGV and non-SIV instructions don't need/use this
extra information because they rely on the dst register type and index.

I suggest to introduce this change because the here replaced check is
brittle, and we might be omitting the sysval semantic in some cases.
2024-10-15 16:44:38 +02:00
Nikolay Sivov
5fb3a91276 vkd3d-shader/hlsl: Implement the modf() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-15 16:43:33 +02:00
Shaun Ren
cb55ba5b9b vkd3d-shader/hlsl: Invoke prepend_uniform_copy() only once for global uniforms.
We store the copy instructions in a separate block that is cloned for
each function processed.
2024-10-15 16:42:47 +02:00
Shaun Ren
0c5dc53fd2 vkd3d-shader/hlsl: Allocate temporary registers separately for each entry function. 2024-10-15 16:39:50 +02:00
Shaun Ren
5f8570b933 vkd3d-shader/hlsl: Track whether a variable is read in any entry function. 2024-10-15 16:18:36 +02:00
Shaun Ren
f15a1c0b23 vkd3d-shader/hlsl: Record semantic extern vars separately for each entry function.
This is required in order to process the entry point function and the
patch constant function in hull shaders.
2024-10-15 16:18:27 +02:00
Shaun Ren
bbc6b56ab0 vkd3d-shader/hlsl: Clone static_initializers for each entry function. 2024-10-15 16:13:31 +02:00
Shaun Ren
5571522efe vkd3d-shader/hlsl: Introduce process_entry_function() helper.
This will be used in order to process both the entry point function
and the patch constant function in hull shaders.
2024-10-15 16:10:56 +02:00
Giovanni Mascellani
5dfaa26990 vkd3d-shader/ir: Validate the allowed data type and component count for SV_CullDistance. 2024-10-14 19:39:12 +02:00
Giovanni Mascellani
cd5718f59d vkd3d-shader/ir: Validate the allowed signatures and stages for SV_CullDistance. 2024-10-14 19:39:12 +02:00
Giovanni Mascellani
33972998a9 vkd3d-shader/ir: Validate the allowed data type and component count for SV_ClipDistance. 2024-10-14 19:39:12 +02:00
Giovanni Mascellani
0465549c9d vkd3d-shader/ir: Validate the allowed signatures and stages for SV_ClipDistance. 2024-10-14 19:39:12 +02:00
Giovanni Mascellani
20b3a4c362 vkd3d-shader/ir: Validate the allowed data type and component count for SV_Position. 2024-10-14 19:39:12 +02:00
Giovanni Mascellani
962ce961d4 vkd3d-shader/ir: Validate the allowed signatures and stages for SV_Position. 2024-10-14 19:39:12 +02:00
Giovanni Mascellani
2d452842ed vkd3d-shader/ir: Introduce a helper for validating MISCTYPE registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
15d8591a26 vkd3d-shader/ir: Introduce a helper for validating RASTOUT registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
7021a57193 vkd3d-shader/ir: Introduce a helper for validating UAV registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
c60eecbac8 vkd3d-shader/ir: Introduce a helper for validating RESOURCE registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
edbf7349bd vkd3d-shader/ir: Introduce a helper for validating SAMPLER registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
52761e689b vkd3d-shader/ir: Introduce a helper for validating registers without indices. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
ce638b9cca vkd3d-shader/ir: Introduce a helper for validating LABEL registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
92d1ba9188 vkd3d-shader/ir: Introduce a helper for validating SSA registers. 2024-10-14 15:42:00 +02:00
Giovanni Mascellani
1c43b2e55f vkd3d-shader/ir: Introduce a helper for validating TEMP registers. 2024-10-14 15:42:00 +02:00