From bc3f579d5bb7e0b6ad715d7e194a0bf70e164654 Mon Sep 17 00:00:00 2001 From: Jeremy Kniager Date: Thu, 3 Jan 2019 13:12:40 -0700 Subject: vulkaninfo: Add VK_EXT_transform_feedback Added output for the following structures from extension VK_EXT_transform_feedback: VkPhysicalDeviceTransformFeedbackFeaturesEXT VkPhysicalDeviceTransformFeedbackPropertiesEXT Change-Id: I60c907a26071ddc315d588b9cdc395f4d3bc446d --- vulkaninfo/vulkaninfo.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/vulkaninfo/vulkaninfo.c b/vulkaninfo/vulkaninfo.c index eb631744..a02991ee 100644 --- a/vulkaninfo/vulkaninfo.c +++ b/vulkaninfo/vulkaninfo.c @@ -993,7 +993,9 @@ static void AppGpuInit(struct AppGpu *gpu, struct AppInstance *inst, uint32_t id {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR, .mem_size = sizeof(VkPhysicalDeviceFloatControlsPropertiesKHR)}, {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT, - .mem_size = sizeof(VkPhysicalDevicePCIBusInfoPropertiesEXT)}}; + .mem_size = sizeof(VkPhysicalDevicePCIBusInfoPropertiesEXT)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, + .mem_size = sizeof(VkPhysicalDeviceTransformFeedbackPropertiesEXT)}}; uint32_t chain_info_len = ARRAY_SIZE(chain_info); @@ -1095,7 +1097,9 @@ static void AppGpuInit(struct AppGpu *gpu, struct AppInstance *inst, uint32_t id {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, .mem_size = sizeof(VkPhysicalDeviceFloat16Int8FeaturesKHR)}, {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, - .mem_size = sizeof(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)}}; + .mem_size = sizeof(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, + .mem_size = sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT)}}; uint32_t chain_info_len = ARRAY_SIZE(chain_info); @@ -2337,6 +2341,19 @@ static void AppGpuDumpFeatures(const struct AppGpu *gpu, FILE *out) { printf("\tshaderBufferInt64Atomics = %" PRIuLEAST32 "\n", shader_atomic_int64_features->shaderBufferInt64Atomics); printf("\tshaderSharedInt64Atomics = %" PRIuLEAST32 "\n", shader_atomic_int64_features->shaderSharedInt64Atomics); } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT && CheckPhysicalDeviceExtensionIncluded(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, gpu->device_extensions, gpu->device_extension_count)) { + VkPhysicalDeviceTransformFeedbackFeaturesEXT *transform_feedback_features = (VkPhysicalDeviceTransformFeedbackFeaturesEXT*)structure; + if (html_output) { + fprintf(out, "\n\t\t\t\t\t
VkPhysicalDeviceTransformFeedbackFeatures\n"); + fprintf(out, "\t\t\t\t\t\t
transformFeedback =
%" PRIuLEAST32 "
\n", transform_feedback_features->transformFeedback); + fprintf(out, "\t\t\t\t\t\t
geometryStreams =
%" PRIuLEAST32 "
\n", transform_feedback_features->geometryStreams); + } + else if (human_readable_output) { + printf("\nVkPhysicalDeviceTransformFeedbackFeatures:\n"); + printf("==========================================\n"); + printf("\ttransformFeedback = %" PRIuLEAST32 "\n", transform_feedback_features->transformFeedback); + printf("\tgeometryStreams = %" PRIuLEAST32 "\n", transform_feedback_features->geometryStreams); + } } place = structure->pNext; } @@ -3094,6 +3111,34 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { printf("\tpciDevice = %" PRIuLEAST32 "\n", pci_bus_properties->pciDevice); printf("\tpciFunction = %" PRIuLEAST32 "\n", pci_bus_properties->pciFunction); } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT && CheckPhysicalDeviceExtensionIncluded(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, gpu->device_extensions, gpu->device_extension_count)) { + VkPhysicalDeviceTransformFeedbackPropertiesEXT *transform_feedback_properties = (VkPhysicalDeviceTransformFeedbackPropertiesEXT*)structure; + if (html_output) { + fprintf(out, "\n\t\t\t\t\t
VkPhysicalDeviceTransformFeedbackProperties\n"); + fprintf(out, "\t\t\t\t\t\t
maxTransformFeedbackStreams =
%" PRIuLEAST32 "
\n", transform_feedback_properties->maxTransformFeedbackStreams); + fprintf(out, "\t\t\t\t\t\t
maxTransformFeedbackBuffers =
%" PRIuLEAST32 "
\n", transform_feedback_properties->maxTransformFeedbackBuffers); + fprintf(out, "\t\t\t\t\t\t
maxTransformFeedbackBufferSize =
%" PRIuLEAST64 "
\n", transform_feedback_properties->maxTransformFeedbackBufferSize); + fprintf(out, "\t\t\t\t\t\t
maxTransformFeedbackStreamDataSize =
%" PRIuLEAST32 "
\n", transform_feedback_properties->maxTransformFeedbackStreamDataSize); + fprintf(out, "\t\t\t\t\t\t
maxTransformFeedbackBufferDataSize =
%" PRIuLEAST32 "
\n", transform_feedback_properties->maxTransformFeedbackBufferDataSize); + fprintf(out, "\t\t\t\t\t\t
maxTransformFeedbackBufferDataStride =
%" PRIuLEAST32 "
\n", transform_feedback_properties->maxTransformFeedbackBufferDataStride); + fprintf(out, "\t\t\t\t\t\t
transformFeedbackQueries =
%" PRIuLEAST32 "
\n", transform_feedback_properties->transformFeedbackQueries); + fprintf(out, "\t\t\t\t\t\t
transformFeedbackStreamsLinesTriangles =
%" PRIuLEAST32 "
\n", transform_feedback_properties->transformFeedbackStreamsLinesTriangles); + fprintf(out, "\t\t\t\t\t\t
transformFeedbackRasterizationStreamSelect =
%" PRIuLEAST32 "
\n", transform_feedback_properties->transformFeedbackRasterizationStreamSelect); + fprintf(out, "\t\t\t\t\t\t
transformFeedbackDraw =
%" PRIuLEAST32 "
\n", transform_feedback_properties->transformFeedbackDraw); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceTransformFeedbackProperties\n"); + printf("===========================================\n"); + printf("\tmaxTransformFeedbackStreams = %" PRIuLEAST32 "\n", transform_feedback_properties->maxTransformFeedbackStreams); + printf("\tmaxTransformFeedbackBuffers = %" PRIuLEAST32 "\n", transform_feedback_properties->maxTransformFeedbackBuffers); + printf("\tmaxTransformFeedbackBufferSize = %" PRIuLEAST64 "\n", transform_feedback_properties->maxTransformFeedbackBufferSize); + printf("\tmaxTransformFeedbackStreamDataSize = %" PRIuLEAST32 "\n", transform_feedback_properties->maxTransformFeedbackStreamDataSize); + printf("\tmaxTransformFeedbackBufferDataSize = %" PRIuLEAST32 "\n", transform_feedback_properties->maxTransformFeedbackBufferDataSize); + printf("\tmaxTransformFeedbackBufferDataStride = %" PRIuLEAST32 "\n", transform_feedback_properties->maxTransformFeedbackBufferDataStride); + printf("\ttransformFeedbackQueries = %" PRIuLEAST32 "\n", transform_feedback_properties->transformFeedbackQueries); + printf("\ttransformFeedbackStreamsLinesTriangles = %" PRIuLEAST32 "\n", transform_feedback_properties->transformFeedbackStreamsLinesTriangles); + printf("\ttransformFeedbackRasterizationStreamSelect = %" PRIuLEAST32 "\n", transform_feedback_properties->transformFeedbackRasterizationStreamSelect); + printf("\ttransformFeedbackDraw = %" PRIuLEAST32 "\n", transform_feedback_properties->transformFeedbackDraw); + } } place = structure->pNext; } -- cgit v1.2.3