concurrent image sharing

This commit is contained in:
Greg Wells
2025-07-15 12:38:58 -04:00
parent f6e2254284
commit 002b0960d9
2 changed files with 12 additions and 6 deletions

View File

@@ -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;

View File

@@ -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;