fixing issue with physical device pickup
This commit is contained in:
10
kvf.h
10
kvf.h
@@ -1173,7 +1173,7 @@ VkPhysicalDevice kvfPickGoodDefaultPhysicalDevice(VkInstance instance, VkSurface
|
|||||||
|
|
||||||
int32_t __kvfScorePhysicalDevice(VkPhysicalDevice device, VkSurfaceKHR surface, const char** device_extensions, uint32_t device_extensions_count)
|
int32_t __kvfScorePhysicalDevice(VkPhysicalDevice device, VkSurfaceKHR surface, const char** device_extensions, uint32_t device_extensions_count)
|
||||||
{
|
{
|
||||||
/* Check _extensions Support */
|
/* Check extensions support */
|
||||||
uint32_t extension_count;
|
uint32_t extension_count;
|
||||||
vkEnumerateDeviceExtensionProperties(device, NULL, &extension_count, NULL);
|
vkEnumerateDeviceExtensionProperties(device, NULL, &extension_count, NULL);
|
||||||
VkExtensionProperties* props = (VkExtensionProperties*)KVF_MALLOC(sizeof(VkExtensionProperties) * extension_count + 1);
|
VkExtensionProperties* props = (VkExtensionProperties*)KVF_MALLOC(sizeof(VkExtensionProperties) * extension_count + 1);
|
||||||
@@ -1203,14 +1203,17 @@ int32_t __kvfScorePhysicalDevice(VkPhysicalDevice device, VkSurfaceKHR surface,
|
|||||||
|
|
||||||
/* Check Queue Families Support */
|
/* Check Queue Families Support */
|
||||||
__KvfQueueFamilies queues = __kvfFindQueueFamilies(device, surface);
|
__KvfQueueFamilies queues = __kvfFindQueueFamilies(device, surface);
|
||||||
if(queues.graphics == -1 || queues.present == -1)
|
if(queues.graphics == -1 || (surface != VK_NULL_HANDLE && queues.present == -1))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Check Surface Formats Counts */
|
if(surface != VK_NULL_HANDLE)
|
||||||
|
{
|
||||||
|
/* Check surface formats counts */
|
||||||
uint32_t format_count;
|
uint32_t format_count;
|
||||||
vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &format_count, NULL);
|
vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &format_count, NULL);
|
||||||
if(format_count == 0)
|
if(format_count == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
VkPhysicalDeviceProperties device_props;
|
VkPhysicalDeviceProperties device_props;
|
||||||
vkGetPhysicalDeviceProperties(device, &device_props);
|
vkGetPhysicalDeviceProperties(device, &device_props);
|
||||||
@@ -1239,7 +1242,6 @@ VkPhysicalDevice kvfPickGoodPhysicalDevice(VkInstance instance, VkSurfaceKHR sur
|
|||||||
int32_t best_device_score = -1;
|
int32_t best_device_score = -1;
|
||||||
|
|
||||||
KVF_ASSERT(instance != VK_NULL_HANDLE);
|
KVF_ASSERT(instance != VK_NULL_HANDLE);
|
||||||
KVF_ASSERT(surface != VK_NULL_HANDLE);
|
|
||||||
|
|
||||||
vkEnumeratePhysicalDevices(instance, &device_count, NULL);
|
vkEnumeratePhysicalDevices(instance, &device_count, NULL);
|
||||||
devices = (VkPhysicalDevice*)KVF_MALLOC(sizeof(VkPhysicalDevice) * device_count + 1);
|
devices = (VkPhysicalDevice*)KVF_MALLOC(sizeof(VkPhysicalDevice) * device_count + 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user