Hans-Kristian Arntzen
a5aac500bc
vkd3d: Basic implementation of GraphicsCommandList::BuildRTAS().
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
3353ed14de
vkd3d: Implement RTAS object creation.
...
When building acceleration structures, we need to have an
VkAccelerationStructureKHR object, but the D3D12 API just uses a plain
VA = ID3D12Resource::GetGPUVA() + offset.
For this to work, we need to resolve the VA back to VkBuffer + offset.
The only VkBuffer we can lookup is the original backing memory
allocation in the VA map, and that allocation itself must own a view
map, since we cannot tie the VA to any specific ID3D12Resource.
Since creating an RTAS is not the common path, we allocate the view map
on-demand with CAS.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
0fc80d9067
vkd3d: Emit RT barriers as required.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
221a658884
vkd3d: Mark resources as being RTAS depending on initial resource state.
...
RTAS must stay in this resource state forever. The only way to
synchronize them is UAV barriers.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
86f7fdfe7a
vkd3d: Add RTAS buffer usage flags.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
83861cceed
vkd3d: Allow RTAS initial resource state.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
2afe25c0c8
vkd3d: Implement GetRaytracingAccelerationStructurePrebuildInfo.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
d773e67fff
vkd3d: Add helper query to check if RT should be used.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-25 16:14:16 +01:00
Hans-Kristian Arntzen
a90ed938b4
vkd3d-shader: Pass down SBT descriptor size to dxil-spirv.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-23 12:28:19 +01:00
Hans-Kristian Arntzen
15e36a0430
vkd3d: Use virtual VAs for descriptor heap GPU VAs.
...
Allows local root signatures to work correctly and is also a good
optimization since we no longer need to dereference memory (potentially
cold cache lines) to figure out heap offset in command buffer.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-23 12:28:19 +01:00
Hans-Kristian Arntzen
1af3f9c65f
vkd3d: Use calloc for d3d12_device instead of manual memset.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-23 12:28:19 +01:00
Hans-Kristian Arntzen
1586a75ada
vkd3d: Align d3d12_desc to 64 bytes.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-23 12:28:19 +01:00
Hans-Kristian Arntzen
0c94e07ab2
vkd3d: Elide timeline semaphore waits which can be satisfied implicitly.
...
If we're signalling and waiting on same physical queue (always true for
current SINGLE_QUEUE define), we can rely on submission boundary
synchronization which doesn't require any extra submissions to resolve.
Avoids awkward GPU driver bubbles with back to back signal -> wait pairs
with timeline.
Observed 2% GPU uplift on RE2 on AMD.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-22 13:00:22 +01:00
Philip Rebohle
1d7e424c44
vkd3d: Mask certain heap flags when suballocating memory.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-19 20:18:24 +01:00
Philip Rebohle
f6c6a76735
vkd3d: Store original heap flags in d3d12_resource again.
...
Otherwise, when suballocating memory, GetHeapProperties may
not return the exact same set of flags if we ignore flags
when looking up suitable chunks.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-19 20:18:24 +01:00
Philip Rebohle
be080edc7f
vkd3d: Remove vkd3d_allocate_resource_memory.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-19 19:51:44 +01:00
Philip Rebohle
a1e5b78bc4
vkd3d: Suballocate committed images if possible and if supported by the driver.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-19 19:51:44 +01:00
Philip Rebohle
a1ffea1800
vkd3d: Fix integer underflow when checking for suitable free ranges.
...
The difference between a range's offset and the aligned
offset may be greater than the size of that range.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-19 18:11:36 +01:00
Joshua Ashton
bb3e5f6cad
vkd3d: Account for front buffer in swapchain image count
...
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-02-19 13:17:15 +01:00
Philip Rebohle
be4391b972
vkd3d: Align images manually to meet Vulkan requirements if necessary.
...
Allows us to not allocate device memory for certain render targets on
Polaris GPUs.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 18:25:23 +01:00
Philip Rebohle
d6a4826099
vkd3d: Remove heap_offset member from d3d12_resource.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
56ff4622b6
vkd3d: Remove cookie member from d3d12_resource.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
6e81621b82
vkd3d: Remove gpu_address member from d3d12_resource.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
833d7e207c
vkd3d: Remove vk_buffer/vk_image union from d3d12_resource.
...
Use the unique_resource struct instead.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
5a0a5ef44b
vkd3d: Remove unused resource flags and rename SPARSE -> RESERVED.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
6a34d3d204
vkd3d: Remove _2 suffix from memory allocation functions.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
53f6a9c78a
vkd3d: Rename _2 suffix from resource creation functions.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
a2e14d7d1d
vkd3d: Remove _2 suffix from d3d12_heap_2 and related functions.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
6f8bb2a4c0
vkd3d: Use vkd3d_allocate_device_memory_2 for sparse metadata.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
12f0c11c7f
vkd3d: Simplify vkd3d_allocate_image_memory helper.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
ab2c190da5
vkd3d: Simplify vkd3d_allocate_buffer_memory helper.
...
This is still useful as a low-level memory allocation function when
we don't want to bother with buffer offsets or D3D12 validation.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
db2e0c7587
vkd3d: Remove vkd3d_gpu_va_allocator.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
8826f3c5bc
vkd3d: Remove d3d12_heap and old resource creation functions.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
9792b02b26
vkd3d: Use vkd3d_memory_allocation for scratch buffers.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Philip Rebohle
db1b425d2a
vkd3d: Use new resource and heap implementations.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-18 14:17:22 +01:00
Hans-Kristian Arntzen
8437eea2c0
vkd3d: Remove clamping assumption in RTPSO stack size.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-18 14:16:31 +01:00
Joshua Ashton
f01935d69e
vkd3d: Fix SetName for inline query types
...
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-02-18 02:41:45 +01:00
Philip Rebohle
6fc8b67576
vkd3d: Fix incorrect chunk assignment for chunk allocations.
...
Our clear code assume that this is NULL for allocations owned
by a chunk, so we should actually do it that way. Fixes some
issues where we do not wait for clears to complete if a chunk
gets destroyed.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-17 16:38:47 +01:00
Philip Rebohle
e12afd31d9
vkd3d: Actually use VKD3D_VA_BLOCK_COUNT.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-17 16:38:47 +01:00
Philip Rebohle
35f90c4b2f
vkd3d: Only print some swapchain FIXMEs once.
...
Silences a whole bunch of log spam in Control.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-17 13:37:41 +01:00
Hans-Kristian Arntzen
7051bf76f7
vkd3d: Fix validation errors with KHR_fragment_shading_rate.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-02-16 16:07:55 +00:00
Philip Rebohle
a39bab95a1
vkd3d: Clear suballocated memory to zero.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-16 16:06:26 +01:00
Philip Rebohle
668a4e1f2c
vkd3d: Do not suballocate small image-only heaps.
...
We have no way to manually reset these.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-16 16:06:26 +01:00
Philip Rebohle
4d68130be7
vkd3d: Add functionality to clear newly allocated memory.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-16 16:06:26 +01:00
Philip Rebohle
78713062fe
vkd3d: Introduce unique_queue_mask.
...
Has one bit set for each vkd3d_queue_family that points to a
unique queue. This can be used to iterate over device queues
without having to check for duplicates manually.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-16 16:06:26 +01:00
Philip Rebohle
812c82f8ac
vkd3d: Introduce VKD3D_QUEUE_FAMILY_INTERNAL_COMPUTE.
...
This needs a rework when we re-enable multi-queue support.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-16 16:06:26 +01:00
Philip Rebohle
ba632148d7
vkd3d: Add new functions to create and destroy resources.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-15 17:04:52 +01:00
Philip Rebohle
fee47ef695
vkd3d: Introduce d3d12_resource_validate_create_info.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-15 17:04:52 +01:00
Philip Rebohle
22f61611d1
vkd3d: Add d3d12_heap_2.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-15 17:04:52 +01:00
Philip Rebohle
229273fb3b
vkd3d: Add memory allocator instance to device.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-02-15 17:04:52 +01:00