redo does support present
This commit is contained in:
@@ -36,7 +36,7 @@ add_subdirectory(projects/platform) # build gryphn platform
|
||||
|
||||
add_subdirectory(projects/validation_layers/function_loader/)
|
||||
add_subdirectory(projects/validation_layers/allocators/)
|
||||
target_link_libraries(Gryphn INTERFACE GryphnUtils GryphnCore GryphnLoader GryphnPlatform GryphnFunctionValidator GryphnAllocatorChecker GryphnExtensions)
|
||||
target_link_libraries(Gryphn INTERFACE GryphnCore GryphnLoader GryphnPlatform GryphnFunctionValidator GryphnAllocatorChecker GryphnExtensions)
|
||||
|
||||
if (VULKAN_BUILT)
|
||||
target_link_libraries(Gryphn INTERFACE GryphnVulkanImpl)
|
||||
|
@@ -106,38 +106,47 @@ gnPhysicalDevice* getPhysicalDevices(gnInstanceHandle instance, uint32_t* device
|
||||
}
|
||||
|
||||
gnBool deviceCanPresentToSurface(gnPhysicalDevice device, gnWindowSurface surface) {
|
||||
gnBool foundQueue = GN_FALSE;
|
||||
for (uint32_t i = 0; i < device->physicalDevice->neededQueueCount; i++) {
|
||||
VkBool32 supportsPresent = VK_FALSE;
|
||||
vkGetPhysicalDeviceSurfaceSupportKHR(device->physicalDevice->device, device->physicalDevice->neededQueues[i].queueIndex, surface->windowSurface->surface, &supportsPresent);
|
||||
if (supportsPresent) {
|
||||
device->physicalDevice->neededQueues[i].usedForPresent = GN_TRUE;
|
||||
foundQueue = GN_TRUE;
|
||||
break;
|
||||
}
|
||||
surface->windowSurface->presentQueueIndex = i;
|
||||
}
|
||||
|
||||
if (!foundQueue) {
|
||||
uint32_t queueFamilyCount = 0;
|
||||
vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL);
|
||||
|
||||
for (uint32_t i = 0; i < queueFamilyCount; i++) {
|
||||
VkBool32 supportsPresent = VK_FALSE;
|
||||
VkBool32 supportsPresent;
|
||||
vkGetPhysicalDeviceSurfaceSupportKHR(device->physicalDevice->device, i, surface->windowSurface->surface, &supportsPresent);
|
||||
if (supportsPresent) {
|
||||
device->physicalDevice->neededQueues[device->physicalDevice->neededQueueCount] = (vulkanNeededQueue){
|
||||
.queueIndex = i,
|
||||
.createFlags = 0,
|
||||
.usedForPresent = GN_TRUE
|
||||
};
|
||||
foundQueue = GN_TRUE;
|
||||
surface->windowSurface->presentQueueIndex = device->physicalDevice->neededQueueCount;
|
||||
device->physicalDevice->neededQueueCount++;
|
||||
break;
|
||||
}
|
||||
if (supportsPresent) return GN_TRUE;
|
||||
}
|
||||
return GN_FALSE;
|
||||
}
|
||||
|
||||
return foundQueue;
|
||||
}
|
||||
// gnBool foundQueue = GN_FALSE;
|
||||
// for (uint32_t i = 0; i < device->physicalDevice->neededQueueCount; i++) {
|
||||
// VkBool32 supportsPresent = VK_FALSE;
|
||||
// vkGetPhysicalDeviceSurfaceSupportKHR(device->physicalDevice->device, device->physicalDevice->neededQueues[i].queueIndex, surface->windowSurface->surface, &supportsPresent);
|
||||
// if (supportsPresent) {
|
||||
// device->physicalDevice->neededQueues[i].usedForPresent = GN_TRUE;
|
||||
// foundQueue = GN_TRUE;
|
||||
// break;
|
||||
// }
|
||||
// surface->windowSurface->presentQueueIndex = i;
|
||||
// }
|
||||
|
||||
// if (!foundQueue) {
|
||||
// uint32_t queueFamilyCount = 0;
|
||||
// vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL);
|
||||
|
||||
// for (uint32_t i = 0; i < queueFamilyCount; i++) {
|
||||
// VkBool32 supportsPresent = VK_FALSE;
|
||||
// vkGetPhysicalDeviceSurfaceSupportKHR(device->physicalDevice->device, i, surface->windowSurface->surface, &supportsPresent);
|
||||
// if (supportsPresent) {
|
||||
// device->physicalDevice->neededQueues[device->physicalDevice->neededQueueCount] = (vulkanNeededQueue){
|
||||
// .queueIndex = i,
|
||||
// .createFlags = 0,
|
||||
// .usedForPresent = GN_TRUE
|
||||
// };
|
||||
// foundQueue = GN_TRUE;
|
||||
// surface->windowSurface->presentQueueIndex = device->physicalDevice->neededQueueCount;
|
||||
// device->physicalDevice->neededQueueCount++;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// return foundQueue;
|
||||
|
Reference in New Issue
Block a user