| 1427 | } |
| 1428 | |
| 1429 | VKAPI_ATTR void VKAPI_CALL GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue) { |
| 1430 | DispatchMapStruct *dispMap = get_dispatch_info(device); |
| 1431 | assert(dispMap); |
| 1432 | VkuDeviceDispatchTable *pDisp = dispMap->device_dispatch_table; |
| 1433 | pDisp->GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue); |
| 1434 | |
| 1435 | // Save the device queue in a map if we are taking screenshots. |
| 1436 | std::lock_guard<std::mutex> lg(globalLock); |
| 1437 | |
| 1438 | // Add this queue to deviceMap[device].queues, and queueFamilyIndex to deviceMap[device].queueIndexMap |
| 1439 | if (deviceMap.find(device) != deviceMap.end()) { |
| 1440 | deviceMap[device]->queues.emplace(*pQueue); |
| 1441 | |
| 1442 | if (deviceMap[device]->queueIndexMap.find(*pQueue) != deviceMap[device]->queueIndexMap.end()) |
| 1443 | deviceMap[device]->queueIndexMap.erase(*pQueue); |
| 1444 | deviceMap[device]->queueIndexMap.emplace(*pQueue, queueFamilyIndex); |
| 1445 | } |
| 1446 | |
| 1447 | // queues are dispatchable objects. |
| 1448 | // Create dispatchMap entry with this queue as its key. |
| 1449 | // Copy the device dispatch table to the new dispatch table. |
| 1450 | VkDevice que = static_cast<VkDevice>(static_cast<void *>(*pQueue)); |
| 1451 | dispatchMap[que] = dispMap; |
| 1452 | } |
| 1453 | |
| 1454 | VKAPI_ATTR void VKAPI_CALL GetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2 *pQueueInfo, VkQueue *pQueue) { |
| 1455 | if (pQueueInfo) GetDeviceQueue(device, pQueueInfo->queueFamilyIndex, pQueueInfo->queueIndex, pQueue); |
no test coverage detected