Philip Rebohle
64bd4f6404
vkd3d: Add VKD3D_FEATURE_LEVEL override.
...
Unblocks some games that request Feature Level 12.0, such as
Anno 1800, Monster Hunter World, The Talos Principle. May
cause issues if games use unsupported features.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-17 15:36:51 +02:00
Philip Rebohle
ccb2cea919
vkd3d: Always use cached memory type for readback heap.
...
We no longer require coherent memory types, so we should
always prefer a HOST_CACHED memory type for the readback
heap as well as corresponding custom heaps.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-17 15:36:02 +02:00
Philip Rebohle
7ad4ea2f78
vkd3d: Explicitly flush/invalidate mapped memory if necessary.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-17 15:36:02 +02:00
Hans-Kristian Arntzen
09af24e69b
vkd3d: Avoid vkResetCommandPool if there are pending command buffers.
...
Works around an app-bug in SotTR, where the command pool is reset before
the command buffer completes.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-04-17 15:31:38 +02:00
Hans-Kristian Arntzen
334b1cab8d
vkd3d: Implement threaded submission queue.
...
D3D12 supports out-of-order signal and wait. So does Vulkan timeline
semaphores. However, in Vulkan we don't have an infinite amount of
virtual queues. We must potentially map multiple D3D12 queues on top of
Vulkan, which might lead to a deadlock when app attempts to
wait-before-signal if the two queues are mapped to the same physical
Vulkan queue.
In order to solve this, we need to hold back submissions until we know
it is safe to do so. To make this work in practice as simply as possible, each
ID3D12CommandQueue has its own submission thread, which will block on an
ID3D12Fence's pending timeline value for a Wait command. The main reason to use a
submission thread is that resolving this directly in
ID3D12CommandQueue::Signal is extremely tricky and potentially
needs recursively locking queues and fences.
Note that we only block on the pending wait value, not the actual wait
value, so there is no real CPU <-> GPU synchronization here. In the
common case, no submission thread will block.
The added benefit is that submits are async now, so main thread CPU
overhead might slightly decrease.
To play nice with DXGI swapchain, the external entry point for acquiring
the Vulkan queue needs to drain the submission thread and lock it to ensure
submissions happen in order.
Fixes hangs in The Division 1, which makes use of this D3D12 feature.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-04-17 15:31:38 +02:00
Philip Rebohle
f9a2a68948
vkd3d: Improve d3d12_device_SetResidencyPriority stub.
...
Monster Hunter World requires this function to succeed.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-16 18:38:31 +02:00
Philip Rebohle
957aec4785
vkd3d: Restore old ClearUnorderedAccessView implementation.
...
The current code uses D3D12 abstractions to create pipelines but
issues raw Vulkan API calls to actually implement the functionality,
which means the code makes assumptions about the exact descriptor
set layout and push constant layout, which is generally a bad idea
now that we have multiple code paths for root constants etc.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-16 18:03:39 +02:00
Hans-Kristian Arntzen
edc614ab2e
vkd3d: Remove legacy fence/semaphore path.
...
Prepares for a rewrite of queue submission, the legacy path is never
run in practice and will likely break in subtle ways.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-04-16 15:31:04 +02:00
Philip Rebohle
55be09fb0d
vkd3d: Support 1D texture views.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-16 10:30:51 +02:00
Philip Rebohle
5bf266a8ed
vkd3d: Check whether root descriptors are defined.
...
Fixes a crash in Monster Hunter World.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-16 10:29:17 +02:00
Philip Rebohle
d6204bb993
vkd3d: Implement D3D12_FEATURE_QUERY_META_COMMAND feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 14:25:01 +02:00
Philip Rebohle
25f0af58f6
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS6 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 14:25:01 +02:00
Philip Rebohle
0701d87474
vkd3d: Update ID3D12CommandList to ID3D12GraphicsCommandList5.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 14:25:01 +02:00
Philip Rebohle
61530857d6
vkd3d: Update ID3D12Device to ID3D12Device6.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 14:25:01 +02:00
Hans-Kristian Arntzen
6c9683e23c
vkd3d: Do not always attempt dedicated buffer allocation for heap.
...
On NVIDIA we sometimes fail to place images on a heap because the memory
region was dedicated. Only bother trying this if heap flags only allow
buffers.
Fixes a GPU crash in The Division.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-04-15 13:33:44 +02:00
Philip Rebohle
78b6d291cd
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS5 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 10:35:59 +02:00
Philip Rebohle
638dcb1afb
vkd3d: Update ID3D12Device to ID3D12Device5.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 10:35:59 +02:00
Philip Rebohle
084f8ed949
vkd3d: Update ID3D12CommandList to ID3D12GraphicsCommandList4.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 10:35:59 +02:00
Philip Rebohle
dbeffb0834
vkd3d: Update ID3D12Fence to ID3D12Fence1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-15 10:35:59 +02:00
Philip Rebohle
0871f02b7e
vkd3d: Implement D3D12_FEATURE_CROSS_NODE feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
03b15571d8
vkd3d: Implement D3D12_FEATURE_SERIALIZATION feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
26538f4377
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS4 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
d94b48a851
vkd3d: Update ID3D12Resource to ID3D12Resource1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
e2881e199d
vkd3d: Update ID3D12Heap to ID3D12Heap1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
9c119b907c
vkd3d: Implement ID3D12Device4::GetResourceAllocationInfo1.
...
Also, support querying more than one resource at a time.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
0c03bbe9b5
vkd3d: Implement ID3D12Device4::CreateCommandList1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
23e2b62950
vkd3d: Implement ID3D12Device4::CreateReservedResource1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
a66e9a2ce4
vkd3d: Implement ID3D12Device4::CreateCommittedResource1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
5fbca43bc8
vkd3d: Implement ID3D12Device4::CreateHeap1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
aa2c21b2bd
vkd3d: Update ID3D12Device to ID3D12Device4.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
108ce6409b
vkd3d: Update ID3D12CommandList to ID3D12GraphicsCommandList3.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-14 16:27:08 +02:00
Philip Rebohle
da07275b16
vkd3d: Implement d3d12_device_CreatePipelineLibrary.
...
Needed by Claybook.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
9647109559
vkd3d: Add stubs for ID3D12PipelineLibrary1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
50b5959e64
vkd3d: Implement better stub for GetCachedBlob.
...
We currently can't implement this in a meaningful way, but we
should return an empty blob in order to not crash applications.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
20aa3c3c26
vkd3d: Make ID3DBlob implementation more accessible.
...
We're going to need this to implement other parts of the
API, so it should be in common code.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
7f91484c28
vkd3d: Enable EXT_shader_stencil_export if available.
...
Allows us to expose PSSpecifiedStencilRefSupported.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
4c1cc5732c
vkd3d: Enable VK_EXT_shader_viewport_index_layer if available.
...
And expose the following feature cap on capable GPUs:
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
4e3ea62e79
vkd3d: Implement depth bounds test.
...
Used by Resident Evil 2 and 3 if available.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 16:04:39 +02:00
Philip Rebohle
960e6f85fd
vkd3d: Support multiple viewports.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:57:23 +02:00
Philip Rebohle
ae789d9ba8
vkd3d: Pass dynamic state struct to get_or_create_pipeline.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:57:23 +02:00
Philip Rebohle
0cc33cb823
vkd3d: Move vertex strides and primitive topology to dynamic_state.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:57:23 +02:00
Philip Rebohle
9cb863f84a
vkd3d: Only enable dynamic states if necessary.
...
Avoids some unnecessary API calls.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
d48794408a
vkd3d: Refactor dynamic state updates.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
e08580f178
vkd3d: Refactor dynamic state enablement.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
d8a6d71038
vkd3d: Introduce vkd3d_dynamic_state.
...
And add a function to (re-)apply dynamic state as necessary. This
will allow us to ignore dynamic state not needed by the pipeline,
and may become necessary if we implement shader-based copies etc.
Currently unused; the following commits will subsequently change
state setting methods over.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
6fbc38118a
vkd3d: Implement support for logic op.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 13:54:10 +02:00
Philip Rebohle
1d8afd85d4
vkd3d: Signal fence in EnqueueMakeResident.
...
Resident Evil 2 needs this method. Since we don't really have a concept
of explicit memory residency in Vulkan, we're fine not doing anything else.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
11ca844bef
vkd3d: Implement CreatePipelineState.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
f032702a74
vkd3d: Extend graphics pipeline description.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
5ba09a9ab4
vkd3d: Implement D3D12_FEATURE_EXISTING_HEAPS feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
0a5c618e9e
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS3 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
34180e4073
vkd3d: Implement D3D12_FEATURE_COMMAND_QUEUE_PRIORITY feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
ef937713e3
vkd3d: Implement D3D12_FEATURE_SHADER_CACHE feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
1ab7dd67a0
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS2 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
8687969a2a
vkd3d: Implement D3D12_FEATURE_ARCHITECTURE1 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
3dc9f7c585
vkd3d: Implement D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
90a22df2a4
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS1 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
7c7db3c77c
vkd3d: Optionally enable VK_EXT_subgroup_size_control.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
0273292224
vkd3d: Optionally enable VK_NV_shader_sm_builtins.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
ebcc18583c
vkd3d: Optionally enable VK_AMD_shader_core_properties{_2}.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
70ac2f147e
vkd3d: Upgrade ID3D12Device to ID3D12Device3.
...
Stubs for now, will implement new functionality as needed.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
6b113bb629
vkd3d: Introduce d3d12_command_list_iface type alias.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
b6d5a407ce
vkd3d: Define d3d12_device_iface type alias.
...
This way we don't have to change all function parameter types
every time we upgrade the interface version.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
c41275478c
vkd3d: Refactor pipeline state creation.
...
We need a more extensible struct to contain the pipeline
descriptions in order to be able to support new rendering
features.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-31 18:28:18 +02:00
Hans-Kristian Arntzen
fce6838870
vkd3d: Fix compilation warning on 32-bit.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 17:27:33 +02:00
Hans-Kristian Arntzen
09885f799c
vkd3d: Implement stricter checking for timeline semaphores.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 12:51:05 +02:00
Hans-Kristian Arntzen
855c59eae5
vkd3d: Implement timeline semaphores.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 12:51:05 +02:00
Hans-Kristian Arntzen
afdbf6edcd
vkd3d: Enable VK_KHR_timeline_semaphore extension.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 12:51:05 +02:00
Philip Rebohle
8344e8224e
vkd3d: Only add feature structs to pNext chain if extension is supported.
...
RenderDoc will sometimes report extensions as unsupported, but still
fill out and accept the respective feature structs. Since we assume
extensions to be supported if the feature is enabled, we sometimes
try to use functionality that RenderDoc disables and crash.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
00d88454ee
vkd3d: Factor out extension enumeration.
...
Besides cleaning up the code, this also allows us to
use information about the available extensions earlier.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
34f9cae1c6
vkd3d: Disable unused BufferDeviceAddress features.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
cf759d4d76
vkd3d: Only set memory device address bit if extension is supported.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
f5dc3fa8c8
vkd3d: Skip redundant descriptor copies.
...
Greatly improves performance in Control.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
78034ecef1
vkd3d: Simplify checks whether a descriptor has a view.
...
SaVes a few CPU cycles on a potentially very hot code path.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
1836815222
vkd3d: Rework descriptor magic.
...
Changes the magic to a three-character string with flags
in the highest byte.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
33a2ace768
vkd3d: Don't copy entire descriptor when destroying view.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
09b7013f59
vkd3d: Don't use push descriptors if we exceed the device limit.
...
This can in theory happen if we have 32 root descriptors and
bindless UAV counters.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:47:47 +02:00
Philip Rebohle
29d1a5e089
vkd3d: Remove unused root descriptor count from root signature.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:47:47 +02:00
Philip Rebohle
643ace438e
vkd3d: Store push descriptor properties in device info struct.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:47:47 +02:00
Philip Rebohle
a7a27e3c05
vkd3d: Fix descriptor count for UAV counter binding.
...
Copy-paste error that causes us to exceed the push descriptor
limit in some situations.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:47:47 +02:00
Philip Rebohle
920d029100
vkd3d: Don't require bindless UAV counters for RESOURCE_BINDING_TIER_3.
...
Nvidia does not support VK_KHR_buffer_device_address at the moment.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-28 10:39:14 +01:00
Hans-Kristian Arntzen
877c3afedd
vkd3d: Fix MSVC build.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-27 15:43:19 +01:00
Philip Rebohle
8843739797
vkd3d: Require bindless UAV and UAV counters for BINDING_TIER_3.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:37:59 +01:00
Philip Rebohle
f8c842f03c
vkd3d: Enable bindless UAV counters if supported.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
e97c5be394
vkd3d: Enable VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT as necessary.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
b5b9f464d7
vkd3d: Enable VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR as necessary.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
e1ad2f0f03
vkd3d: Set SHADER_DEVICE_ADDRESS_BIT for buffers.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
74b1831960
vkd3d: Bind UAV counter address buffer if necessary.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
b64284d40d
vkd3d: Write UAV counter addresses to the address buffer.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
1b39b107b1
vkd3d: Create buffer for UAV counter addresses.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
000983aa73
vkd3d: Declare bindless UAV counter binding.
...
We'll add this to the root descriptor set since moving the binding
to one of the bindless sets would be hard to do; we'd need to track
the binding index of each "bindless" binding for set updates etc.
In order to stay within the limit of 8 sets, we also cannot introduce
a separate set for UAV counters (currently there are 6 bindless sets,
the static sampler set, and the root descriptor set).
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
577efe9040
vkd3d: Optionally enable VK_KHR_buffer_device_address.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 15:04:23 +01:00
Philip Rebohle
facae7690c
vkd3d: Replace descriptor mutex with per-descriptor spinlocks.
...
Greatly improves performance in various games that update or
copy a large number of descriptors per frame due to the high
overhead of pthread_mutex_{un}lock.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-27 13:33:03 +01:00
Philip Rebohle
cdc35483c4
vkd3d: Remove default pixel shader.
...
Unnecessary.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-26 12:07:28 +01:00
Philip Rebohle
682838b193
vkd3d: Enable bindless UAV.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-26 12:05:47 +01:00
Philip Rebohle
b6cfef09cb
vkd3d: Explicitly assign UAV counter set.
...
Otherwise, we pass an incorrect set index when using bindless UAVs.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-26 12:05:47 +01:00
Philip Rebohle
4ee06bc5d6
vkd3d: Ignore UAV counters for unbounded UAV ranges.
...
We cannot support that right now.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-26 12:05:47 +01:00
Hans-Kristian Arntzen
7c479f6dae
vkd3d: Disable index_buffer_strip_cut spam in normal runtime.
...
Demote this warning to TRACE only.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-25 12:54:44 +01:00
Hans-Kristian Arntzen
4939e38c14
vkd3d: Clamp RTV/DSV array sizes to their real array lengths.
...
Avoids overflowing vkCreateFramebuffer later with UINT_MAX layers.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-25 11:27:14 +01:00
Hans-Kristian Arntzen
f7ea9967d0
vkd3d: Use minimum width/height/layer framebuffer.
...
All attachments must be at least as large as the framebuffer, using a
max operator is not compliant with Vulkan.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-25 11:17:01 +01:00