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