diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2015-09-07 15:16:39 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobin@lunarg.com> | 2015-09-09 16:32:38 -0600 |
| commit | 8a724d8c8f0fc69457d10cd32dca7f0478c66ce9 (patch) | |
| tree | 34b4505a310def2bb100d757b67f60f6c7f2f445 | |
| parent | 19e3be073a1bc9142edc19b771ded51e8aa29c90 (diff) | |
| download | usermoji-8a724d8c8f0fc69457d10cd32dca7f0478c66ce9.tar.xz | |
demos: Fix demos to correctly query physicalDevice count
| -rw-r--r-- | demos/cube.c | 13 | ||||
| -rw-r--r-- | demos/tri.c | 13 |
2 files changed, 20 insertions, 6 deletions
diff --git a/demos/cube.c b/demos/cube.c index 10cd1239..272ef0ae 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -2207,6 +2207,7 @@ static void demo_init_vk(struct demo *demo) VkResult err; char *extension_names[64]; VkExtensionProperties *instance_extensions; + VkPhysicalDevice *physical_devices; VkLayerProperties *instance_layers; VkLayerProperties *device_layers; uint32_t instance_extension_count = 0; @@ -2328,9 +2329,15 @@ static void demo_init_vk(struct demo *demo) free(instance_layers); free(instance_extensions); - gpu_count = 1; - err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, &demo->gpu); - assert(!err && gpu_count == 1); + /* Make initial call to query gpu_count, then second call for gpu info*/ + err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, NULL); + assert(!err && gpu_count > 0); + physical_devices = malloc(sizeof(VkPhysicalDevice) * gpu_count); + err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, physical_devices); + assert(!err); + /* For cube demo we just grab the first physical device */ + demo->gpu = physical_devices[0]; + free(physical_devices); /* Look for validation layers */ validation_found = 0; diff --git a/demos/tri.c b/demos/tri.c index 95066338..0f3bcc38 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -1727,6 +1727,7 @@ static void demo_init_vk(struct demo *demo) char *extension_names[64]; char *layer_names[64]; VkExtensionProperties *instance_extensions; + VkPhysicalDevice *physical_devices; VkLayerProperties *instance_layers; VkLayerProperties *device_layers; uint32_t instance_extension_count = 0; @@ -1842,9 +1843,15 @@ static void demo_init_vk(struct demo *demo) free(instance_layers); free(instance_extensions); - gpu_count = 1; - err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, &demo->gpu); - assert(!err && gpu_count == 1); + /* Make initial call to query gpu_count, then second call for gpu info*/ + err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, NULL); + assert(!err && gpu_count > 0); + physical_devices = malloc(sizeof(VkPhysicalDevice) * gpu_count); + err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, physical_devices); + assert(!err); + /* For tri demo we just grab the first physical device */ + demo->gpu = physical_devices[0]; + free(physical_devices); /* Look for validation layers */ validation_found = 0; |
