aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-09-07 15:16:39 -0600
committerTobin Ehlis <tobin@lunarg.com>2015-09-09 16:32:38 -0600
commit8a724d8c8f0fc69457d10cd32dca7f0478c66ce9 (patch)
tree34b4505a310def2bb100d757b67f60f6c7f2f445
parent19e3be073a1bc9142edc19b771ded51e8aa29c90 (diff)
downloadusermoji-8a724d8c8f0fc69457d10cd32dca7f0478c66ce9.tar.xz
demos: Fix demos to correctly query physicalDevice count
-rw-r--r--demos/cube.c13
-rw-r--r--demos/tri.c13
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;