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/function_loader/)
|
||||||
add_subdirectory(projects/validation_layers/allocators/)
|
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)
|
if (VULKAN_BUILT)
|
||||||
target_link_libraries(Gryphn INTERFACE GryphnVulkanImpl)
|
target_link_libraries(Gryphn INTERFACE GryphnVulkanImpl)
|
||||||
|
@@ -106,38 +106,47 @@ gnPhysicalDevice* getPhysicalDevices(gnInstanceHandle instance, uint32_t* device
|
|||||||
}
|
}
|
||||||
|
|
||||||
gnBool deviceCanPresentToSurface(gnPhysicalDevice device, gnWindowSurface surface) {
|
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;
|
uint32_t queueFamilyCount = 0;
|
||||||
vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL);
|
vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL);
|
||||||
|
|
||||||
for (uint32_t i = 0; i < queueFamilyCount; i++) {
|
for (uint32_t i = 0; i < queueFamilyCount; i++) {
|
||||||
VkBool32 supportsPresent = VK_FALSE;
|
VkBool32 supportsPresent;
|
||||||
vkGetPhysicalDeviceSurfaceSupportKHR(device->physicalDevice->device, i, surface->windowSurface->surface, &supportsPresent);
|
vkGetPhysicalDeviceSurfaceSupportKHR(device->physicalDevice->device, i, surface->windowSurface->surface, &supportsPresent);
|
||||||
if (supportsPresent) {
|
if (supportsPresent) return GN_TRUE;
|
||||||
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 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