vulkaninfo: Make queue families report present support
authorPetr Kraus <petr_kraus@email.cz>
Tue, 22 Jan 2019 02:17:48 +0000 (03:17 +0100)
committerjeremyk-lunarg <jeremyk@lunarg.com>
Tue, 22 Jan 2019 19:46:47 +0000 (12:46 -0700)
vulkaninfo/vulkaninfo.c

index 03d2bc5..e3011a9 100644 (file)
@@ -1842,7 +1842,7 @@ static void AppDumpSurfaceExtension(struct AppInstance *inst, struct AppGpu *gpu
         *format_count += AppDumpSurfaceFormats(inst, &gpus[i], out);
         *present_mode_count += AppDumpSurfacePresentModes(inst, &gpus[i], out);
         AppDumpSurfaceCapabilities(inst, &gpus[i], out);
-        AppDestroySurface(inst);
+
         if (html_output) {
             fprintf(out, "\t\t\t\t</details>\n");
         } else if (human_readable_output) {
@@ -3296,6 +3296,11 @@ static void AppGpuDumpQueueProps(const struct AppGpu *gpu, uint32_t id, FILE *ou
         props = *props_const;
     }
 
+    VkBool32 supports_present = VK_FALSE;
+    if (gpu->inst->surface) {
+        VkResult err = vkGetPhysicalDeviceSurfaceSupportKHR(gpu->obj, id, gpu->inst->surface, &supports_present);
+    }
+
     if (html_output) {
         fprintf(out, "\t\t\t\t\t<details><summary>VkQueueFamilyProperties[<div class='val'>%d</div>]</summary>\n", id);
         fprintf(out, "\t\t\t\t\t\t<details><summary>queueFlags = ");
@@ -3329,6 +3334,8 @@ static void AppGpuDumpQueueProps(const struct AppGpu *gpu, uint32_t id, FILE *ou
         fprintf(out, "\t\t\t\t\t\t<details><summary>timestampValidBits = <div class='val'>%u</div></summary></details>\n", props.timestampValidBits);
         fprintf(out, "\t\t\t\t\t\t<details><summary>minImageTransferGranularity = (<div class='val'>%d</div>, <div class='val'>%d</div>, <div class='val'>%d</div>)</summary></details>\n",
                 props.minImageTransferGranularity.width, props.minImageTransferGranularity.height, props.minImageTransferGranularity.depth);
+        fprintf(out, "\t\t\t\t\t\t<details><summary>present support    = <div class='val'>%s</div></summary></details>\n",
+                supports_present ? "true" : "false");
         fprintf(out, "\t\t\t\t\t</details>\n");
     } else if (human_readable_output) {
         printf("\n");
@@ -3336,6 +3343,7 @@ static void AppGpuDumpQueueProps(const struct AppGpu *gpu, uint32_t id, FILE *ou
         printf("\ttimestampValidBits = %u\n", props.timestampValidBits);
         printf("\tminImageTransferGranularity = (%d, %d, %d)\n", props.minImageTransferGranularity.width,
                props.minImageTransferGranularity.height, props.minImageTransferGranularity.depth);
+        printf("\tpresent support    = %s\n", supports_present ? "true" : "false");
     }
     if (json_output) {
         printf("\t\t{\n");
@@ -3346,7 +3354,8 @@ static void AppGpuDumpQueueProps(const struct AppGpu *gpu, uint32_t id, FILE *ou
         printf("\t\t\t},\n");
         printf("\t\t\t\"queueCount\": %u,\n", props.queueCount);
         printf("\t\t\t\"queueFlags\": %u,\n", props.queueFlags);
-        printf("\t\t\t\"timestampValidBits\": %u\n", props.timestampValidBits);
+        printf("\t\t\t\"timestampValidBits\": %u,\n", props.timestampValidBits);
+        printf("\t\t\t\"present_support\": %s\n", supports_present ? "\"true\"" : "\"false\"");
         printf("\t\t}");
     }
 
@@ -3788,7 +3797,7 @@ void print_usage(char *argv0) {
 int main(int argc, char **argv) {
     uint32_t gpu_count;
     VkResult err;
-    struct AppInstance inst;
+    struct AppInstance inst = {0};
     FILE *out = stdout;
 
 #ifdef _WIN32
@@ -4142,6 +4151,7 @@ int main(int argc, char **argv) {
     free(gpus);
     free(objs);
 
+    AppDestroySurface(&inst);
     AppDestroyInstance(&inst);
 
     if (html_output) {