Giovanni Mascellani
49f0fd42b8
vkd3d-shader/spirv: Move bool casting helpers above register loading helpers.
2024-02-06 23:06:55 +01:00
Giovanni Mascellani
ee994e95dd
vkd3d-shader/spirv: Convert the swizzle according to the source bit width.
...
Fixes: 1f536238a8
2024-02-06 23:06:53 +01:00
Giovanni Mascellani
674f86042d
vkd3d-shader/dxil: Set the register before calling src_param_init_scalar().
...
Which uses the register to compute the appropriate swizzle.
Fixes: 1f536238a8
2024-02-06 23:06:49 +01:00
Henri Verbeet
06ddb10c40
vkd3d: Introduce a debug helper for CPU descriptor handles.
2024-02-01 22:25:36 +01:00
Henri Verbeet
feca006d6a
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_versioned_root_signature_deserializer_Release().
2024-02-01 22:25:27 +01:00
Henri Verbeet
f42411fe4a
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_versioned_root_signature_deserializer_AddRef().
2024-02-01 22:25:27 +01:00
Henri Verbeet
afd0e45cd6
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_root_signature_deserializer_Release().
2024-02-01 22:25:27 +01:00
Henri Verbeet
c2e82cf06a
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_root_signature_deserializer_AddRef().
2024-02-01 22:25:27 +01:00
Henri Verbeet
9434687c5b
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_pipeline_state_Release().
2024-02-01 22:25:27 +01:00
Henri Verbeet
c71fa87522
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_pipeline_state_AddRef().
2024-02-01 22:25:27 +01:00
Henri Verbeet
9e135f6143
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_root_signature_Release().
2024-02-01 22:25:27 +01:00
Henri Verbeet
37e8826301
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_root_signature_AddRef().
2024-02-01 22:25:27 +01:00
Jacek Caban
2ae9f18a3a
vkd3d: Use uint64_t for the size in vkd3d_gpu_va_allocator_allocate.
...
Avoids value truncation in 32-bit builds.
2024-02-01 22:25:20 +01:00
Conor McCarthy
eae4b7b4a2
vkd3d: Implement GetResourceAllocationInfo1().
2024-02-01 22:25:13 +01:00
Conor McCarthy
7e84421b9c
vkd3d: Support multiple descriptions in GetResourceAllocationInfo().
2024-02-01 22:25:11 +01:00
Conor McCarthy
92e19a7da3
vkd3d: Add ID3D12Device7 interface stubs.
2024-02-01 22:25:10 +01:00
Conor McCarthy
76fbbe980a
vkd3d: Add ID3D12Device6 interface stub.
2024-02-01 22:25:10 +01:00
Conor McCarthy
95e4222cc6
vkd3d-shader/spirv: Emit a vector bitcast if necessary in spirv_compiler_emit_load_ssa_reg().
2024-02-01 22:25:04 +01:00
Conor McCarthy
ebec0aa434
vkd3d-shader/dxil: Implement DX intrinsic TextureLoad.
2024-02-01 22:25:02 +01:00
Conor McCarthy
e6d52861e9
vkd3d-shader/dxil: Implement DX intrinsic SplitDouble.
2024-02-01 22:24:58 +01:00
Henri Verbeet
6dea3d08b1
vkd3d: Use debugstr_hresult() in d3d12_device_mark_as_removed().
2024-02-01 00:08:39 +01:00
Henri Verbeet
920f5293e9
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_query_heap_Release().
2024-02-01 00:08:35 +01:00
Henri Verbeet
d66f61cd5f
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_query_heap_AddRef().
2024-02-01 00:08:35 +01:00
Henri Verbeet
334f60c281
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_descriptor_heap_Release().
2024-02-01 00:08:35 +01:00
Henri Verbeet
db37be2a70
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_descriptor_heap_AddRef().
2024-02-01 00:08:35 +01:00
Henri Verbeet
886c1fdcc4
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_resource_Release().
2024-02-01 00:08:35 +01:00
Henri Verbeet
84234a8875
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_resource_AddRef().
2024-02-01 00:08:35 +01:00
Henri Verbeet
201fab7d5d
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_resource_decref().
2024-02-01 00:08:35 +01:00
Henri Verbeet
a9582a7355
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_resource_incref().
2024-02-01 00:08:35 +01:00
Henri Verbeet
6f7aec58ea
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_heap_resource_destroyed().
2024-02-01 00:08:35 +01:00
Henri Verbeet
30a00160e2
vkd3d: Use vkd3d_atomic_increment_u32() in vkd3d_bind_heap_memory().
2024-02-01 00:08:35 +01:00
Henri Verbeet
06eb8e5f8c
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_heap_Release().
2024-02-01 00:08:35 +01:00
Henri Verbeet
fd385ab994
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_heap_AddRef().
2024-02-01 00:08:35 +01:00
Giovanni Mascellani
cc72a8d311
vkd3d-shader/spirv: Free binary SPIR-V code (Valgrind).
2024-02-01 00:08:28 +01:00
Henri Verbeet
d38221bd68
vkd3d-shader/ir: Pass a struct vsir_program to shader_parser_get_src_params().
2024-02-01 00:08:23 +01:00
Henri Verbeet
47ec24ebad
vkd3d-shader/ir: Pass a struct vsir_program to shader_parser_get_dst_params().
2024-02-01 00:08:22 +01:00
Henri Verbeet
ced8543952
vkd3d-shader: Use vkd3d_atomic_increment_u32() in vkd3d_shader_dump_blob().
2024-02-01 00:08:18 +01:00
Henri Verbeet
fef30dac2c
vkd3d-shader/d3dbc: Do not fail parsing the shader when undeclared inputs are encountered.
...
These can be disassembled by D3DDisassemble() just fine, and perhaps
more importantly, shader model 1 vertex shaders do not require dcl_
instructions in Direct3D 8.
2024-01-29 22:33:46 +01:00
Henri Verbeet
8c6f5b847b
vkd3d-utils: Implement D3DDisassemble().
...
Very loosely based on Wine's d3dcompiler_43.
2024-01-29 22:33:44 +01:00
Henri Verbeet
4fd4ecc020
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_device_Release().
2024-01-29 22:33:40 +01:00
Henri Verbeet
7d7833f3c0
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_device_AddRef().
2024-01-29 22:33:40 +01:00
Henri Verbeet
f61891954e
vkd3d: Use vkd3d_atomic_decrement_u32() in vkd3d_instance_decref().
2024-01-29 22:33:40 +01:00
Henri Verbeet
042e269791
vkd3d: Use vkd3d_atomic_increment_u32() in vkd3d_instance_incref().
2024-01-29 22:33:40 +01:00
Giovanni Mascellani
edc406d297
vkd3d-shader/ir: Check that SSA registers are used with compatible data types.
...
Specifically, accesses are always 32 bit or always 64 bit.
2024-01-29 22:33:34 +01:00
Giovanni Mascellani
1f536238a8
vkd3d-shader: Use 64 bit swizzles for 64 bit data types in VSIR.
...
The handling of write masks and swizzles for 64 bit data types is
currently irregular: write masks are always 64 bit, while swizzles
are usually 32 bit, except for SSA registers with are 64 bit.
With this change we always use 64 bit swizzles, in order to make
the situation less surprising and make it easier to convert
registers between SSA and TEMP.
64 bit swizzles are always required to have X in their last two
components.
2024-01-29 22:33:33 +01:00
Giovanni Mascellani
2b93aae069
vkd3d-shader: Convert write masks between 32 and 64 bit by cases.
...
There are only three cases, and while the code is longer it is also
hopefully easier to read. Moreover, an error message is casted if
we're doing something unexpected.
2024-01-29 22:33:30 +01:00
Francisco Casas
13f713f74b
vkd3d-shader/hlsl: Turn register(cX) reservations into buffer offset for SM4.
2024-01-29 22:33:27 +01:00
Francisco Casas
c7f7636534
vkd3d-shader/hlsl: Make register(cX) reservations work for SM1.
2024-01-29 22:33:25 +01:00
Conor McCarthy
92f0b37133
vkd3d-shader/spirv: Support 64-bit source value for bitfield instructions.
2024-01-29 22:33:22 +01:00
Conor McCarthy
3bbe374ca8
vkd3d-shader/dxil: Implement DX intrinsic Tertiary.
...
IBFE and UBFE are not emitted for HLSL sources which perform bitfield
extractions, e.g. loading a value from a struct containing bitfields, or
the equivalent done with bit shifts. These instructions are probably
only emitted by the TPF -> DXIL converter, which makes them hard to test.
2024-01-29 22:33:20 +01:00
Giovanni Mascellani
026c502f31
vkd3d-shader/ir: Fixup PHI nodes when lowering switches to selection ladders.
...
A map between the blocks before and after the pass is built and then
used to fix the PHI nodes.
2024-01-29 22:33:17 +01:00
Giovanni Mascellani
378109051c
vkd3d-shader/ir: Lower monolithic switches to selection ladders.
...
PHI nodes must be fixed up after this pass, because the block references
might have become broken. For simplicitly this is not handled yet.
The goal for this pass is to make the CFG structurizer simpler, because
only conditional and unconditional branches must be supported.
Eventually this limitation might be lifted if there is advantage in
doing so.
2024-01-29 22:33:15 +01:00
Giovanni Mascellani
b97edee03d
vkd3d-shader/spirv: Emit an error if merge information is missing.
...
Instead of crashing.
2024-01-29 22:33:14 +01:00
Conor McCarthy
e08c0cfc4f
vkd3d-shader/dxil: Implement DX intrinsic RawBufferLoad.
2024-01-29 22:33:10 +01:00
Conor McCarthy
1bab93843d
vkd3d-shader/dxil: Load raw/structured buffer SRV/UAV descriptors.
2024-01-29 22:33:09 +01:00
Henri Verbeet
3295f0d16e
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_command_signature_Release().
2024-01-25 22:24:55 +01:00
Henri Verbeet
13ba36bb43
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_command_signature_AddRef().
2024-01-25 22:24:55 +01:00
Henri Verbeet
0ff20e6b8d
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_command_queue_Release().
2024-01-25 22:24:55 +01:00
Henri Verbeet
cdb559c39d
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_command_queue_AddRef().
2024-01-25 22:24:55 +01:00
Henri Verbeet
298dce541d
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_command_list_Release().
2024-01-25 22:24:55 +01:00
Henri Verbeet
87f3a606d7
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_command_list_AddRef().
2024-01-25 22:24:55 +01:00
Henri Verbeet
d891e5c2a0
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_command_allocator_Release().
2024-01-25 22:24:55 +01:00
Henri Verbeet
315fce8ac5
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_command_allocator_AddRef().
2024-01-25 22:24:55 +01:00
Henri Verbeet
78bb7b6760
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_fence_decref().
2024-01-25 22:24:55 +01:00
Henri Verbeet
c8122ff47e
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_fence_incref().
2024-01-25 22:24:55 +01:00
Henri Verbeet
1b4f1ac8a0
vkd3d: Use vkd3d_atomic_decrement_u32() in d3d12_fence_Release().
2024-01-25 22:24:55 +01:00
Henri Verbeet
5a2b82fbd5
vkd3d: Use vkd3d_atomic_increment_u32() in d3d12_fence_AddRef().
2024-01-25 22:24:55 +01:00
Henri Verbeet
fee3b94563
vkd3d-shader: Start an if-block on VKD3DSIH_IFC in vkd3d_shader_scan_instruction().
2024-01-25 22:24:50 +01:00
Conor McCarthy
f954724870
vkd3d-shader/spirv: Handle the TAN instruction in spirv_compiler_emit_ext_glsl_instruction().
2024-01-25 22:24:44 +01:00
Conor McCarthy
93d7c30395
vkd3d-shader/dxil: Handle DX intrinsic Tan in sm6_parser_emit_dx_unary().
2024-01-25 22:24:43 +01:00
Conor McCarthy
2a260b8d56
vkd3d-shader/dxil: Implement DX intrinsics Cos and Sin.
2024-01-25 22:24:41 +01:00
Francisco Casas
cec45da45b
vkd3d-shader/ir: Update flatten_control_flow_constructs() comment.
2024-01-25 22:24:27 +01:00
Conor McCarthy
8ae69c745b
vkd3d-shader/spirv: Handle thread group UAV barriers.
2024-01-25 22:24:23 +01:00
Conor McCarthy
18e9148f58
vkd3d-shader/spirv: Include Uniform in the memory semantics for UAV barriers.
...
The UniformMemory semantic applies the constraints to Uniform storage
class memory, which matches how UAV variables are declared.
2024-01-25 22:24:22 +01:00
Conor McCarthy
adfbecef3c
vkd3d-shader/spirv: Handle globally coherent UAVs.
2024-01-25 22:24:20 +01:00
Henri Verbeet
766f5f039b
vkd3d: Use debugstr_hresult() in vkd3d_serialize_versioned_root_signature().
2024-01-24 22:38:42 +01:00
Henri Verbeet
30113c098d
vkd3d: Use debugstr_hresult() in vkd3d_serialize_root_signature().
2024-01-24 22:38:42 +01:00
Henri Verbeet
a86a21667c
vkd3d: Use debugstr_hresult() in vkd3d_create_device().
2024-01-24 22:38:42 +01:00
Henri Verbeet
ad08cbc390
vkd3d: Use debugstr_hresult() in vkd3d_uav_clear_state_init().
2024-01-24 22:38:42 +01:00
Henri Verbeet
1599de9a0d
vkd3d: Use debugstr_hresult() in d3d12_pipeline_state_init_compute().
2024-01-24 22:38:42 +01:00
Henri Verbeet
c5b5621e28
vkd3d: Use debugstr_hresult() in d3d12_pipeline_state_find_and_init_uav_counters().
2024-01-24 22:38:42 +01:00
Henri Verbeet
9c1e661ae3
vkd3d: Use debugstr_hresult() in vkd3d_create_compute_pipeline().
2024-01-24 22:38:42 +01:00
Henri Verbeet
eabcaf15fb
vkd3d-shader/ir: Use vsir_instruction_is_dcl() in vsir_validate_instruction().
2024-01-24 22:38:36 +01:00
Henri Verbeet
365ad56888
vkd3d-shader/ir: Get rid of shader_instruction_is_dcl().
2024-01-24 22:38:34 +01:00
Conor McCarthy
54f6e6dd67
vkd3d-shader/spirv: Check for FEATURE_FLOAT64 when double precision use is flagged.
2024-01-24 22:38:09 +01:00
Conor McCarthy
6446b6ea21
vkd3d-shader: Introduce VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64.
2024-01-24 22:38:09 +01:00
Conor McCarthy
e973271a40
vkd3d-shader/spirv: Handle the ISINF and ISNAN instructions in spirv_compiler_emit_alu_instruction().
2024-01-24 22:38:04 +01:00
Conor McCarthy
cd674d593e
vkd3d-shader/spirv: Implement the ISFINITE instruction.
2024-01-24 22:38:03 +01:00
Conor McCarthy
41cce4cbf1
vkd3d-shader/dxil: Handle floating point special value comparisons in sm6_parser_emit_dx_unary().
2024-01-24 22:37:59 +01:00
Zebediah Figura
579e262d98
vkd3d-utils: Implement input and output signature reflection.
2024-01-24 22:37:53 +01:00
Zebediah Figura
53bd1f5419
vkd3d-utils: Add D3DReflect().
2024-01-24 22:37:53 +01:00
Francisco Casas
b92f6c448a
vkd3d-shader/ir: Lower texkill instructions to discard_nz.
2024-01-24 22:37:41 +01:00
Francisco Casas
7e75ac63a1
vkd3d-shader/d3dbc: Emit fixme for HLSL_RESOURCE_SAMPLE_LOD.
...
Currently, HLSL_RESOURCE_SAMPLE_LOD is not implemented for d3dbc,
but we are incorrectly writting a texld instruction to handle it.
This causes SM1 tests with the vulkan backend (in following patches)
to fail if VKD3D_SHADER_CONFIG="force_validation" is enabled.
For now a fixme is emited in these cases.
2024-01-24 22:37:38 +01:00
Henri Verbeet
bf628f0c74
vkd3d-shader/ir: Store block names in struct vsir_program.
2024-01-23 20:27:35 +01:00
Henri Verbeet
f3c7d2d05c
vkd3d-shader/ir: Store the block count in struct vsir_program.
2024-01-23 20:27:34 +01:00
Henri Verbeet
98c6e85b33
vkd3d-shader/ir: Store control point counts in struct vsir_program.
2024-01-23 20:27:32 +01:00
Henri Verbeet
e4cc4a336e
vkd3d: Use debugstr_hresult() in vkd3d_init_null_resources().
2024-01-23 20:27:28 +01:00
Henri Verbeet
d4b329e628
vkd3d: Use debugstr_hresult() in vkd3d_join_thread().
2024-01-23 20:27:28 +01:00
Henri Verbeet
e965701776
vkd3d: Use debugstr_hresult() in d3d12_device_init().
2024-01-23 20:27:28 +01:00
Henri Verbeet
8dc1239e14
vkd3d: Use debugstr_hresult() in vkd3d_create_vk_device().
2024-01-23 20:27:28 +01:00