diff options
Diffstat (limited to 'vulkaninfo/vulkaninfo.c')
-rw-r--r-- | vulkaninfo/vulkaninfo.c | 348 |
1 files changed, 252 insertions, 96 deletions
diff --git a/vulkaninfo/vulkaninfo.c b/vulkaninfo/vulkaninfo.c index bb099194..5103e79e 100644 --- a/vulkaninfo/vulkaninfo.c +++ b/vulkaninfo/vulkaninfo.c @@ -558,6 +558,7 @@ static const char *VkFormatString(VkFormat fmt) { return "UNKNOWN_FORMAT"; } } + #if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_WAYLAND_KHR) static const char *VkPresentModeString(VkPresentModeKHR mode) { @@ -578,6 +579,20 @@ static const char *VkPresentModeString(VkPresentModeKHR mode) { } #endif +static const char *VkShaderFloatControlsIndependenceString(const VkShaderFloatControlsIndependenceKHR indep) { + switch (indep) { +#define STR(r) \ + case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_##r: \ + return #r + STR(32_BIT_ONLY_KHR); + STR(ALL_KHR); + STR(NONE_KHR); +#undef STR + default: + return "UNKNOWN_INDEPENDENCE"; + } +} + static bool CheckExtensionEnabled(const char *extension_to_check, const char **extension_list, uint32_t extension_count) { for (uint32_t i = 0; i < extension_count; ++i) { if (!strncmp(extension_to_check, extension_list[i], VK_MAX_EXTENSION_NAME_SIZE)) { @@ -980,7 +995,9 @@ static void AppGpuInit(struct AppGpu *gpu, struct AppInstance *inst, uint32_t id {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT, .mem_size = sizeof(VkPhysicalDeviceDescriptorIndexingPropertiesEXT)}, {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, - .mem_size = sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR)}}; + .mem_size = sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, + .mem_size = sizeof(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT)}}; uint32_t chain_info_len = ARRAY_SIZE(chain_info); @@ -1104,7 +1121,17 @@ static void AppGpuInit(struct AppGpu *gpu, struct AppInstance *inst, uint32_t id {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, .mem_size = sizeof(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT)}, {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, - .mem_size = sizeof(VkPhysicalDeviceHostQueryResetFeaturesEXT)}}; + .mem_size = sizeof(VkPhysicalDeviceHostQueryResetFeaturesEXT)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, + .mem_size = sizeof(VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, + .mem_size = sizeof(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, + .mem_size = sizeof(VkPhysicalDeviceImagelessFramebufferFeaturesKHR)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, + .mem_size = sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT)}, + {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, + .mem_size = sizeof(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)}}; uint32_t chain_info_len = ARRAY_SIZE(chain_info); @@ -1254,6 +1281,7 @@ static void AppGpuDestroy(struct AppGpu *gpu) { free(gpu->queue_props2); freepNextChain(gpu->props2.pNext); + freepNextChain(gpu->memory_props2.pNext); } } @@ -2103,6 +2131,7 @@ static void AppDumpSurfaceCapabilities(struct AppInstance *inst, struct AppGpu * } place = work->pNext; } + freepNextChain(surface_capabilities2.pNext); } if (html_output) { fprintf(out, "\t\t\t\t\t</details>\n"); @@ -3389,6 +3418,106 @@ static void AppGpuDumpFeatures(const struct AppGpu *gpu, FILE *out) { indexing_features->descriptorBindingVariableDescriptorCount); printf("\truntimeDescriptorArray = %" PRIuLEAST32 "\n", indexing_features->runtimeDescriptorArray); } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR && + CheckPhysicalDeviceExtensionIncluded(VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, + gpu->device_extensions, gpu->device_extension_count)) { + VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *standard_features = + (VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *)structure; + if (html_output) { + fprintf(out, + "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR</summary>\n"); + fprintf(out, + "\t\t\t\t\t\t<details><summary>uniformBufferStandardLayout = <span class='val'>%" PRIuLEAST32 + "</span></summary></details>\n", + standard_features->uniformBufferStandardLayout); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR:\n"); + printf("=======================================================\n"); + printf("\tuniformBufferStandardLayout = %" PRIuLEAST32 "\n", standard_features->uniformBufferStandardLayout); + } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT && + CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, gpu->device_extensions, + gpu->device_extension_count)) { + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *fragment_shader_features = + (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *)structure; + if (html_output) { + fprintf(out, "\t\t\t\t\t<details><summary>VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</summary>\n"); + fprintf(out, + "\t\t\t\t\t\t<details><summary>fragmentShaderPixelInterlock = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + fragment_shader_features->fragmentShaderPixelInterlock); + fprintf(out, + "\t\t\t\t\t\t<details><summary>fragmentShaderSampleInterlock = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + fragment_shader_features->fragmentShaderSampleInterlock); + fprintf(out, + "\t\t\t\t\t\t<details><summary>fragmentShaderShadingRateInterlock = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + fragment_shader_features->fragmentShaderShadingRateInterlock); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT:\n"); + printf("===================================================\n"); + printf("\tfragmentShaderPixelInterlock = %" PRIuLEAST32 "\n", + fragment_shader_features->fragmentShaderPixelInterlock); + printf("\tfragmentShaderSampleInterlock = %" PRIuLEAST32 "\n", + fragment_shader_features->fragmentShaderSampleInterlock); + printf("\tfragmentShaderShadingRateInterlock = %" PRIuLEAST32 "\n", + fragment_shader_features->fragmentShaderShadingRateInterlock); + } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR && + CheckPhysicalDeviceExtensionIncluded(VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, gpu->device_extensions, + gpu->device_extension_count)) { + VkPhysicalDeviceImagelessFramebufferFeaturesKHR *imageless_framebuffer = + (VkPhysicalDeviceImagelessFramebufferFeaturesKHR *)structure; + if (html_output) { + fprintf(out, "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceImagelessFramebufferFeaturesKHR</summary>\n"); + fprintf(out, + "\t\t\t\t\t\t<details><summary>imagelessFramebuffer = <span class='val'>%" PRIuLEAST32 + "</span></summary></details>\n", + imageless_framebuffer->imagelessFramebuffer); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceImagelessFramebufferFeaturesKHR:\n"); + printf("================================================\n"); + printf("\timagelessFramebuffer = %" PRIuLEAST32 "\n", imageless_framebuffer->imagelessFramebuffer); + } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT && + CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, gpu->device_extensions, + gpu->device_extension_count)) { + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *texel_buffer_alignment = + (VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)structure; + if (html_output) { + fprintf(out, "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</summary>\n"); + fprintf(out, + "\t\t\t\t\t\t<details><summary>texelBufferAlignment = <span class='val'>%" PRIuLEAST32 + "</span></summary></details>\n", + texel_buffer_alignment->texelBufferAlignment); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT:\n"); + printf("================================================\n"); + printf("\ttexelBufferAlignment = %" PRIuLEAST32 "\n", texel_buffer_alignment->texelBufferAlignment); + } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT && + CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, + gpu->device_extensions, gpu->device_extension_count)) { + VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *shader_helper = + (VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *)structure; + if (html_output) { + fprintf(out, + "\t\t\t\t\t<details><summary>VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</summary>\n"); + fprintf(out, + "\t\t\t\t\t\t<details><summary>shaderDemoteToHelperInvocation = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + shader_helper->shaderDemoteToHelperInvocation); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT:\n"); + printf("===================================================\n"); + printf("\tshaderDemoteToHelperInvocation = %" PRIuLEAST32 "\n", shader_helper->shaderDemoteToHelperInvocation); + } } place = structure->pNext; } @@ -4425,10 +4554,10 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { (uint32_t)id_props->deviceLUID[2], (uint32_t)id_props->deviceLUID[3], (uint32_t)id_props->deviceLUID[4], (uint32_t)id_props->deviceLUID[5], (uint32_t)id_props->deviceLUID[6], (uint32_t)id_props->deviceLUID[7]); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>deviceNodeMask = <span class='val'>0x%08x</span></summary></details>\n", - id_props->deviceNodeMask); + fprintf(out, + "\t\t\t\t\t\t<details><summary>deviceNodeMask = <span " + "class='val'>0x%08x</span></summary></details>\n", + id_props->deviceNodeMask); } fprintf(out, "\t\t\t\t\t</details>\n"); } else if (human_readable_output) { @@ -4510,13 +4639,13 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { if (html_output) { fprintf(out, "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceFloatControlsProperties</summary>\n"); fprintf(out, - "\t\t\t\t\t\t<details><summary>separateDenormSettings = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - float_control_props->separateDenormSettings); + "\t\t\t\t\t\t<details><summary>denormBehaviorIndependence = <span " + "class='val'>%s</span></summary></details>\n", + VkShaderFloatControlsIndependenceString(float_control_props->denormBehaviorIndependence)); fprintf(out, - "\t\t\t\t\t\t<details><summary>separateRoundingModeSettings = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - float_control_props->separateRoundingModeSettings); + "\t\t\t\t\t\t<details><summary>roundingModeIndependence = <span " + "class='val'>%s</span></summary></details>\n", + VkShaderFloatControlsIndependenceString(float_control_props->roundingModeIndependence)); fprintf(out, "\t\t\t\t\t\t<details><summary>shaderSignedZeroInfNanPreserveFloat16 = <span class='val'>%" PRIuLEAST32 "</span></summary></details>\n", @@ -4581,16 +4710,17 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { } else if (human_readable_output) { printf("\nVkPhysicalDeviceFloatControlsProperties:\n"); printf("========================================\n"); - printf("\tseparateDenormSettings = %" PRIuLEAST32 "\n", float_control_props->separateDenormSettings); - printf("\tseparateRoundingModeSettings = %" PRIuLEAST32 "\n", - float_control_props->separateRoundingModeSettings); + printf("\tdenormBehaviorIndependence = %s\n", + VkShaderFloatControlsIndependenceString(float_control_props->denormBehaviorIndependence)); + printf("\troundingModeIndependence = %s\n", + VkShaderFloatControlsIndependenceString(float_control_props->roundingModeIndependence)); printf("\tshaderSignedZeroInfNanPreserveFloat16 = %" PRIuLEAST32 "\n", float_control_props->shaderSignedZeroInfNanPreserveFloat16); printf("\tshaderSignedZeroInfNanPreserveFloat32 = %" PRIuLEAST32 "\n", float_control_props->shaderSignedZeroInfNanPreserveFloat32); printf("\tshaderSignedZeroInfNanPreserveFloat64 = %" PRIuLEAST32 "\n", float_control_props->shaderSignedZeroInfNanPreserveFloat64); - printf("\tshaderDenormPreserveFloat16 = %" PRIuLEAST32 "\n", + printf("\tshaderDenormPreserveFloat16 = %" PRIuLEAST32 "\n", float_control_props->shaderDenormPreserveFloat16); printf("\tshaderDenormPreserveFloat32 = %" PRIuLEAST32 "\n", float_control_props->shaderDenormPreserveFloat32); @@ -4606,7 +4736,7 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { float_control_props->shaderRoundingModeRTEFloat16); printf("\tshaderRoundingModeRTEFloat32 = %" PRIuLEAST32 "\n", float_control_props->shaderRoundingModeRTEFloat32); - printf("\tshaderRoundingModeRTEFloat64 = %" PRIuLEAST32 "\n", + printf("\tshaderRoundingModeRTEFloat64 = %" PRIuLEAST32 "\n", float_control_props->shaderRoundingModeRTEFloat64); printf("\tshaderRoundingModeRTZFloat16 = %" PRIuLEAST32 "\n", float_control_props->shaderRoundingModeRTZFloat16); @@ -4637,6 +4767,8 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { "\t\t\t\t\t\t<details><summary>pciFunction = <span class='val'>%" PRIuLEAST32 "</span></summary></details>\n", pci_bus_properties->pciFunction); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { printf("\nVkPhysicalDevicePCIBusInfoProperties\n"); printf("====================================\n"); @@ -4652,56 +4784,46 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { (VkPhysicalDeviceTransformFeedbackPropertiesEXT *)structure; if (html_output) { fprintf(out, "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceTransformFeedbackProperties</summary>\n"); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>maxTransformFeedbackStreams = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->maxTransformFeedbackStreams); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBuffers = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->maxTransformFeedbackBuffers); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBufferSize = <span class='val'>%" PRIuLEAST64 - "</span></summary></details>\n", - transform_feedback_properties->maxTransformFeedbackBufferSize); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>maxTransformFeedbackStreamDataSize = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->maxTransformFeedbackStreamDataSize); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBufferDataSize = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->maxTransformFeedbackBufferDataSize); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBufferDataStride = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->maxTransformFeedbackBufferDataStride); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>transformFeedbackQueries = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->transformFeedbackQueries); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>transformFeedbackStreamsLinesTriangles = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->transformFeedbackStreamsLinesTriangles); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>transformFeedbackRasterizationStreamSelect = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->transformFeedbackRasterizationStreamSelect); - fprintf( - out, - "\t\t\t\t\t\t<details><summary>transformFeedbackDraw = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - transform_feedback_properties->transformFeedbackDraw); + fprintf(out, + "\t\t\t\t\t\t<details><summary>maxTransformFeedbackStreams = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->maxTransformFeedbackStreams); + fprintf(out, + "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBuffers = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->maxTransformFeedbackBuffers); + fprintf(out, + "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBufferSize = <span " + "class='val'>%" PRIuLEAST64 "</span></summary></details>\n", + transform_feedback_properties->maxTransformFeedbackBufferSize); + fprintf(out, + "\t\t\t\t\t\t<details><summary>maxTransformFeedbackStreamDataSize = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->maxTransformFeedbackStreamDataSize); + fprintf(out, + "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBufferDataSize = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->maxTransformFeedbackBufferDataSize); + fprintf(out, + "\t\t\t\t\t\t<details><summary>maxTransformFeedbackBufferDataStride = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->maxTransformFeedbackBufferDataStride); + fprintf(out, + "\t\t\t\t\t\t<details><summary>transformFeedbackQueries = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->transformFeedbackQueries); + fprintf(out, + "\t\t\t\t\t\t<details><summary>transformFeedbackStreamsLinesTriangles = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->transformFeedbackStreamsLinesTriangles); + fprintf(out, + "\t\t\t\t\t\t<details><summary>transformFeedbackRasterizationStreamSelect = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->transformFeedbackRasterizationStreamSelect); + fprintf(out, + "\t\t\t\t\t\t<details><summary>transformFeedbackDraw = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + transform_feedback_properties->transformFeedbackDraw); fprintf(out, "\t\t\t\t\t</details>\n"); } else if (human_readable_output) { printf("\nVkPhysicalDeviceTransformFeedbackProperties\n"); @@ -4834,35 +4956,35 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { } else if (human_readable_output) { printf("\nVkPhysicalDeviceDepthStencilResolveProperties\n"); printf("============================================\n"); - printf("\t\tsupportedDepthResolveModes:\n"); + printf("\tsupportedDepthResolveModes:\n"); if (depth_stencil_resolve_properties->supportedDepthResolveModes == 0) { - printf("\t\t\tVK_RESOLVE_MODE_NONE_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_NONE_KHR\n"); } else { if (depth_stencil_resolve_properties->supportedDepthResolveModes & VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR\n"); if (depth_stencil_resolve_properties->supportedDepthResolveModes & VK_RESOLVE_MODE_AVERAGE_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_AVERAGE_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_AVERAGE_BIT_KHR\n"); if (depth_stencil_resolve_properties->supportedDepthResolveModes & VK_RESOLVE_MODE_MIN_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_MIN_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_MIN_BIT_KHR\n"); if (depth_stencil_resolve_properties->supportedDepthResolveModes & VK_RESOLVE_MODE_MAX_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_MAX_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_MAX_BIT_KHR\n"); } - printf("\t\tsupportedStencilResolveModes:\n"); + printf("\tsupportedStencilResolveModes:\n"); if (depth_stencil_resolve_properties->supportedStencilResolveModes == 0) { - printf("\t\t\tVK_RESOLVE_MODE_NONE_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_NONE_KHR\n"); } else { if (depth_stencil_resolve_properties->supportedStencilResolveModes & VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR\n"); if (depth_stencil_resolve_properties->supportedStencilResolveModes & VK_RESOLVE_MODE_AVERAGE_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_AVERAGE_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_AVERAGE_BIT_KHR\n"); if (depth_stencil_resolve_properties->supportedStencilResolveModes & VK_RESOLVE_MODE_MIN_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_MIN_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_MIN_BIT_KHR\n"); if (depth_stencil_resolve_properties->supportedStencilResolveModes & VK_RESOLVE_MODE_MAX_BIT_KHR) - printf("\t\t\tVK_RESOLVE_MODE_MAX_BIT_KHR\n"); + printf("\t\tVK_RESOLVE_MODE_MAX_BIT_KHR\n"); } - printf("\t\tindependentResolveNone = %" PRIuLEAST32 "\n", + printf("\tindependentResolveNone = %" PRIuLEAST32 "\n", depth_stencil_resolve_properties->independentResolveNone); - printf("\t\tindependentResolve = %" PRIuLEAST32 "\n", depth_stencil_resolve_properties->independentResolve); + printf("\tindependentResolve = %" PRIuLEAST32 "\n", depth_stencil_resolve_properties->independentResolve); } } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT && CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, gpu->device_extensions, @@ -4871,11 +4993,10 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { (VkPhysicalDeviceDescriptorIndexingPropertiesEXT *)structure; if (html_output) { fprintf(out, "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceDescriptorIndexingProperties</summary>\n"); - fprintf( - out, - "\t\t\t\t\t\t\t<details><summary>maxUpdateAfterBindDescriptorsInAllPools = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - indexing_properties->maxUpdateAfterBindDescriptorsInAllPools); + fprintf(out, + "\t\t\t\t\t\t\t<details><summary>maxUpdateAfterBindDescriptorsInAllPools = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + indexing_properties->maxUpdateAfterBindDescriptorsInAllPools); fprintf(out, "\t\t\t\t\t\t\t<details><summary>shaderUniformBufferArrayNonUniformIndexingNative = <span " "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", @@ -4932,11 +5053,10 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { "\t\t\t\t\t\t\t<details><summary>maxPerStageUpdateAfterBindResources = <span class='val'>%" PRIuLEAST32 "</span></summary></details>\n", indexing_properties->maxPerStageUpdateAfterBindResources); - fprintf( - out, - "\t\t\t\t\t\t\t<details><summary>maxDescriptorSetUpdateAfterBindSamplers = <span class='val'>%" PRIuLEAST32 - "</span></summary></details>\n", - indexing_properties->maxDescriptorSetUpdateAfterBindSamplers); + fprintf(out, + "\t\t\t\t\t\t\t<details><summary>maxDescriptorSetUpdateAfterBindSamplers = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + indexing_properties->maxDescriptorSetUpdateAfterBindSamplers); fprintf(out, "\t\t\t\t\t\t\t<details><summary>maxDescriptorSetUpdateAfterBindUniformBuffers = <span " "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", @@ -5015,6 +5135,42 @@ static void AppGpuDumpProps(const struct AppGpu *gpu, FILE *out) { printf("\tmaxDescriptorSetUpdateAfterBindInputAttachments = %" PRIuLEAST32 "\n", indexing_properties->maxDescriptorSetUpdateAfterBindInputAttachments); } + } else if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT && + CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, gpu->device_extensions, + gpu->device_extension_count)) { + VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *texel_buffer_alignment = + (VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *)structure; + if (html_output) { + fprintf(out, "\n\t\t\t\t\t<details><summary>VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</summary>\n"); + fprintf(out, + "\t\t\t\t\t\t\t<details><summary>storageTexelBufferOffsetAlignmentBytes = <span " + "class='val'>%" PRIuLEAST64 "</span></summary></details>\n", + texel_buffer_alignment->storageTexelBufferOffsetAlignmentBytes); + fprintf(out, + "\t\t\t\t\t\t\t<details><summary>storageTexelBufferOffsetSingleTexelAlignment = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + texel_buffer_alignment->storageTexelBufferOffsetSingleTexelAlignment); + fprintf(out, + "\t\t\t\t\t\t\t<details><summary>uniformTexelBufferOffsetAlignmentBytes = <span " + "class='val'>%" PRIuLEAST64 "</span></summary></details>\n", + texel_buffer_alignment->uniformTexelBufferOffsetAlignmentBytes); + fprintf(out, + "\t\t\t\t\t\t\t<details><summary>uniformTexelBufferOffsetSingleTexelAlignment = <span " + "class='val'>%" PRIuLEAST32 "</span></summary></details>\n", + texel_buffer_alignment->uniformTexelBufferOffsetSingleTexelAlignment); + fprintf(out, "\t\t\t\t\t</details>\n"); + } else if (human_readable_output) { + printf("\nVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\n"); + printf("=================================================\n"); + printf("\t\tstorageTexelBufferOffsetAlignmentBytes = %" PRIuLEAST64 "\n", + texel_buffer_alignment->storageTexelBufferOffsetAlignmentBytes); + printf("\t\tstorageTexelBufferOffsetSingleTexelAlignment = %" PRIuLEAST32 "\n", + texel_buffer_alignment->storageTexelBufferOffsetSingleTexelAlignment); + printf("\t\tuniformTexelBufferOffsetAlignmentBytes = %" PRIuLEAST64 "\n", + texel_buffer_alignment->uniformTexelBufferOffsetAlignmentBytes); + printf("\t\tuniformTexelBufferOffsetSingleTexelAlignment = %" PRIuLEAST32 "\n", + texel_buffer_alignment->uniformTexelBufferOffsetSingleTexelAlignment); + } } place = structure->pNext; } @@ -5704,8 +5860,8 @@ static void AppGroupDump(const VkPhysicalDeviceGroupProperties *group, const uin VkDeviceGroupPresentCapabilitiesKHR group_capabilities = {.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, .pNext = NULL}; - // If the KHR_device_group extension is present, write the capabilities of the logical device into a struct for later output - // to user. + // If the KHR_device_group extension is present, write the capabilities of the logical device into a struct for later + // output to user. PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)vkGetInstanceProcAddr(inst->instance, "vkGetDeviceGroupPresentCapabilitiesKHR"); @@ -5755,9 +5911,9 @@ static void AppGroupDump(const VkPhysicalDeviceGroupProperties *group, const uin if (group_capabilities.modes & VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR) fprintf(out, "\t\t\t\t\t\t<details><summary>VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR</summary></details>\n"); if (group_capabilities.modes & VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR) - fprintf( - out, - "\t\t\t\t\t\t<details><summary>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</summary></details>\n"); + fprintf(out, + "\t\t\t\t\t\t<details><summary>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</summary></" + "details>\n"); fprintf(out, "\t\t\t\t\t</details>\n"); } else if (human_readable_output) { printf("\t\tPresent modes:\n"); |