diff --git a/inc/hgl/graph/VKDeviceAttribute.h b/inc/hgl/graph/VKDeviceAttribute.h index 275fab31..788f12aa 100644 --- a/inc/hgl/graph/VKDeviceAttribute.h +++ b/inc/hgl/graph/VKDeviceAttribute.h @@ -23,6 +23,7 @@ struct GPUDeviceAttribute uint32_t graphics_family =ERROR_FAMILY_INDEX; uint32_t present_family =ERROR_FAMILY_INDEX; + uint32_t compute_family =ERROR_FAMILY_INDEX; VkQueue graphics_queue =VK_NULL_HANDLE; VkQueue present_queue =VK_NULL_HANDLE; diff --git a/src/SceneGraph/Vulkan/VKDeviceAttribute.cpp b/src/SceneGraph/Vulkan/VKDeviceAttribute.cpp index 45a27aeb..70f95eff 100644 --- a/src/SceneGraph/Vulkan/VKDeviceAttribute.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceAttribute.cpp @@ -158,6 +158,12 @@ void GPUDeviceAttribute::GetQueueFamily() VkBool32 *sp = supports_present.GetData(); for (uint32_t i = 0; i < family_count; i++) { + if(fp->queueFlags & VK_QUEUE_COMPUTE_BIT) + { + if(compute_family==ERROR_FAMILY_INDEX) + compute_family=i; + } + if (fp->queueFlags & VK_QUEUE_GRAPHICS_BIT) { if (graphics_family == ERROR_FAMILY_INDEX)