vkd3d: Introduce VKD3D_QUEUE_FAMILY_INTERNAL_COMPUTE.

This needs a rework when we re-enable multi-queue support.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
Philip Rebohle 2021-02-15 21:12:03 +01:00 committed by Hans-Kristian Arntzen
parent da06323b87
commit 812c82f8ac
2 changed files with 13 additions and 2 deletions

View File

@ -1851,12 +1851,21 @@ static HRESULT vkd3d_select_queues(const struct vkd3d_instance *vkd3d_instance,
* Just disabling async compute works around the issue as well. */
#define VKD3D_FORCE_SINGLE_QUEUE 1
if (info->family_index[VKD3D_QUEUE_FAMILY_COMPUTE] == VK_QUEUE_FAMILY_IGNORED || VKD3D_FORCE_SINGLE_QUEUE)
if (info->family_index[VKD3D_QUEUE_FAMILY_COMPUTE] == VK_QUEUE_FAMILY_IGNORED)
info->family_index[VKD3D_QUEUE_FAMILY_COMPUTE] = info->family_index[VKD3D_QUEUE_FAMILY_GRAPHICS];
if (info->family_index[VKD3D_QUEUE_FAMILY_TRANSFER] == VK_QUEUE_FAMILY_IGNORED || VKD3D_FORCE_SINGLE_QUEUE)
if (info->family_index[VKD3D_QUEUE_FAMILY_TRANSFER] == VK_QUEUE_FAMILY_IGNORED)
info->family_index[VKD3D_QUEUE_FAMILY_TRANSFER] = info->family_index[VKD3D_QUEUE_FAMILY_COMPUTE];
/* TODO make this a low-priority compute queue that does not conflict with the actual compute queue */
info->family_index[VKD3D_QUEUE_FAMILY_INTERNAL_COMPUTE] = info->family_index[VKD3D_QUEUE_FAMILY_COMPUTE];
if (VKD3D_FORCE_SINGLE_QUEUE)
{
info->family_index[VKD3D_QUEUE_FAMILY_COMPUTE] = info->family_index[VKD3D_QUEUE_FAMILY_GRAPHICS];
info->family_index[VKD3D_QUEUE_FAMILY_TRANSFER] = info->family_index[VKD3D_QUEUE_FAMILY_GRAPHICS];
}
for (i = 0; i < VKD3D_QUEUE_FAMILY_COUNT; ++i)
{
if (info->family_index[i] == VK_QUEUE_FAMILY_IGNORED)

View File

@ -2311,6 +2311,8 @@ enum vkd3d_queue_family
VKD3D_QUEUE_FAMILY_COMPUTE,
VKD3D_QUEUE_FAMILY_TRANSFER,
VKD3D_QUEUE_FAMILY_SPARSE_BINDING,
/* Keep internal queues at the end */
VKD3D_QUEUE_FAMILY_INTERNAL_COMPUTE,
VKD3D_QUEUE_FAMILY_COUNT
};