Commit Graph

1767 Commits

Author SHA1 Message Date
Philip Rebohle 5490aa936b [d3d11] Rework D3D11 feature enablement
Rather than enabling based on requested feature levels, always enable
all supported features that we might use, and report the maximum
feature level based on that.

This fixes an issue in CreateDeviceContextState which may raise the
device feature level, and another issue wherein the feature level
override is ignored if tiled resources are not supported.
2022-09-04 18:28:27 +02:00
Philip Rebohle c4516c5b04 [dxvk] Improve behaviour when variableMultisampleRate is not supported 2022-09-04 18:28:27 +02:00
Philip Rebohle 8d9d9912ff [dxvk] Remove extension info from DXVK device 2022-09-04 18:28:27 +02:00
Philip Rebohle 51e0a56243 [dxvk] Use new pseudo-features where applicable 2022-09-04 18:28:27 +02:00
Philip Rebohle 019ebeeaf7 [dxvk] Introduce pseudo-features for extensions with no feature struct
Makes it easier to keep track of supported extensions.
2022-09-04 18:28:27 +02:00
Philip Rebohle 1b66b8c9f3 [dxvk] Go back to fence-based command list synchronization
Timeline semaphores are too unreliable on 32-bit Proton builds.
2022-09-04 18:23:11 +02:00
Philip Rebohle fa743f162b [dxvk] Don't create queues with QUEUE_FAMILY_IGNORED
We accidentally broke drivers which don't support sparse.

Closes #2891.
Closes #2890.

Reported-by: mykhailo.skorokhodov@globallogic.com
2022-09-02 11:07:09 +02:00
Philip Rebohle 735349bf1b [dxvk] Fix barrier typo 2022-09-01 03:35:58 +02:00
Philip Rebohle 097d3edd05 [dxvk] Create debug messenger if DXVK_DEBUG=validation is set 2022-09-01 00:25:10 +02:00
Philip Rebohle 2f39ae792a [dxvk] Change DXVK_PERF_EVENTS environment variable to DXVK_DEBUG 2022-09-01 00:25:10 +02:00
Philip Rebohle 321338af00 [dxvk] Remove unused m_device member from DxvkBuffer 2022-09-01 00:07:23 +02:00
Philip Rebohle 7b4925dc45 [dxvk] Fix potential sparse allocator lifetime issues 2022-08-31 23:48:46 +02:00
Philip Rebohle c3c6dbf669 [dxvk] Fix potential buffer lifetime issues 2022-08-31 23:48:34 +02:00
Philip Rebohle 354b88d178 [dxvk] Add shader method to retrieve raw code 2022-08-31 16:25:44 +02:00
Joshua Ashton 86efa46fcf [dxvk] Throw DxvkError if we failed to load vulkan library 2022-08-27 19:32:03 +02:00
Joshua Ashton 482a7e433b [vulkan] Make LibraryLoader dynamically load vulkan-1
This makes LibraryLoader actually load the library and moves ownership
of GetInstanceProcAddr into it, which means we pass through the
loaders into their parents to grab stuff.
2022-08-27 19:32:03 +02:00
Philip Rebohle 2329c71b6f [dxvk] Implement sampler reduction mode 2022-08-26 05:53:03 +02:00
Philip Rebohle 43b19f773c [dxvk] Introduce initSparseImage 2022-08-26 05:53:03 +02:00
Philip Rebohle fc0d952edb [dxvk] Introduce copySparsePages{To,From}Buffer 2022-08-26 05:53:03 +02:00
Philip Rebohle d5348a0cf0 [dxvk] Introduce updatePageTable 2022-08-26 05:53:03 +02:00
Philip Rebohle 12d2f8a9d4 [dxvk] Expose sparse binding operations as part of the command list 2022-08-26 05:53:03 +02:00
Philip Rebohle 2615af7664 [dxvk] Submit sparse binding operations alongside command buffers 2022-08-26 05:53:03 +02:00
Philip Rebohle d3b6502a17 [dxvk] Introduce DxvkSparseBindSubmission 2022-08-26 05:53:03 +02:00
Philip Rebohle 3057f6a51b [dxvk] Add structures for sparse binding operations 2022-08-26 05:53:03 +02:00
Philip Rebohle f9db4921e0 [dxvk] Implement sparse memory allocator 2022-08-26 05:53:03 +02:00
Philip Rebohle 6f216f9df4 [dxvk] Do not discard sparse buffers
This would only blow up.
2022-08-26 05:53:03 +02:00
Philip Rebohle dd54de4d97 [dxvk] Introduce DxvkPagedResource 2022-08-26 05:53:03 +02:00
Philip Rebohle 2d124b811b [dxvk] Implement sparse image creation 2022-08-26 05:53:03 +02:00
Philip Rebohle f7c255de2a [dxvk] Implement sparse buffer creation 2022-08-26 05:53:03 +02:00
Philip Rebohle bc3affc264 [dxvk] Add functionality to query sparse metadata 2022-08-26 05:53:03 +02:00
Philip Rebohle e923cc5b69 [dxvk] Change emitGraphicsBarrier to specify a dependency 2022-08-26 05:53:03 +02:00
Philip Rebohle 388288114a [dxvk] Find a sparse binding queue 2022-08-26 05:53:03 +02:00
Philip Rebohle 71c9c4a5cc [dxvk] Log sparse features 2022-08-26 05:53:03 +02:00
Philip Rebohle 6e6d64b83e [dxvk] Remove redundant error message 2022-08-26 05:53:03 +02:00
Philip Rebohle 3ee808afd6 [dxvk] Make memory object of an image publicly accessible 2022-08-26 05:53:03 +02:00
Philip Rebohle a2a21cb4d3 [dxvk] Clean up internal memory allocation API 2022-08-25 18:23:02 +02:00
Philip Rebohle 5117210c93 [dxvk] Fix fb resolve barriers
No idea how that ended up broken *this* badly.
2022-08-25 02:25:23 +02:00
Philip Rebohle 17959640c3 [dxvk] Work around vkWaitSemaphore incorrectly returning with VK_TIMEOUT 2022-08-22 20:30:16 +02:00
Philip Rebohle 07a1045ffb [dxvk] Add context methods for submission splitting 2022-08-22 15:44:00 +02:00
Philip Rebohle 6f2ff2562d [dxvk] Support splitting command lists into multipe submissions 2022-08-22 15:43:23 +02:00
Philip Rebohle e378be826e [dxvk] Use DxvkCommandPool 2022-08-22 14:40:41 +02:00
Philip Rebohle c3a721f562 [dxvk] Introduce DxvkCommandPool 2022-08-22 14:14:25 +02:00
Philip Rebohle def93fd18b [dxvk] Introduce DxvkCommandSubmissionInfo 2022-08-22 14:14:25 +02:00
Philip Rebohle d367fac64e [dxvk] Rework queue submission helper
We want this to be less verbose and smarter about when to perform
submissions for when we introduce the ability to split a command
list into multiple submissions.
2022-08-22 14:14:25 +02:00
Philip Rebohle f88239719c [dxvk] Explicitly mark execution command buffer as used
We can omit the execution command buffer in some circumstances,
and for the sparse resource changes we need to track this in
order to be able to merge consecutive sparse binding calls.

We only need to do this on action commands with observable side effects
as long as the backend still properly resets those command buffers.
All draw commands are implcitly covered by cmdBeginRendering.
2022-08-22 12:36:59 +02:00
Philip Rebohle dd0d611d4d [dxvk] Reintroduce binary semaphore for transfer <-> graphics sync
The global timeline semaphore does not work here since we could be
signaling it from two different queues at the same time, or out of
order.
2022-08-22 05:52:28 +02:00
Philip Rebohle 3c38bdbd0e [dxvk] Initialize DxvkSubmitInfo properly
We don't use the semaphore value here, but it shouldn't
contain undefined data.
2022-08-22 02:00:10 +02:00
Philip Rebohle f385b4bb47 [dxvk] Use global timeline semaphore for command list synchronization
Replaces the old fence mechanism and also makes it easier to
synchronize across queues.
2022-08-22 00:40:07 +02:00
Philip Rebohle cff9056915 [dxvk] Always enable timeline semaphore feature 2022-08-22 00:40:07 +02:00
Philip Rebohle 11ef1084d0 [dxvk] Rename semaphore stuff in command list code 2022-08-22 00:08:42 +02:00