Commit Graph

1270 Commits

Author SHA1 Message Date
Anna (navi) Figueiredo Gomes
127ae6cf12 vkd3d: Implement d3d12_command_list_OMSetDepthBounds().
Based on the design document, "The runtime will not clamp or validate
the input, but implementations may clamp to the range [0,1] if necessary.",
so we test for the EXT_depth_range_unrestricted extension, and only clamp if
it's not available (thus, necessary to do so).

NaNs are converted to zero as per "NaNs must be treated as 0, but the runtime
will convert NaNs to 0 on behalf of the implementation.", and a default bounds
are set to 0.0 and 1.0.
2024-09-11 14:53:33 +02:00
Giovanni Mascellani
d71966c77e vkd3d: Do not keep track of descriptor heaps when using virtual heaps.
Descriptors only need flushing when using Vulkan heaps, so let's avoid
uselessly scanning an array and taking and releasing a mutex if we're not.
2024-09-10 21:47:38 +02:00
Giovanni Mascellani
05a5bd620d vkd3d: Directly call the function to update descriptors.
For better code clarity.
2024-09-10 21:46:46 +02:00
Anna (navi) Figueiredo Gomes
5ebbba6fff vkd3d/state: Replace ERR with WARN in vkd3d_validate_descriptor_set_count(). 2024-09-10 21:42:47 +02:00
Henri Verbeet
0e72aba0bc Release 1.13. 2024-08-29 12:08:46 +02:00
Conor McCarthy
80e607e3e7 vkd3d: Free descriptor range information on error paths in d3d12_root_signature_info_from_desc(). (Valgrind)
Fixes memory leaks in test_create_root_signature().
2024-08-26 11:20:54 +02:00
Nikolay Sivov
d1b8a7e745 vkd3d: Fix a few typos in the comments.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-19 14:17:41 +02:00
Anna (navi) Figueiredo Gomes
16e9872718 vkd3d: Use D3D12_SHADER_VISIBILITY_ALL for 32-bit root constants when using vk_heaps.
The existing code sets "stageFlags" to VK_SHADER_STAGE_ALL when
"use_vk_heaps" is true, but doesn't adjust the visibility. This
potentially violates the "Any two elements of pPushConstantRanges must
not include the same stage in stageFlags" constraint, and causes the
validation layers to complain accordingly.
2024-08-15 17:53:46 +02:00
Henri Verbeet
9cf479d4bb vkd3d: Do not include assert.h. 2024-08-13 21:20:28 +02:00
Giovanni Mascellani
784e69a366 vkd3d: Check the entire root signature for register conflicts.
Not just each descriptor table individually.
2024-08-06 16:53:06 +02:00
Stefan Dösinger
d4c2a7f22b vkd3d: Pass a proper struct shader_cache_key * to rb_put() in vkd3d_shader_cache_add_entry(). 2024-08-05 15:59:53 +02:00
Conor McCarthy
969cae8b67 vkd3d: Add support for the ID3D12CommandList6 interface. 2024-08-05 15:56:09 +02:00
Giovanni Mascellani
240d31c793 vkd3d: Replace assert() with VKD3D_ASSERT() in vkd3d_private.h. 2024-07-29 19:12:13 +02:00
Giovanni Mascellani
529647142c vkd3d: Replace assert() with VKD3D_ASSERT() in utils.c. 2024-07-29 19:12:13 +02:00
Giovanni Mascellani
bd75396b38 vkd3d: Replace assert() with VKD3D_ASSERT() in state.c. 2024-07-29 19:12:13 +02:00
Giovanni Mascellani
02b898bec0 vkd3d: Replace assert() with VKD3D_ASSERT() in resource.c. 2024-07-29 19:12:13 +02:00
Giovanni Mascellani
150bf69da9 vkd3d: Replace assert() with VKD3D_ASSERT() in command.c. 2024-07-29 19:12:13 +02:00
Giovanni Mascellani
51b65688e1 ci: Abort on assertions on the CI. 2024-07-29 13:17:19 +02:00
Giovanni Mascellani
d7fc2693c4 vkd3d: Introduce a softer form of assertion.
Triggering an ERR() instead of aborting the program.
2024-07-29 13:17:19 +02:00
Giovanni Mascellani
ba0fec4c51 vkd3d: Propagate errors out of d3d12_root_signature_append_vk_binding(). 2024-07-22 16:01:37 +02:00
Giovanni Mascellani
4b7fe26b33 vkd3d: Remove the temporary pointers in vkd3d_physical_device_info_init().
They were rather pointless now.
2024-07-22 16:00:28 +02:00
Giovanni Mascellani
75c64e55cd vkd3d: Rebuild the vkd3d_physical_device_info chain before creating the device.
vkd3d might decide to disable some extensions after the chain is created,
so the chain must be recreated with only the structures corresponding to
enabled extensions.
2024-07-22 16:00:28 +02:00
Giovanni Mascellani
a876e0b192 vkd3d: Allocate temporary arrays on the stack in d3d12_command_list_update_push_descriptors(). 2024-07-17 15:52:37 +02:00
Conor McCarthy
ae0faf4500 vkd3d: Limit the workgroup X count for buffer UAV clears to the supported max. 2024-07-17 15:51:39 +02:00
Conor McCarthy
15f8657d74 vkd3d: Create a descriptor pool for static samplers when Vulkan-backed heaps are used.
Static samplers may be allocated from these pools.
2024-07-17 15:50:24 +02:00
Giovanni Mascellani
9ebf779ef0 vkd3d: Propagate a failure in d3d12_descriptor_heap_init(). 2024-07-11 00:34:58 +02:00
Giovanni Mascellani
7958babb39 vkd3d: Do not synchronize with the tessellation shader stages if they're not enabled.
Similarly to a54187f3c9, this fixes some validation
errors on devices that do not support tessellation; the Adreno 540 on my OnePlus 5
phone in my specific case.
2024-07-08 18:49:28 +02:00
Henri Verbeet
90f26759b5 vkd3d: Always use UINT views to clear UAVs with integer formats.
We would previously try to use float pipelines for SINT formats.
2024-06-13 23:26:35 +02:00
Giovanni Mascellani
a54187f3c9 vkd3d: Do not synchronize with the geometry shader stage if it's not enabled. 2024-06-13 23:24:22 +02:00
Giovanni Mascellani
a1a07de8ca vkd3d: Enable VK_KHR_portability_subset if available.
We don't check it, but at least the validation layer does not complain
when using MoltenVK.
2024-06-13 23:24:22 +02:00
Giovanni Mascellani
3254eff328 vkd3d: Do not request VK_EXT_debug_marker if debug is disabled.
Because it requires VK_EXT_debug_report.
2024-06-13 23:24:22 +02:00
Conor McCarthy
47d077e5ce vkd3d: Interpret a null vertex buffer 'views' pointer as a null buffer. 2024-06-11 15:52:28 +02:00
Conor McCarthy
589ed1e358 vkd3d: Allow block compressed textures to have unaligned width and height. 2024-06-11 15:51:34 +02:00
Henri Verbeet
36c123c005 Release 1.12. 2024-05-29 22:05:28 +02:00
Conor McCarthy
ae25c80498 vkd3d: Check for mutable descriptor set allocation failure in d3d12_descriptor_heap_create_descriptor_set(). 2024-05-27 21:07:30 +02:00
Giovanni Mascellani
dfa3ee25e0 vkd3d: Move the full stops before the newline. 2024-05-22 22:15:27 +02:00
Giovanni Mascellani
05394b624a vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS18 in CheckFeatureSupport(). 2024-05-13 11:50:37 +02:00
Giovanni Mascellani
7c7503713a vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS17 in CheckFeatureSupport(). 2024-05-13 11:50:37 +02:00
Giovanni Mascellani
d528fdbebf vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS16 in CheckFeatureSupport(). 2024-05-13 11:50:37 +02:00
Giovanni Mascellani
5445c4c8aa vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS15 in CheckFeatureSupport(). 2024-05-13 11:50:37 +02:00
Giovanni Mascellani
761ee1e487 vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS14 in CheckFeatureSupport(). 2024-05-13 11:50:37 +02:00
Conor McCarthy
fb20639eb4 vkd3d: Return E_INVALIDARG if the requested shader model is unknown. 2024-05-13 11:50:33 +02:00
Conor McCarthy
d17956ced8 vkd3d: Return a shader model no higher than the requested one for D3D12_FEATURE_SHADER_MODEL. 2024-05-13 11:50:32 +02:00
Giovanni Mascellani
ca35023ed0 vkd3d: Only request properties and features when the corresponding extension is available.
This fixes a number of validation errors.
2024-05-08 21:08:30 +02:00
Giovanni Mascellani
ea090a34cd vkd3d: Init physical device information after checking available extensions. 2024-05-08 21:08:30 +02:00
Giovanni Mascellani
826b75722b vkd3d: Do not automatically succeed if no extensions are available.
So error messages for missing required extensions are emitted.
2024-05-08 21:08:28 +02:00
Giovanni Mascellani
dbe3384609 vkd3d: Move checking device extensions to a dedicated function. 2024-05-08 21:08:28 +02:00
Giovanni Mascellani
29c63906bc vkd3d: Warn about missing extensions only when meaningful. 2024-05-08 21:08:28 +02:00
Stefan Dösinger
d6b1e62ffc vkd3d: Add a win32 version of vkd3d_get_program_name. 2024-05-08 21:08:22 +02:00
Giovanni Mascellani
5d78eeb6d3 vkd3d: Simplify control flow for swapchain images. 2024-05-02 22:19:08 +02:00