Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MoltenVK Subgroup Size Error #5551

Closed
cwfitzgerald opened this issue Apr 17, 2024 · 5 comments · Fixed by #5624
Closed

MoltenVK Subgroup Size Error #5551

cwfitzgerald opened this issue Apr 17, 2024 · 5 comments · Fixed by #5624
Labels
api: vulkan Issues with Vulkan area: correctness We're behaving incorrectly type: bug Something isn't working

Comments

@cwfitzgerald
Copy link
Member

Description

When running basically any vulkan test on MoltenVK, I get:

[2024-04-17T21:26:02Z ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-VkPipelineShaderStageCreateInfo-flags-02784 (0xd65f4ec3)]
        Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-flags-02784 ] | MessageID = 0xd65f4ec3 | vkCreateGraphicsPipelines(): pCreateInfos[0].pStages[0].flags includes VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, but the subgroupSizeControl feature was not enabled. The Vulkan spec states: If flags has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag set, the subgroupSizeControl feature must be enabled (https://vulkan.lunarg.com/doc/view/1.3.268.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-flags-02784)
[2024-04-17T21:26:02Z ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-VkPipelineShaderStageCreateInfo-flags-02784 (0xd65f4ec3)]
        Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-flags-02784 ] | MessageID = 0xd65f4ec3 | vkCreateGraphicsPipelines(): pCreateInfos[0].pStages[1].flags includes VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, but the subgroupSizeControl feature was not enabled. The Vulkan spec states: If flags has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag set, the subgroupSizeControl feature must be enabled (https://vulkan.lunarg.com/doc/view/1.3.268.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-flags-02784)
[2024-04-17T21:26:02Z ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-VkPipelineShaderStageCreateInfo-flags-02784 (0xd65f4ec3)]
        Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-flags-02784 ] | MessageID = 0xd65f4ec3 | vkCreateComputePipelines(): pCreateInfos[0].stage.flags includes VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, but the subgroupSizeControl feature was not enabled. The Vulkan spec states: If flags has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag set, the subgroupSizeControl feature must be enabled (https://vulkan.lunarg.com/doc/view/1.3.268.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-flags-02784)
[2024-04-17T21:26:03Z ERROR wgpu_test::expectations] Validation Error: Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-flags-02784 ] | MessageID = 0xd65f4ec3 | vkCreateGraphicsPipelines(): pCreateInfos[0].pStages[0].flags includes VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, but the subgroupSizeControl feature was not enabled. The Vulkan spec states: If flags has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag set, the subgroupSizeControl feature must be enabled (https://vulkan.lunarg.com/doc/view/1.3.268.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-flags-02784)
[2024-04-17T21:26:03Z ERROR wgpu_test::expectations] Validation Error: Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-flags-02784 ] | MessageID = 0xd65f4ec3 | vkCreateGraphicsPipelines(): pCreateInfos[0].pStages[1].flags includes VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, but the subgroupSizeControl feature was not enabled. The Vulkan spec states: If flags has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag set, the subgroupSizeControl feature must be enabled (https://vulkan.lunarg.com/doc/view/1.3.268.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-flags-02784)
[2024-04-17T21:26:03Z ERROR wgpu_test::expectations] Validation Error: Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-flags-02784 ] | MessageID = 0xd65f4ec3 | vkCreateComputePipelines(): pCreateInfos[0].stage.flags includes VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, but the subgroupSizeControl feature was not enabled. The Vulkan spec states: If flags has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag set, the subgroupSizeControl feature must be enabled (https://vulkan.lunarg.com/doc/view/1.3.268.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-flags-02784)
thread '<unnamed>' panicked at tests/src/run.rs:119:9:
explicit panic
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

cc @Lichtso @exrook

@cwfitzgerald cwfitzgerald added type: bug Something isn't working area: correctness We're behaving incorrectly api: vulkan Issues with Vulkan labels Apr 17, 2024
@teoxoy
Copy link
Member

teoxoy commented Apr 18, 2024

That's odd, we used to see the same error on the PR but it was fixed by enabling it.

@Lichtso
Copy link
Contributor

Lichtso commented Apr 18, 2024

I think MoltenVK still only supports Vulkan 1.2 where as the Linux CI runner probably supports Vulkan 1.3.
And the extension was promoted to core in Vulkan 1.3, so these might behave slightly different in how they expect the feature to be enabled.

@cwfitzgerald
Copy link
Member Author

My vulkaninfo
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.268


Instance Extensions: count = 15
===============================
        VK_EXT_debug_report                    : extension revision 10
        VK_EXT_debug_utils                     : extension revision 2
        VK_EXT_metal_surface                   : extension revision 1
        VK_EXT_surface_maintenance1            : extension revision 1
        VK_EXT_swapchain_colorspace            : extension revision 4
        VK_KHR_device_group_creation           : extension revision 1
        VK_KHR_external_fence_capabilities     : extension revision 1
        VK_KHR_external_memory_capabilities    : extension revision 1
        VK_KHR_external_semaphore_capabilities : extension revision 1
        VK_KHR_get_physical_device_properties2 : extension revision 2
        VK_KHR_get_surface_capabilities2       : extension revision 1
        VK_KHR_portability_enumeration         : extension revision 1
        VK_KHR_surface                         : extension revision 25
        VK_LUNARG_direct_driver_loading        : extension revision 1
        VK_MVK_macos_surface                   : extension revision 3

Layers: count = 10
==================
VK_LAYER_KHRONOS_profiles (Khronos Profiles layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_EXT_tooling_info : extension revision 1

VK_LAYER_KHRONOS_profiles (Khronos Profiles layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_EXT_tooling_info : extension revision 1

VK_LAYER_KHRONOS_shader_object (Khronos Shader object layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_EXT_shader_object : extension revision 1

VK_LAYER_KHRONOS_shader_object (Khronos Shader object layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_EXT_shader_object : extension revision 1

VK_LAYER_KHRONOS_synchronization2 (Khronos Synchronization2 layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_KHR_synchronization2 : extension revision 1

VK_LAYER_KHRONOS_synchronization2 (Khronos Synchronization2 layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_KHR_synchronization2 : extension revision 1

VK_LAYER_KHRONOS_validation (Khronos Validation Layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 3
                VK_EXT_debug_report        : extension revision 9
                VK_EXT_debug_utils         : extension revision 1
                VK_EXT_validation_features : extension revision 2
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 3
                        VK_EXT_debug_marker     : extension revision 4
                        VK_EXT_tooling_info     : extension revision 1
                        VK_EXT_validation_cache : extension revision 1

VK_LAYER_KHRONOS_validation (Khronos Validation Layer) Vulkan version 1.3.268, layer version 1:
        Layer Extensions: count = 3
                VK_EXT_debug_report        : extension revision 9
                VK_EXT_debug_utils         : extension revision 1
                VK_EXT_validation_features : extension revision 2
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 3
                        VK_EXT_debug_marker     : extension revision 4
                        VK_EXT_tooling_info     : extension revision 1
                        VK_EXT_validation_cache : extension revision 1

VK_LAYER_LUNARG_api_dump (LunarG API dump layer) Vulkan version 1.3.268, layer version 2:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_EXT_tooling_info : extension revision 1

VK_LAYER_LUNARG_api_dump (LunarG API dump layer) Vulkan version 1.3.268, layer version 2:
        Layer Extensions: count = 0
        Devices: count = 1
                GPU id = 0 (Apple M1 Pro)
                Layer-Device Extensions: count = 1
                        VK_EXT_tooling_info : extension revision 1

Presentable Surfaces:
=====================
GPU id : 0 (Apple M1 Pro):
        Surface types: count = 2
                VK_EXT_metal_surface
                VK_MVK_macos_surface
        Formats: count = 60
                SurfaceFormat[0]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[1]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[2]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[3]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[4]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[5]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
                SurfaceFormat[6]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
                SurfaceFormat[7]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
                SurfaceFormat[8]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
                SurfaceFormat[9]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
                SurfaceFormat[10]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
                SurfaceFormat[11]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
                SurfaceFormat[12]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
                SurfaceFormat[13]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
                SurfaceFormat[14]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
                SurfaceFormat[15]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
                SurfaceFormat[16]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
                SurfaceFormat[17]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
                SurfaceFormat[18]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
                SurfaceFormat[19]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
                SurfaceFormat[20]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
                SurfaceFormat[21]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
                SurfaceFormat[22]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
                SurfaceFormat[23]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
                SurfaceFormat[24]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
                SurfaceFormat[25]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
                SurfaceFormat[26]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
                SurfaceFormat[27]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
                SurfaceFormat[28]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
                SurfaceFormat[29]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
                SurfaceFormat[30]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
                SurfaceFormat[31]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
                SurfaceFormat[32]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
                SurfaceFormat[33]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
                SurfaceFormat[34]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
                SurfaceFormat[35]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
                SurfaceFormat[36]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
                SurfaceFormat[37]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
                SurfaceFormat[38]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
                SurfaceFormat[39]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
                SurfaceFormat[40]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
                SurfaceFormat[41]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
                SurfaceFormat[42]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
                SurfaceFormat[43]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
                SurfaceFormat[44]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
                SurfaceFormat[45]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
                SurfaceFormat[46]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
                SurfaceFormat[47]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
                SurfaceFormat[48]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
                SurfaceFormat[49]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
                SurfaceFormat[50]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_HDR10_HLG_EXT
                SurfaceFormat[51]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_HDR10_HLG_EXT
                SurfaceFormat[52]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_HDR10_HLG_EXT
                SurfaceFormat[53]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_HDR10_HLG_EXT
                SurfaceFormat[54]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_HDR10_HLG_EXT
                SurfaceFormat[55]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
                SurfaceFormat[56]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
                SurfaceFormat[57]:
                        format = FORMAT_R16G16B16A16_SFLOAT
                        colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
                SurfaceFormat[58]:
                        format = FORMAT_A2B10G10R10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
                SurfaceFormat[59]:
                        format = FORMAT_A2R10G10B10_UNORM_PACK32
                        colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
        Present Modes: count = 2
                PRESENT_MODE_FIFO_KHR
                PRESENT_MODE_IMMEDIATE_KHR
        VkSurfaceCapabilitiesKHR:
        -------------------------
                minImageCount = 2
                maxImageCount = 3
                currentExtent:
                        width  = 512
                        height = 512
                minImageExtent:
                        width  = 1
                        height = 1
                maxImageExtent:
                        width  = 16384
                        height = 16384
                maxImageArrayLayers = 1
                supportedTransforms: count = 1
                        SURFACE_TRANSFORM_IDENTITY_BIT_KHR
                currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
                supportedCompositeAlpha: count = 3
                        COMPOSITE_ALPHA_OPAQUE_BIT_KHR
                        COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
                        COMPOSITE_ALPHA_INHERIT_BIT_KHR
                supportedUsageFlags: count = 5
                        IMAGE_USAGE_TRANSFER_SRC_BIT
                        IMAGE_USAGE_TRANSFER_DST_BIT
                        IMAGE_USAGE_SAMPLED_BIT
                        IMAGE_USAGE_STORAGE_BIT
                        IMAGE_USAGE_COLOR_ATTACHMENT_BIT
        VK_EXT_surface_maintenance_1:
        -----------------------------
                PRESENT_MODE_FIFO_KHR:
                        VkSurfacePresentScalingCapabilitiesEXT:
                                supportedPresentScaling: count = 3
                                        PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
                                        PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
                                        PRESENT_SCALING_STRETCH_BIT_EXT
                                supportedPresentGravityX: count = 3
                                        PRESENT_GRAVITY_MIN_BIT_EXT
                                        PRESENT_GRAVITY_MAX_BIT_EXT
                                        PRESENT_GRAVITY_CENTERED_BIT_EXT
                                supportedPresentGravityY: count = 3
                                        PRESENT_GRAVITY_MIN_BIT_EXT
                                        PRESENT_GRAVITY_MAX_BIT_EXT
                                        PRESENT_GRAVITY_CENTERED_BIT_EXT
                                minScaledImageExtent:
                                        width  = 1
                                        height = 1
                                maxScaledImageExtent:
                                        width  = 16384
                                        height = 16384
                        VkSurfacePresentModeCompatibilityEXT:
                                presentModeCount                = 2
                                pPresentModes: count = 2
                                        PRESENT_MODE_FIFO_KHR
                                        PRESENT_MODE_IMMEDIATE_KHR
                PRESENT_MODE_IMMEDIATE_KHR:
                        VkSurfacePresentScalingCapabilitiesEXT:
                                supportedPresentScaling: count = 3
                                        PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
                                        PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
                                        PRESENT_SCALING_STRETCH_BIT_EXT
                                supportedPresentGravityX: count = 3
                                        PRESENT_GRAVITY_MIN_BIT_EXT
                                        PRESENT_GRAVITY_MAX_BIT_EXT
                                        PRESENT_GRAVITY_CENTERED_BIT_EXT
                                supportedPresentGravityY: count = 3
                                        PRESENT_GRAVITY_MIN_BIT_EXT
                                        PRESENT_GRAVITY_MAX_BIT_EXT
                                        PRESENT_GRAVITY_CENTERED_BIT_EXT
                                minScaledImageExtent:
                                        width  = 1
                                        height = 1
                                maxScaledImageExtent:
                                        width  = 16384
                                        height = 16384
                        VkSurfacePresentModeCompatibilityEXT:
                                presentModeCount                = 2
                                pPresentModes: count = 2
                                        PRESENT_MODE_IMMEDIATE_KHR
                                        PRESENT_MODE_FIFO_KHR


Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
        apiVersion        = 1.2.268 (4202764)
        driverVersion     = 0.2.2014 (10206)
        vendorID          = 0x106b
        deviceID          = 0xe0403ef
        deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
        deviceName        = Apple M1 Pro
        pipelineCacheUUID = 9e4ee9e6-0e04-03ef-0000-000000000000

VkPhysicalDeviceLimits:
-----------------------
        maxImageDimension1D                             = 16384
        maxImageDimension2D                             = 16384
        maxImageDimension3D                             = 2048
        maxImageDimensionCube                           = 16384
        maxImageArrayLayers                             = 2048
        maxTexelBufferElements                          = 67108864
        maxUniformBufferRange                           = 4294967295
        maxStorageBufferRange                           = 4294967295
        maxPushConstantsSize                            = 4096
        maxMemoryAllocationCount                        = 1073741824
        maxSamplerAllocationCount                       = 1073741824
        bufferImageGranularity                          = 0x00000010
        sparseAddressSpaceSize                          = 0x00000000
        maxBoundDescriptorSets                          = 8
        maxPerStageDescriptorSamplers                   = 16
        maxPerStageDescriptorUniformBuffers             = 31
        maxPerStageDescriptorStorageBuffers             = 31
        maxPerStageDescriptorSampledImages              = 128
        maxPerStageDescriptorStorageImages              = 8
        maxPerStageDescriptorInputAttachments           = 128
        maxPerStageResources                            = 159
        maxDescriptorSetSamplers                        = 80
        maxDescriptorSetUniformBuffers                  = 155
        maxDescriptorSetUniformBuffersDynamic           = 155
        maxDescriptorSetStorageBuffers                  = 155
        maxDescriptorSetStorageBuffersDynamic           = 155
        maxDescriptorSetSampledImages                   = 640
        maxDescriptorSetStorageImages                   = 40
        maxDescriptorSetInputAttachments                = 640
        maxVertexInputAttributes                        = 31
        maxVertexInputBindings                          = 31
        maxVertexInputAttributeOffset                   = 1073741823
        maxVertexInputBindingStride                     = 1073741824
        maxVertexOutputComponents                       = 124
        maxTessellationGenerationLevel                  = 64
        maxTessellationPatchSize                        = 32
        maxTessellationControlPerVertexInputComponents  = 124
        maxTessellationControlPerVertexOutputComponents = 124
        maxTessellationControlPerPatchOutputComponents  = 120
        maxTessellationControlTotalOutputComponents     = 4088
        maxTessellationEvaluationInputComponents        = 124
        maxTessellationEvaluationOutputComponents       = 124
        maxGeometryShaderInvocations                    = 0
        maxGeometryInputComponents                      = 0
        maxGeometryOutputComponents                     = 0
        maxGeometryOutputVertices                       = 0
        maxGeometryTotalOutputComponents                = 0
        maxFragmentInputComponents                      = 124
        maxFragmentOutputAttachments                    = 8
        maxFragmentDualSrcAttachments                   = 1
        maxFragmentCombinedOutputResources              = 159
        maxComputeSharedMemorySize                      = 32768
        maxComputeWorkGroupCount: count = 3
                1073741824
                1073741824
                1073741824
        maxComputeWorkGroupInvocations                  = 1024
        maxComputeWorkGroupSize: count = 3
                1024
                1024
                1024
        subPixelPrecisionBits                           = 4
        subTexelPrecisionBits                           = 4
        mipmapPrecisionBits                             = 4
        maxDrawIndexedIndexValue                        = 4294967294
        maxDrawIndirectCount                            = 1073741824
        maxSamplerLodBias                               = 4
        maxSamplerAnisotropy                            = 16
        maxViewports                                    = 16
        maxViewportDimensions: count = 2
                16384
                16384
        viewportBoundsRange: count = 2
                -32768
                32767
        viewportSubPixelBits                            = 0
        minMemoryMapAlignment                           = 64
        minTexelBufferOffsetAlignment                   = 0x00000010
        minUniformBufferOffsetAlignment                 = 0x00000010
        minStorageBufferOffsetAlignment                 = 0x00000010
        minTexelOffset                                  = -8
        maxTexelOffset                                  = 7
        minTexelGatherOffset                            = -8
        maxTexelGatherOffset                            = 7
        minInterpolationOffset                          = -0.5
        maxInterpolationOffset                          = 0.5
        subPixelInterpolationOffsetBits                 = 4
        maxFramebufferWidth                             = 16384
        maxFramebufferHeight                            = 16384
        maxFramebufferLayers                            = 2048
        framebufferColorSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        framebufferDepthSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        framebufferStencilSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        framebufferNoAttachmentsSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        maxColorAttachments                             = 8
        sampledImageColorSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        sampledImageIntegerSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        sampledImageDepthSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        sampledImageStencilSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        storageImageSampleCounts: count = 1
                SAMPLE_COUNT_1_BIT
        maxSampleMaskWords                              = 1
        timestampComputeAndGraphics                     = true
        timestampPeriod                                 = 1
        maxClipDistances                                = 8
        maxCullDistances                                = 0
        maxCombinedClipAndCullDistances                 = 8
        discreteQueuePriorities                         = 2
        pointSizeRange: count = 2
                1
                511
        lineWidthRange: count = 2
                1
                1
        pointSizeGranularity                            = 1
        lineWidthGranularity                            = 1
        strictLines                                     = false
        standardSampleLocations                         = true
        optimalBufferCopyOffsetAlignment                = 0x00000010
        optimalBufferCopyRowPitchAlignment              = 0x00000001
        nonCoherentAtomSize                             = 0x00000010

VkPhysicalDeviceSparseProperties:
---------------------------------
        residencyStandard2DBlockShape            = false
        residencyStandard2DMultisampleBlockShape = false
        residencyStandard3DBlockShape            = false
        residencyAlignedMipSize                  = false
        residencyNonResidentStrict               = false

VkPhysicalDeviceDepthStencilResolveProperties:
----------------------------------------------
        supportedDepthResolveModes: count = 3
                RESOLVE_MODE_SAMPLE_ZERO_BIT
                RESOLVE_MODE_MIN_BIT
                RESOLVE_MODE_MAX_BIT
        supportedStencilResolveModes: count = 1
                RESOLVE_MODE_SAMPLE_ZERO_BIT
        independentResolveNone = true
        independentResolve     = true

VkPhysicalDeviceDescriptorIndexingProperties:
---------------------------------------------
        maxUpdateAfterBindDescriptorsInAllPools              = 1073741824
        shaderUniformBufferArrayNonUniformIndexingNative     = false
        shaderSampledImageArrayNonUniformIndexingNative      = true
        shaderStorageBufferArrayNonUniformIndexingNative     = false
        shaderStorageImageArrayNonUniformIndexingNative      = true
        shaderInputAttachmentArrayNonUniformIndexingNative   = true
        robustBufferAccessUpdateAfterBind                    = true
        quadDivergentImplicitLod                             = false
        maxPerStageDescriptorUpdateAfterBindSamplers         = 16
        maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 31
        maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 31
        maxPerStageDescriptorUpdateAfterBindSampledImages    = 128
        maxPerStageDescriptorUpdateAfterBindStorageImages    = 8
        maxPerStageDescriptorUpdateAfterBindInputAttachments = 128
        maxPerStageUpdateAfterBindResources                  = 159
        maxDescriptorSetUpdateAfterBindSamplers              = 80
        maxDescriptorSetUpdateAfterBindUniformBuffers        = 155
        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 155
        maxDescriptorSetUpdateAfterBindStorageBuffers        = 155
        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 155
        maxDescriptorSetUpdateAfterBindSampledImages         = 640
        maxDescriptorSetUpdateAfterBindStorageImages         = 40
        maxDescriptorSetUpdateAfterBindInputAttachments      = 640

VkPhysicalDeviceDriverProperties:
---------------------------------
        driverID        = DRIVER_ID_MOLTENVK
        driverName      = MoltenVK
        driverInfo      = 1.2.6
        conformanceVersion:
                major    = 0
                minor    = 0
                subminor = 0
                patch    = 0

VkPhysicalDeviceExternalMemoryHostPropertiesEXT:
------------------------------------------------
        minImportedHostPointerAlignment = 0x00004000

VkPhysicalDeviceFloatControlsProperties:
----------------------------------------
        denormBehaviorIndependence            = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
        roundingModeIndependence              = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
        shaderSignedZeroInfNanPreserveFloat16 = true
        shaderSignedZeroInfNanPreserveFloat32 = true
        shaderSignedZeroInfNanPreserveFloat64 = false
        shaderDenormPreserveFloat16           = false
        shaderDenormPreserveFloat32           = false
        shaderDenormPreserveFloat64           = false
        shaderDenormFlushToZeroFloat16        = false
        shaderDenormFlushToZeroFloat32        = false
        shaderDenormFlushToZeroFloat64        = false
        shaderRoundingModeRTEFloat16          = false
        shaderRoundingModeRTEFloat32          = false
        shaderRoundingModeRTEFloat64          = false
        shaderRoundingModeRTZFloat16          = false
        shaderRoundingModeRTZFloat32          = false
        shaderRoundingModeRTZFloat64          = false

VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR:
-------------------------------------------------------
        triStripVertexOrderIndependentOfProvokingVertex = false

VkPhysicalDeviceIDProperties:
-----------------------------
        deviceUUID      = 0000106b-0e04-03ef-0000-000000000000
        driverUUID      = 4d564b00-0000-27de-0e04-03ef00000000
        deviceLUID      = 00000001-000008ca
        deviceNodeMask  = 1
        deviceLUIDValid = true

VkPhysicalDeviceInlineUniformBlockPropertiesEXT:
------------------------------------------------
        maxInlineUniformBlockSize                               = 4096
        maxPerStageDescriptorInlineUniformBlocks                = 30
        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 30
        maxDescriptorSetInlineUniformBlocks                     = 120
        maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 120

VkPhysicalDeviceMaintenance3Properties:
---------------------------------------
        maxPerSetDescriptors    = 700
        maxMemoryAllocationSize = 0x200000000

VkPhysicalDeviceMultiviewProperties:
------------------------------------
        maxMultiviewViewCount     = 32
        maxMultiviewInstanceIndex = 134217727

VkPhysicalDevicePointClippingProperties:
----------------------------------------
        pointClippingBehavior = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES

VkPhysicalDevicePortabilitySubsetPropertiesKHR:
-----------------------------------------------
        minVertexInputBindingStrideAlignment = 1

VkPhysicalDeviceProtectedMemoryProperties:
------------------------------------------
        protectedNoFault = false

VkPhysicalDevicePushDescriptorPropertiesKHR:
--------------------------------------------
        maxPushDescriptors = 159

VkPhysicalDeviceRobustness2PropertiesEXT:
-----------------------------------------
        robustStorageBufferAccessSizeAlignment = 0x00000001
        robustUniformBufferAccessSizeAlignment = 0x00000001

VkPhysicalDeviceSampleLocationsPropertiesEXT:
---------------------------------------------
        sampleLocationSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        maxSampleLocationGridSize:
                width  = 1
                height = 1
        sampleLocationCoordinateRange: count = 2
                0
                0.9375
        sampleLocationSubPixelBits       = 4
        variableSampleLocations          = false

VkPhysicalDeviceSamplerFilterMinmaxProperties:
----------------------------------------------
        filterMinmaxSingleComponentFormats = false
        filterMinmaxImageComponentMapping  = false

VkPhysicalDeviceSubgroupProperties:
-----------------------------------
        subgroupSize              = 32
        supportedStages: count = 3
                SHADER_STAGE_TESSELLATION_CONTROL_BIT
                SHADER_STAGE_FRAGMENT_BIT
                SHADER_STAGE_COMPUTE_BIT
        supportedOperations: count = 7
                SUBGROUP_FEATURE_BASIC_BIT
                SUBGROUP_FEATURE_VOTE_BIT
                SUBGROUP_FEATURE_ARITHMETIC_BIT
                SUBGROUP_FEATURE_BALLOT_BIT
                SUBGROUP_FEATURE_SHUFFLE_BIT
                SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
                SUBGROUP_FEATURE_QUAD_BIT
        quadOperationsInAllStages = true

VkPhysicalDeviceSubgroupSizeControlPropertiesEXT:
-------------------------------------------------
        minSubgroupSize              = 4
        maxSubgroupSize              = 32
        maxComputeWorkgroupSubgroups = 256
        requiredSubgroupSizeStages:
                None

VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT:
--------------------------------------------------
        storageTexelBufferOffsetAlignmentBytes       = 0x00000010
        storageTexelBufferOffsetSingleTexelAlignment = false
        uniformTexelBufferOffsetAlignmentBytes       = 0x00000010
        uniformTexelBufferOffsetSingleTexelAlignment = false

VkPhysicalDeviceTimelineSemaphoreProperties:
--------------------------------------------
        maxTimelineSemaphoreValueDifference = 18446744073709551615

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
----------------------------------------------------
        maxVertexAttribDivisor = 1073741824

VkPhysicalDeviceVulkan11Properties:
-----------------------------------
        deviceUUID                        = 0000106b-0e04-03ef-0000-000000000000
        driverUUID                        = 4d564b00-0000-27de-0e04-03ef00000000
        deviceLUID                        = 00000001-000008ca
        deviceNodeMask                    = 1
        deviceLUIDValid                   = true
        subgroupSize                      = 32
        subgroupSupportedStages: count = 3
                SHADER_STAGE_TESSELLATION_CONTROL_BIT
                SHADER_STAGE_FRAGMENT_BIT
                SHADER_STAGE_COMPUTE_BIT
        subgroupSupportedOperations: count = 7
                SUBGROUP_FEATURE_BASIC_BIT
                SUBGROUP_FEATURE_VOTE_BIT
                SUBGROUP_FEATURE_ARITHMETIC_BIT
                SUBGROUP_FEATURE_BALLOT_BIT
                SUBGROUP_FEATURE_SHUFFLE_BIT
                SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
                SUBGROUP_FEATURE_QUAD_BIT
        subgroupQuadOperationsInAllStages = true
        pointClippingBehavior             = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
        maxMultiviewViewCount             = 32
        maxMultiviewInstanceIndex         = 134217727
        protectedNoFault                  = false
        maxPerSetDescriptors              = 700
        maxMemoryAllocationSize           = 0x200000000

VkPhysicalDeviceVulkan12Properties:
-----------------------------------
        driverID                                             = DRIVER_ID_MOLTENVK
        driverName                                           = MoltenVK
        driverInfo                                           = 1.2.6
        conformanceVersion:
                major    = 0
                minor    = 0
                subminor = 0
                patch    = 0
        denormBehaviorIndependence                           = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
        roundingModeIndependence                             = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
        shaderSignedZeroInfNanPreserveFloat16                = true
        shaderSignedZeroInfNanPreserveFloat32                = true
        shaderSignedZeroInfNanPreserveFloat64                = false
        shaderDenormPreserveFloat16                          = false
        shaderDenormPreserveFloat32                          = false
        shaderDenormPreserveFloat64                          = false
        shaderDenormFlushToZeroFloat16                       = false
        shaderDenormFlushToZeroFloat32                       = false
        shaderDenormFlushToZeroFloat64                       = false
        shaderRoundingModeRTEFloat16                         = false
        shaderRoundingModeRTEFloat32                         = false
        shaderRoundingModeRTEFloat64                         = false
        shaderRoundingModeRTZFloat16                         = false
        shaderRoundingModeRTZFloat32                         = false
        shaderRoundingModeRTZFloat64                         = false
        maxUpdateAfterBindDescriptorsInAllPools              = 1073741824
        shaderUniformBufferArrayNonUniformIndexingNative     = false
        shaderSampledImageArrayNonUniformIndexingNative      = true
        shaderStorageBufferArrayNonUniformIndexingNative     = false
        shaderStorageImageArrayNonUniformIndexingNative      = true
        shaderInputAttachmentArrayNonUniformIndexingNative   = true
        robustBufferAccessUpdateAfterBind                    = true
        quadDivergentImplicitLod                             = false
        maxPerStageDescriptorUpdateAfterBindSamplers         = 16
        maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 31
        maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 31
        maxPerStageDescriptorUpdateAfterBindSampledImages    = 128
        maxPerStageDescriptorUpdateAfterBindStorageImages    = 8
        maxPerStageDescriptorUpdateAfterBindInputAttachments = 128
        maxPerStageUpdateAfterBindResources                  = 159
        maxDescriptorSetUpdateAfterBindSamplers              = 80
        maxDescriptorSetUpdateAfterBindUniformBuffers        = 155
        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 155
        maxDescriptorSetUpdateAfterBindStorageBuffers        = 155
        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 155
        maxDescriptorSetUpdateAfterBindSampledImages         = 640
        maxDescriptorSetUpdateAfterBindStorageImages         = 40
        maxDescriptorSetUpdateAfterBindInputAttachments      = 640
        supportedDepthResolveModes: count = 3
                RESOLVE_MODE_SAMPLE_ZERO_BIT
                RESOLVE_MODE_MIN_BIT
                RESOLVE_MODE_MAX_BIT
        supportedStencilResolveModes: count = 1
                RESOLVE_MODE_SAMPLE_ZERO_BIT
        independentResolveNone                               = true
        independentResolve                                   = true
        filterMinmaxSingleComponentFormats                   = false
        filterMinmaxImageComponentMapping                    = false
        maxTimelineSemaphoreValueDifference                  = 18446744073709551615
        framebufferIntegerColorSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT


VkPhysicalDeviceHostImageCopyPropertiesEXT:
-------------------------------------------
        copySrcLayoutCount                  = 0
        pCopySrcLayouts:
        copyDstLayoutCount                  = 0
        pCopyDstLayouts:
        optimalTilingLayoutUUID             = 00000000-0000-0000-0000-000000000000
        identicalMemoryTypeRequirements     = false
Device Extensions: count = 88
        VK_AMD_gpu_shader_half_float              : extension revision 2
        VK_AMD_negative_viewport_height           : extension revision 1
        VK_AMD_shader_image_load_store_lod        : extension revision 1
        VK_AMD_shader_trinary_minmax              : extension revision 1
        VK_EXT_4444_formats                       : extension revision 1
        VK_EXT_buffer_device_address              : extension revision 2
        VK_EXT_calibrated_timestamps              : extension revision 2
        VK_EXT_debug_marker                       : extension revision 4
        VK_EXT_descriptor_indexing                : extension revision 2
        VK_EXT_extended_dynamic_state             : extension revision 1
        VK_EXT_extended_dynamic_state2            : extension revision 1
        VK_EXT_external_memory_host               : extension revision 1
        VK_EXT_fragment_shader_interlock          : extension revision 1
        VK_EXT_hdr_metadata                       : extension revision 2
        VK_EXT_host_query_reset                   : extension revision 1
        VK_EXT_image_robustness                   : extension revision 1
        VK_EXT_inline_uniform_block               : extension revision 1
        VK_EXT_memory_budget                      : extension revision 1
        VK_EXT_metal_objects                      : extension revision 1
        VK_EXT_pipeline_creation_cache_control    : extension revision 3
        VK_EXT_pipeline_creation_feedback         : extension revision 1
        VK_EXT_post_depth_coverage                : extension revision 1
        VK_EXT_private_data                       : extension revision 1
        VK_EXT_robustness2                        : extension revision 1
        VK_EXT_sample_locations                   : extension revision 1
        VK_EXT_scalar_block_layout                : extension revision 1
        VK_EXT_separate_stencil_usage             : extension revision 1
        VK_EXT_shader_atomic_float                : extension revision 1
        VK_EXT_shader_demote_to_helper_invocation : extension revision 1
        VK_EXT_shader_stencil_export              : extension revision 1
        VK_EXT_shader_subgroup_ballot             : extension revision 1
        VK_EXT_shader_subgroup_vote               : extension revision 1
        VK_EXT_shader_viewport_index_layer        : extension revision 1
        VK_EXT_subgroup_size_control              : extension revision 2
        VK_EXT_swapchain_maintenance1             : extension revision 1
        VK_EXT_texel_buffer_alignment             : extension revision 1
        VK_EXT_texture_compression_astc_hdr       : extension revision 1
        VK_EXT_vertex_attribute_divisor           : extension revision 3
        VK_GOOGLE_display_timing                  : extension revision 1
        VK_IMG_format_pvrtc                       : extension revision 1
        VK_INTEL_shader_integer_functions2        : extension revision 1
        VK_KHR_16bit_storage                      : extension revision 1
        VK_KHR_8bit_storage                       : extension revision 1
        VK_KHR_bind_memory2                       : extension revision 1
        VK_KHR_buffer_device_address              : extension revision 1
        VK_KHR_copy_commands2                     : extension revision 1
        VK_KHR_create_renderpass2                 : extension revision 1
        VK_KHR_dedicated_allocation               : extension revision 3
        VK_KHR_deferred_host_operations           : extension revision 4
        VK_KHR_depth_stencil_resolve              : extension revision 1
        VK_KHR_descriptor_update_template         : extension revision 1
        VK_KHR_device_group                       : extension revision 4
        VK_KHR_driver_properties                  : extension revision 1
        VK_KHR_dynamic_rendering                  : extension revision 1
        VK_KHR_external_fence                     : extension revision 1
        VK_KHR_external_memory                    : extension revision 1
        VK_KHR_external_semaphore                 : extension revision 1
        VK_KHR_fragment_shader_barycentric        : extension revision 1
        VK_KHR_get_memory_requirements2           : extension revision 1
        VK_KHR_image_format_list                  : extension revision 1
        VK_KHR_imageless_framebuffer              : extension revision 1
        VK_KHR_incremental_present                : extension revision 2
        VK_KHR_maintenance1                       : extension revision 2
        VK_KHR_maintenance2                       : extension revision 1
        VK_KHR_maintenance3                       : extension revision 1
        VK_KHR_map_memory2                        : extension revision 1
        VK_KHR_multiview                          : extension revision 1
        VK_KHR_portability_subset                 : extension revision 1
        VK_KHR_push_descriptor                    : extension revision 2
        VK_KHR_relaxed_block_layout               : extension revision 1
        VK_KHR_sampler_mirror_clamp_to_edge       : extension revision 3
        VK_KHR_sampler_ycbcr_conversion           : extension revision 14
        VK_KHR_separate_depth_stencil_layouts     : extension revision 1
        VK_KHR_shader_draw_parameters             : extension revision 1
        VK_KHR_shader_float16_int8                : extension revision 1
        VK_KHR_shader_float_controls              : extension revision 4
        VK_KHR_shader_non_semantic_info           : extension revision 1
        VK_KHR_shader_subgroup_extended_types     : extension revision 1
        VK_KHR_spirv_1_4                          : extension revision 1
        VK_KHR_storage_buffer_storage_class       : extension revision 1
        VK_KHR_swapchain                          : extension revision 70
        VK_KHR_swapchain_mutable_format           : extension revision 1
        VK_KHR_synchronization2                   : extension revision 1
        VK_KHR_timeline_semaphore                 : extension revision 2
        VK_KHR_uniform_buffer_standard_layout     : extension revision 1
        VK_KHR_variable_pointers                  : extension revision 1
        VK_NV_fragment_shader_barycentric         : extension revision 1
        VK_NV_glsl_shader                         : extension revision 1

VkQueueFamilyProperties:
========================
        queueProperties[0]:
        -------------------
                minImageTransferGranularity = (1,1,1)
                queueCount                  = 1
                queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
                timestampValidBits          = 64
                present support             = true

        queueProperties[1]:
        -------------------
                minImageTransferGranularity = (1,1,1)
                queueCount                  = 1
                queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
                timestampValidBits          = 64
                present support             = true

        queueProperties[2]:
        -------------------
                minImageTransferGranularity = (1,1,1)
                queueCount                  = 1
                queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
                timestampValidBits          = 64
                present support             = true

        queueProperties[3]:
        -------------------
                minImageTransferGranularity = (1,1,1)
                queueCount                  = 1
                queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
                timestampValidBits          = 64
                present support             = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
        memoryHeaps[0]:
                size   = 17179869184 (0x400000000) (16.00 GiB)
                budget = 11453251584 (0x2aaaac000) (10.67 GiB)
                usage  = 65536 (0x00010000) (64.00 KiB)
                flags: count = 1
                        MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 4
        memoryTypes[0]:
                heapIndex     = 0
                propertyFlags = 0x0001: count = 1
                        MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                usable for:
                        IMAGE_TILING_OPTIMAL:
                                color images
                                FORMAT_D16_UNORM
                                FORMAT_D32_SFLOAT
                                FORMAT_S8_UINT
                                FORMAT_D32_SFLOAT_S8_UINT
                                (non-sparse)
                        IMAGE_TILING_LINEAR:
                                color images
                                (non-sparse)
        memoryTypes[1]:
                heapIndex     = 0
                propertyFlags = 0x000f: count = 4
                        MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                        MEMORY_PROPERTY_HOST_VISIBLE_BIT
                        MEMORY_PROPERTY_HOST_COHERENT_BIT
                        MEMORY_PROPERTY_HOST_CACHED_BIT
                usable for:
                        IMAGE_TILING_OPTIMAL:
                                None
                        IMAGE_TILING_LINEAR:
                                color images
                                (non-sparse)
        memoryTypes[2]:
                heapIndex     = 0
                propertyFlags = 0x000b: count = 3
                        MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                        MEMORY_PROPERTY_HOST_VISIBLE_BIT
                        MEMORY_PROPERTY_HOST_CACHED_BIT
                usable for:
                        IMAGE_TILING_OPTIMAL:
                                color images
                                (non-sparse)
                        IMAGE_TILING_LINEAR:
                                color images
                                (non-sparse)
        memoryTypes[3]:
                heapIndex     = 0
                propertyFlags = 0x0011: count = 2
                        MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                        MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
                usable for:
                        IMAGE_TILING_OPTIMAL:
                                color images
                                FORMAT_D16_UNORM
                                FORMAT_D32_SFLOAT
                                FORMAT_S8_UINT
                                FORMAT_D32_SFLOAT_S8_UINT
                                (transient only)
                        IMAGE_TILING_LINEAR:
                                color images
                                (transient only)

VkPhysicalDeviceFeatures:
=========================
        robustBufferAccess                      = true
        fullDrawIndexUint32                     = true
        imageCubeArray                          = true
        independentBlend                        = true
        geometryShader                          = false
        tessellationShader                      = true
        sampleRateShading                       = true
        dualSrcBlend                            = true
        logicOp                                 = false
        multiDrawIndirect                       = true
        drawIndirectFirstInstance               = true
        depthClamp                              = true
        depthBiasClamp                          = true
        fillModeNonSolid                        = true
        depthBounds                             = false
        wideLines                               = false
        largePoints                             = true
        alphaToOne                              = true
        multiViewport                           = true
        samplerAnisotropy                       = true
        textureCompressionETC2                  = true
        textureCompressionASTC_LDR              = true
        textureCompressionBC                    = true
        occlusionQueryPrecise                   = true
        pipelineStatisticsQuery                 = false
        vertexPipelineStoresAndAtomics          = true
        fragmentStoresAndAtomics                = true
        shaderTessellationAndGeometryPointSize  = true
        shaderImageGatherExtended               = true
        shaderStorageImageExtendedFormats       = true
        shaderStorageImageMultisample           = false
        shaderStorageImageReadWithoutFormat     = true
        shaderStorageImageWriteWithoutFormat    = true
        shaderUniformBufferArrayDynamicIndexing = true
        shaderSampledImageArrayDynamicIndexing  = true
        shaderStorageBufferArrayDynamicIndexing = true
        shaderStorageImageArrayDynamicIndexing  = true
        shaderClipDistance                      = true
        shaderCullDistance                      = false
        shaderFloat64                           = false
        shaderInt64                             = true
        shaderInt16                             = true
        shaderResourceResidency                 = false
        shaderResourceMinLod                    = true
        sparseBinding                           = false
        sparseResidencyBuffer                   = false
        sparseResidencyImage2D                  = false
        sparseResidencyImage3D                  = false
        sparseResidency2Samples                 = false
        sparseResidency4Samples                 = false
        sparseResidency8Samples                 = false
        sparseResidency16Samples                = false
        sparseResidencyAliased                  = false
        variableMultisampleRate                 = false
        inheritedQueries                        = true

VkPhysicalDevice16BitStorageFeatures:
-------------------------------------
        storageBuffer16BitAccess           = true
        uniformAndStorageBuffer16BitAccess = true
        storagePushConstant16              = true
        storageInputOutput16               = true

VkPhysicalDevice4444FormatsFeaturesEXT:
---------------------------------------
        formatA4R4G4B4 = true
        formatA4B4G4R4 = true

VkPhysicalDevice8BitStorageFeatures:
------------------------------------
        storageBuffer8BitAccess           = true
        uniformAndStorageBuffer8BitAccess = true
        storagePushConstant8              = true

VkPhysicalDeviceBufferDeviceAddressFeatures:
--------------------------------------------
        bufferDeviceAddress              = true
        bufferDeviceAddressCaptureReplay = false
        bufferDeviceAddressMultiDevice   = false

VkPhysicalDeviceBufferDeviceAddressFeaturesEXT:
-----------------------------------------------
        bufferDeviceAddress              = true
        bufferDeviceAddressCaptureReplay = false
        bufferDeviceAddressMultiDevice   = false

VkPhysicalDeviceDescriptorIndexingFeatures:
-------------------------------------------
        shaderInputAttachmentArrayDynamicIndexing          = true
        shaderUniformTexelBufferArrayDynamicIndexing       = true
        shaderStorageTexelBufferArrayDynamicIndexing       = true
        shaderUniformBufferArrayNonUniformIndexing         = false
        shaderSampledImageArrayNonUniformIndexing          = true
        shaderStorageBufferArrayNonUniformIndexing         = false
        shaderStorageImageArrayNonUniformIndexing          = true
        shaderInputAttachmentArrayNonUniformIndexing       = true
        shaderUniformTexelBufferArrayNonUniformIndexing    = true
        shaderStorageTexelBufferArrayNonUniformIndexing    = true
        descriptorBindingUniformBufferUpdateAfterBind      = true
        descriptorBindingSampledImageUpdateAfterBind       = true
        descriptorBindingStorageImageUpdateAfterBind       = true
        descriptorBindingStorageBufferUpdateAfterBind      = true
        descriptorBindingUniformTexelBufferUpdateAfterBind = true
        descriptorBindingStorageTexelBufferUpdateAfterBind = true
        descriptorBindingUpdateUnusedWhilePending          = true
        descriptorBindingPartiallyBound                    = true
        descriptorBindingVariableDescriptorCount           = true
        runtimeDescriptorArray                             = true

VkPhysicalDeviceDynamicRenderingFeaturesKHR:
--------------------------------------------
        dynamicRendering = true

VkPhysicalDeviceExtendedDynamicState2FeaturesEXT:
-------------------------------------------------
        extendedDynamicState2                   = true
        extendedDynamicState2LogicOp            = false
        extendedDynamicState2PatchControlPoints = true

VkPhysicalDeviceExtendedDynamicStateFeaturesEXT:
------------------------------------------------
        extendedDynamicState = true

VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR:
-----------------------------------------------------
        fragmentShaderBarycentric = true

VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT:
---------------------------------------------------
        fragmentShaderSampleInterlock      = true
        fragmentShaderPixelInterlock       = true
        fragmentShaderShadingRateInterlock = false

VkPhysicalDeviceHostQueryResetFeatures:
---------------------------------------
        hostQueryReset = true

VkPhysicalDeviceImageRobustnessFeaturesEXT:
-------------------------------------------
        robustImageAccess = true

VkPhysicalDeviceImagelessFramebufferFeatures:
---------------------------------------------
        imagelessFramebuffer = true

VkPhysicalDeviceInlineUniformBlockFeaturesEXT:
----------------------------------------------
        inlineUniformBlock                                 = true
        descriptorBindingInlineUniformBlockUpdateAfterBind = true

VkPhysicalDeviceMultiviewFeatures:
----------------------------------
        multiview                   = true
        multiviewGeometryShader     = false
        multiviewTessellationShader = false

VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT:
--------------------------------------------------------
        pipelineCreationCacheControl = true

VkPhysicalDevicePortabilitySubsetFeaturesKHR:
---------------------------------------------
        constantAlphaColorBlendFactors         = true
        events                                 = true
        imageViewFormatReinterpretation        = true
        imageViewFormatSwizzle                 = true
        imageView2DOn3DImage                   = false
        multisampleArrayImage                  = true
        mutableComparisonSamplers              = true
        pointPolygons                          = false
        samplerMipLodBias                      = false
        separateStencilMaskRef                 = true
        shaderSampleRateInterpolationFunctions = true
        tessellationIsolines                   = false
        tessellationPointMode                  = false
        triangleFans                           = true
        vertexAttributeAccessBeyondStride      = true

VkPhysicalDevicePrivateDataFeaturesEXT:
---------------------------------------
        privateData = true

VkPhysicalDeviceProtectedMemoryFeatures:
----------------------------------------
        protectedMemory = false

VkPhysicalDeviceRobustness2FeaturesEXT:
---------------------------------------
        robustBufferAccess2 = false
        robustImageAccess2  = true
        nullDescriptor      = false

VkPhysicalDeviceSamplerYcbcrConversionFeatures:
-----------------------------------------------
        samplerYcbcrConversion = true

VkPhysicalDeviceScalarBlockLayoutFeatures:
------------------------------------------
        scalarBlockLayout = true

VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures:
----------------------------------------------------
        separateDepthStencilLayouts = true

VkPhysicalDeviceShaderAtomicFloatFeaturesEXT:
---------------------------------------------
        shaderBufferFloat32Atomics   = true
        shaderBufferFloat32AtomicAdd = true
        shaderBufferFloat64Atomics   = false
        shaderBufferFloat64AtomicAdd = false
        shaderSharedFloat32Atomics   = true
        shaderSharedFloat32AtomicAdd = true
        shaderSharedFloat64Atomics   = false
        shaderSharedFloat64AtomicAdd = false
        shaderImageFloat32Atomics    = false
        shaderImageFloat32AtomicAdd  = false
        sparseImageFloat32Atomics    = false
        sparseImageFloat32AtomicAdd  = false

VkPhysicalDeviceShaderAtomicInt64Features:
------------------------------------------
        shaderBufferInt64Atomics = false
        shaderSharedInt64Atomics = false

VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT:
----------------------------------------------------------
        shaderDemoteToHelperInvocation = true

VkPhysicalDeviceShaderDrawParametersFeatures:
---------------------------------------------
        shaderDrawParameters = true

VkPhysicalDeviceShaderFloat16Int8Features:
------------------------------------------
        shaderFloat16 = true
        shaderInt8    = true

VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures:
----------------------------------------------------
        shaderSubgroupExtendedTypes = true

VkPhysicalDeviceSubgroupSizeControlFeaturesEXT:
-----------------------------------------------
        subgroupSizeControl  = true
        computeFullSubgroups = true

VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT:
-------------------------------------------------
        swapchainMaintenance1 = true

VkPhysicalDeviceSynchronization2FeaturesKHR:
--------------------------------------------
        synchronization2 = true

VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT:
------------------------------------------------
        texelBufferAlignment = true

VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT:
-----------------------------------------------------
        textureCompressionASTC_HDR = true

VkPhysicalDeviceTimelineSemaphoreFeatures:
------------------------------------------
        timelineSemaphore = true

VkPhysicalDeviceUniformBufferStandardLayoutFeatures:
----------------------------------------------------
        uniformBufferStandardLayout = true

VkPhysicalDeviceVariablePointersFeatures:
-----------------------------------------
        variablePointersStorageBuffer = true
        variablePointers              = true

VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT:
--------------------------------------------------
        vertexAttributeInstanceRateDivisor     = true
        vertexAttributeInstanceRateZeroDivisor = true

VkPhysicalDeviceVulkan11Features:
---------------------------------
        storageBuffer16BitAccess           = true
        uniformAndStorageBuffer16BitAccess = true
        storagePushConstant16              = true
        storageInputOutput16               = true
        multiview                          = true
        multiviewGeometryShader            = false
        multiviewTessellationShader        = false
        variablePointersStorageBuffer      = true
        variablePointers                   = true
        protectedMemory                    = false
        samplerYcbcrConversion             = true
        shaderDrawParameters               = true

VkPhysicalDeviceVulkan12Features:
---------------------------------
        samplerMirrorClampToEdge                           = true
        drawIndirectCount                                  = false
        storageBuffer8BitAccess                            = true
        uniformAndStorageBuffer8BitAccess                  = true
        storagePushConstant8                               = true
        shaderBufferInt64Atomics                           = false
        shaderSharedInt64Atomics                           = false
        shaderFloat16                                      = true
        shaderInt8                                         = true
        descriptorIndexing                                 = true
        shaderInputAttachmentArrayDynamicIndexing          = true
        shaderUniformTexelBufferArrayDynamicIndexing       = true
        shaderStorageTexelBufferArrayDynamicIndexing       = true
        shaderUniformBufferArrayNonUniformIndexing         = false
        shaderSampledImageArrayNonUniformIndexing          = true
        shaderStorageBufferArrayNonUniformIndexing         = false
        shaderStorageImageArrayNonUniformIndexing          = true
        shaderInputAttachmentArrayNonUniformIndexing       = true
        shaderUniformTexelBufferArrayNonUniformIndexing    = true
        shaderStorageTexelBufferArrayNonUniformIndexing    = true
        descriptorBindingUniformBufferUpdateAfterBind      = true
        descriptorBindingSampledImageUpdateAfterBind       = true
        descriptorBindingStorageImageUpdateAfterBind       = true
        descriptorBindingStorageBufferUpdateAfterBind      = true
        descriptorBindingUniformTexelBufferUpdateAfterBind = true
        descriptorBindingStorageTexelBufferUpdateAfterBind = true
        descriptorBindingUpdateUnusedWhilePending          = true
        descriptorBindingPartiallyBound                    = true
        descriptorBindingVariableDescriptorCount           = true
        runtimeDescriptorArray                             = true
        samplerFilterMinmax                                = false
        scalarBlockLayout                                  = true
        imagelessFramebuffer                               = true
        uniformBufferStandardLayout                        = true
        shaderSubgroupExtendedTypes                        = true
        separateDepthStencilLayouts                        = true
        hostQueryReset                                     = true
        timelineSemaphore                                  = true
        bufferDeviceAddress                                = true
        bufferDeviceAddressCaptureReplay                   = false
        bufferDeviceAddressMultiDevice                     = false
        vulkanMemoryModel                                  = false
        vulkanMemoryModelDeviceScope                       = false
        vulkanMemoryModelAvailabilityVisibilityChains      = false
        shaderOutputViewportIndex                          = true
        shaderOutputLayer                                  = true
        subgroupBroadcastDynamicId                         = true

VkPhysicalDeviceVulkanMemoryModelFeatures:
------------------------------------------
        vulkanMemoryModel                             = false
        vulkanMemoryModelDeviceScope                  = false
        vulkanMemoryModelAvailabilityVisibilityChains = false


@9291Sam
Copy link

9291Sam commented May 7, 2024

I can replicate this too if anyone needs another test machine.

@cwfitzgerald
Copy link
Member Author

It's fixed on trunk, will backport on Wednesday

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: vulkan Issues with Vulkan area: correctness We're behaving incorrectly type: bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants