-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[d3d9] Add device import interop API #4506
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
2368357 to
8f109e3
Compare
|
@AlpyneDreams Not sure if you saw it, but there's a warning that's probably worth fixing: |
|
@WinterSnowfall Thanks, fixed! |
aea7cbc to
2771c99
Compare
|
Rebased. |
2771c99 to
bf71ae8
Compare
|
Rebased to 2.5.2 |
|
Apologies for the silence, will look at this again after the next release, we had some regressions to take care of. |
|
Fixed an issue where |
fe79853 to
5159a65
Compare
|
Rebased to 2.5.3 and squashed some fixes. |
|
Been a while, but I am going to start working on improving device / instance creation now, at least to the point where required features / extensions etc can be queried from DXVK and then be fed back into it. |
5159a65 to
20abd9a
Compare
Okay, I've updated the PR to use those new query functions, and I also removed a lot of stupid cruft I left in the initial version of the PR. I'm going to switch this to draft until I have time to do more testing, though. It seems like |
8d9dbed to
a30d7b6
Compare
|
I have updated the example code to show how the current device import API is used to add extra queues in a production environment |
[d3d9] Interop: Improve clarity and error checking of caps queries
a30d7b6 to
d2a0fce
Compare
|
Rebased to 2.7 |
These queues may optionally be separate from the graphics queue.
|
Added commits to support separate transfer and sparse queues. A separate transfer queue may be preferable for concurrency. A separate sparse queue may be necessary for compatibility with devices that do not support sparse binding on the main graphics queue. This makes minor tweaks to the backend, should not affect existing functionality. |
|
I have tested the latest additions in production and can confirm it works, it creates a separate transfer queue and uses the main queue for sparse. I've updated the example with new changes required to do this. |
As requested by @doitsujin in #4497, I have added an API to import existing Vulkan devices. Here is an example of how it could be used to add an async compute queue when creating the device. First, all device creation info is queried with
GetDeviceCreateInfo, then the device is created in userspace and passed toImportDevice. I have tested this extensively in a project under active development and can confirm that it works. Feedback or nits are welcomed!I have personally tested it on AMD and NVIDIA on Linux and NVIDIA on Windows (both MSVC and Mingw).
EDIT: The new API in of July 2025 has three separate calls to get device info:
QueryDeviceExtensions,QueryDeviceQueues, andQueryDeviceFeatures. These correspond to calls inDxvkDeviceCapabilities. The only changes to the backend are to support importing separate transfer and sparse queues. A separate transfer queue may be preferable for concurrency. A separate sparse queue may be necessary for compatibility with devices that do not support sparse binding on the main graphics queue.