concurrent image sharing
This commit is contained in:
@@ -30,12 +30,18 @@ gnReturnCode createPresentationQueue(gnPresentationQueueHandle presentationQueue
|
|||||||
createInfo.imageArrayLayers = 1;
|
createInfo.imageArrayLayers = 1;
|
||||||
createInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
createInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
||||||
|
|
||||||
if (presentationInfo.imageSharingMode == GN_SHARING_MODE_EXCLUSIVE)
|
if (presentationInfo.surface->windowSurface->presentQueueIndex != device->outputDevice->graphicsQueueIndex) {
|
||||||
createInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
|
||||||
else
|
|
||||||
createInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT;
|
createInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT;
|
||||||
|
createInfo.queueFamilyIndexCount = 2;
|
||||||
|
createInfo.pQueueFamilyIndices = (uint32_t[]){
|
||||||
|
device->outputDevice->queues[presentationInfo.surface->windowSurface->presentQueueIndex].queueInfo.queueIndex,
|
||||||
|
device->outputDevice->queues[device->outputDevice->graphicsQueueIndex].queueInfo.queueIndex
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
createInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||||
createInfo.queueFamilyIndexCount = 1;
|
createInfo.queueFamilyIndexCount = 1;
|
||||||
createInfo.pQueueFamilyIndices = &device->outputDevice->queues[presentationInfo.surface->windowSurface->presentQueueIndex].queueInfo.queueIndex;
|
createInfo.pQueueFamilyIndices = &device->outputDevice->queues[presentationInfo.surface->windowSurface->presentQueueIndex].queueInfo.queueIndex;
|
||||||
|
}
|
||||||
createInfo.preTransform = details.capabilities.currentTransform;
|
createInfo.preTransform = details.capabilities.currentTransform;
|
||||||
createInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
|
createInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
|
||||||
createInfo.presentMode = presentMode;
|
createInfo.presentMode = presentMode;
|
||||||
|
@@ -9,7 +9,7 @@ typedef struct gnPresentationQueueInfo {
|
|||||||
gnUInt2 imageSize;
|
gnUInt2 imageSize;
|
||||||
gnWindowSurfaceHandle surface;
|
gnWindowSurfaceHandle surface;
|
||||||
gnSurfaceFormat format;
|
gnSurfaceFormat format;
|
||||||
gnImageSharingMode imageSharingMode;
|
// gnImageSharingMode imageSharingMode;
|
||||||
// uint32_t queueFamilyCount;
|
// uint32_t queueFamilyCount;
|
||||||
// uint32_t* queueFamilies;
|
// uint32_t* queueFamilies;
|
||||||
} gnPresentationQueueInfo;
|
} gnPresentationQueueInfo;
|
||||||
|
Reference in New Issue
Block a user