mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-06 20:58:37 +01:00
[d3d9] Add queue families to interop GetDeviceCreateInfo
This commit is contained in:
parent
91e5e18141
commit
b0bb217659
3 changed files with 25 additions and 5 deletions
|
@ -5,6 +5,15 @@
|
|||
|
||||
using D3D9VkQueueLockCallback = void(bool);
|
||||
|
||||
/**
|
||||
* \brief Device queue info
|
||||
*/
|
||||
struct D3D9VkQueueFamilies {
|
||||
uint32_t graphics;
|
||||
uint32_t transfer;
|
||||
uint32_t sparse;
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Device import info
|
||||
*/
|
||||
|
@ -55,10 +64,12 @@ ID3D9VkInteropInterface : public IUnknown {
|
|||
*
|
||||
* \param [in] Adapter Adapter ordinal
|
||||
* \param [out] pCreateInfo The Vulkan device create info
|
||||
* \param [out] pQueueFamilies The required queue families
|
||||
*/
|
||||
virtual HRESULT STDMETHODCALLTYPE GetDeviceCreateInfo(
|
||||
UINT Adapter,
|
||||
VkDeviceCreateInfo* pCreateInfo) = 0;
|
||||
VkDeviceCreateInfo* pCreateInfo,
|
||||
D3D9VkQueueFamilies* pQueueFamilies) = 0;
|
||||
|
||||
/**
|
||||
* \brief Create a D3D9 device for an existing Vulkan device
|
||||
|
|
|
@ -53,8 +53,9 @@ namespace dxvk {
|
|||
|
||||
HRESULT STDMETHODCALLTYPE D3D9VkInteropInterface::GetDeviceCreateInfo(
|
||||
UINT Adapter,
|
||||
VkDeviceCreateInfo* pCreateInfo) {
|
||||
if (unlikely(pCreateInfo == nullptr))
|
||||
VkDeviceCreateInfo* pCreateInfo,
|
||||
D3D9VkQueueFamilies* pQueueFamilies) {
|
||||
if (unlikely(pCreateInfo == nullptr && pQueueFamilies == nullptr))
|
||||
return D3DERR_INVALIDCALL;
|
||||
|
||||
auto* adapter = m_interface->GetAdapter(Adapter);
|
||||
|
@ -68,7 +69,14 @@ namespace dxvk {
|
|||
if (!dxvkAdapter->getDeviceCreateInfo(m_interface->GetInstance(), D3D9DeviceEx::GetDeviceFeatures(dxvkAdapter), false, createInfo))
|
||||
return D3DERR_INVALIDCALL;
|
||||
|
||||
*pCreateInfo = createInfo.info;
|
||||
if (pCreateInfo != nullptr)
|
||||
*pCreateInfo = createInfo.info;
|
||||
|
||||
if (pQueueFamilies != nullptr) {
|
||||
pQueueFamilies->graphics = createInfo.queueFamilies.graphics;
|
||||
pQueueFamilies->transfer = createInfo.queueFamilies.transfer;
|
||||
pQueueFamilies->sparse = createInfo.queueFamilies.sparse;
|
||||
}
|
||||
|
||||
return D3D_OK;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,8 @@ namespace dxvk {
|
|||
|
||||
HRESULT STDMETHODCALLTYPE GetDeviceCreateInfo(
|
||||
UINT Adapter,
|
||||
VkDeviceCreateInfo* pCreateInfo);
|
||||
VkDeviceCreateInfo* pCreateInfo,
|
||||
D3D9VkQueueFamilies* pQueueFamilies);
|
||||
|
||||
HRESULT STDMETHODCALLTYPE ImportDevice(
|
||||
UINT Adapter,
|
||||
|
|
Loading…
Add table
Reference in a new issue