jgbit / vuda

VUDA is a header-only library based on Vulkan that provides a CUDA Runtime API interface for writing GPU-accelerated applications.
MIT License
867 stars 35 forks source link

OutOfPoolMemoryError on "simple" sample #9

Closed antoniotorresm closed 5 years ago

antoniotorresm commented 5 years ago

I've just tried to run the "simple" sample on my laptop and I'm getting this error:

terminate called after throwing an instance of 'vk::OutOfPoolMemoryError'
  what():  vk::Device::allocateDescriptorSets: ErrorOutOfPoolMemory

Here's the output for vulkaninfo:

==========
VULKANINFO
==========

Vulkan Instance Version: 1.1.126

Instance Extensions: count = 18
====================
    VK_EXT_acquire_xlib_display            : extension revision 1
    VK_EXT_debug_report                    : extension revision 9
    VK_EXT_debug_utils                     : extension revision 1
    VK_EXT_direct_mode_display             : extension revision 1
    VK_EXT_display_surface_counter         : extension revision 1
    VK_KHR_device_group_creation           : extension revision 1
    VK_KHR_display                         : extension revision 23
    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_display_properties2         : extension revision 1
    VK_KHR_get_physical_device_properties2 : extension revision 2
    VK_KHR_get_surface_capabilities2       : extension revision 1
    VK_KHR_surface                         : extension revision 25
    VK_KHR_surface_protected_capabilities  : extension revision 1
    VK_KHR_wayland_surface                 : extension revision 6
    VK_KHR_xcb_surface                     : extension revision 6
    VK_KHR_xlib_surface                    : extension revision 6

Layers: count = 3
=======
VK_LAYER_LUNARG_standard_validation (LunarG Standard Validation Layer) Vulkan version 1.0.126, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 2
        GPU id  : 0 (AMD RADV KABINI (LLVM 9.0.0))
        Layer-Device Extensions: count = 0

        GPU id  : 1 (Unknown AMD GPU)
        Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_overlay_32 (Steam Overlay Layer) Vulkan version 1.0.3, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 2
        GPU id  : 0 (AMD RADV KABINI (LLVM 9.0.0))
        Layer-Device Extensions: count = 0

        GPU id  : 1 (Unknown AMD GPU)
        Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_overlay_64 (Steam Overlay Layer) Vulkan version 1.0.3, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 2
        GPU id  : 0 (AMD RADV KABINI (LLVM 9.0.0))
        Layer-Device Extensions: count = 0

        GPU id  : 1 (Unknown AMD GPU)
        Layer-Device Extensions: count = 0

Presentable Surfaces:
=====================
GPU id : 0 (AMD RADV KABINI (LLVM 9.0.0)):
    Surface types: count = 2
        VK_KHR_xcb_surface
        VK_KHR_xlib_surface
    Formats: count = 2
        SurfaceFormat[0]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
    Present Modes: count = 3
        PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount       = 3
        maxImageCount       = 0
        currentExtent:
            width  = 256
            height = 256
        minImageExtent:
            width  = 256
            height = 256
        maxImageExtent:
            width  = 256
            height = 256
        maxImageArrayLayers = 1
        supportedTransforms:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha:
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
            COMPOSITE_ALPHA_INHERIT_BIT_KHR
        supportedUsageFlags:
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
    VkSurfaceCapabilities2EXT:
    --------------------------
        supportedSurfaceCounters:
            None
    VkSurfaceProtectedCapabilitiesKHR:
    ----------------------------------
        supportsProtected = false

GPU id : 1 (Unknown AMD GPU):
    Surface types: count = 2
        VK_KHR_xcb_surface
        VK_KHR_xlib_surface
    Formats: count = 2
        SurfaceFormat[0]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
    Present Modes: count = 3
        PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount       = 3
        maxImageCount       = 0
        currentExtent:
            width  = 256
            height = 256
        minImageExtent:
            width  = 256
            height = 256
        maxImageExtent:
            width  = 256
            height = 256
        maxImageArrayLayers = 1
        supportedTransforms:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha:
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
            COMPOSITE_ALPHA_INHERIT_BIT_KHR
        supportedUsageFlags:
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
    VkSurfaceCapabilities2EXT:
    --------------------------
        supportedSurfaceCounters:
            None
    VkSurfaceProtectedCapabilitiesKHR:
    ----------------------------------
        supportsProtected = false

GPU id : 0 (AMD RADV KABINI (LLVM 9.0.0)):
    Surface types: count = 2
        VK_KHR_xcb_surface
        VK_KHR_xlib_surface
    Formats: count = 2
        SurfaceFormat[0]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
    Present Modes: count = 3
        PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount       = 2
        maxImageCount       = 16
        currentExtent:
            width  = 256
            height = 256
        minImageExtent:
            width  = 256
            height = 256
        maxImageExtent:
            width  = 256
            height = 256
        maxImageArrayLayers = 1
        supportedTransforms:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha:
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
        supportedUsageFlags:
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
            IMAGE_USAGE_INPUT_ATTACHMENT_BIT
    VkSurfaceCapabilities2EXT:
    --------------------------
        supportedSurfaceCounters:
            None
    VkSurfaceProtectedCapabilitiesKHR:
    ----------------------------------
        supportsProtected = false

GPU id : 1 (Unknown AMD GPU):
    Surface types: count = 2
        VK_KHR_xcb_surface
        VK_KHR_xlib_surface
    Formats: count = 2
        SurfaceFormat[0]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
    Present Modes: count = 3
        PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount       = 2
        maxImageCount       = 16
        currentExtent:
            width  = 256
            height = 256
        minImageExtent:
            width  = 256
            height = 256
        maxImageExtent:
            width  = 256
            height = 256
        maxImageArrayLayers = 1
        supportedTransforms:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform:
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha:
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
        supportedUsageFlags:
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
            IMAGE_USAGE_INPUT_ATTACHMENT_BIT
    VkSurfaceCapabilities2EXT:
    --------------------------
        supportedSurfaceCounters:
            None
    VkSurfaceProtectedCapabilitiesKHR:
    ----------------------------------
        supportsProtected = false

Groups:
=======
    Device Group Properties (Group 0):
        physicalDeviceCount: count = 1
            AMD RADV KABINI (LLVM 9.0.0) (ID: 0)
        subsetAllocation = 0

    Device Group Present Capabilities (Group 0):
        AMD RADV KABINI (LLVM 9.0.0) (ID: 0)
        Can present images from the following devices:
            AMD RADV KABINI (LLVM 9.0.0) (ID: 0)
        Present modes:
            DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR

    Device Group Properties (Group 1):
        physicalDeviceCount: count = 1
            Unknown AMD GPU (ID: 0)
        subsetAllocation = 0

    Device Group Present Capabilities (Group 1):
        Unknown AMD GPU (ID: 0)
        Can present images from the following devices:
            Unknown AMD GPU (ID: 0)
        Present modes:
            DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR

Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
    apiVersion     = 4198507 (1.1.107)
    driverVersion  = 79699971 (0x4c02003)
    vendorID       = 0x1002
    deviceID       = 0x9851
    deviceType     = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
    deviceName     = AMD RADV KABINI (LLVM 9.0.0)

VkPhysicalDeviceLimits:
-----------------------
    maxImageDimension1D                             = 16384
    maxImageDimension2D                             = 16384
    maxImageDimension3D                             = 2048
    maxImageDimensionCube                           = 16384
    maxImageArrayLayers                             = 2048
    maxTexelBufferElements                          = 134217728
    maxUniformBufferRange                           = 4294967295
    maxStorageBufferRange                           = 4294967295
    maxPushConstantsSize                            = 128
    maxMemoryAllocationCount                        = 4294967295
    maxSamplerAllocationCount                       = 65536
    bufferImageGranularity                          = 0x00000040
    sparseAddressSpaceSize                          = 0xffffffff
    maxBoundDescriptorSets                          = 32
    maxPerStageDescriptorSamplers                   = 9586978
    maxPerStageDescriptorUniformBuffers             = 9586978
    maxPerStageDescriptorStorageBuffers             = 9586978
    maxPerStageDescriptorSampledImages              = 9586978
    maxPerStageDescriptorStorageImages              = 9586978
    maxPerStageDescriptorInputAttachments           = 9586978
    maxPerStageResources                            = 9586978
    maxDescriptorSetSamplers                        = 9586978
    maxDescriptorSetUniformBuffers                  = 9586978
    maxDescriptorSetUniformBuffersDynamic           = 16
    maxDescriptorSetStorageBuffers                  = 9586978
    maxDescriptorSetStorageBuffersDynamic           = 8
    maxDescriptorSetSampledImages                   = 9586978
    maxDescriptorSetStorageImages                   = 9586978
    maxDescriptorSetInputAttachments                = 9586978
    maxVertexInputAttributes                        = 32
    maxVertexInputBindings                          = 32
    maxVertexInputAttributeOffset                   = 2047
    maxVertexInputBindingStride                     = 2048
    maxVertexOutputComponents                       = 128
    maxTessellationGenerationLevel                  = 64
    maxTessellationPatchSize                        = 32
    maxTessellationControlPerVertexInputComponents  = 128
    maxTessellationControlPerVertexOutputComponents = 128
    maxTessellationControlPerPatchOutputComponents  = 120
    maxTessellationControlTotalOutputComponents     = 4096
    maxTessellationEvaluationInputComponents        = 128
    maxTessellationEvaluationOutputComponents       = 128
    maxGeometryShaderInvocations                    = 127
    maxGeometryInputComponents                      = 64
    maxGeometryOutputComponents                     = 128
    maxGeometryOutputVertices                       = 256
    maxGeometryTotalOutputComponents                = 1024
    maxFragmentInputComponents                      = 128
    maxFragmentOutputAttachments                    = 8
    maxFragmentDualSrcAttachments                   = 1
    maxFragmentCombinedOutputResources              = 8
    maxComputeSharedMemorySize                      = 32768
    maxComputeWorkGroupCount: count = 3
        65535
        65535
        65535
    maxComputeWorkGroupInvocations                  = 2048
    maxComputeWorkGroupSize: count = 3
        2048
        2048
        2048
    subPixelPrecisionBits                           = 8
    subTexelPrecisionBits                           = 8
    mipmapPrecisionBits                             = 8
    maxDrawIndexedIndexValue                        = 4294967295
    maxDrawIndirectCount                            = 4294967295
    maxSamplerLodBias                               = 16
    maxSamplerAnisotropy                            = 16
    maxViewports                                    = 16
    maxViewportDimensions: count = 2
        16384
        16384
    viewportBoundsRange: count = 2
        -32768
        32767
    viewportSubPixelBits                            = 8
    minMemoryMapAlignment                           = 4096
    minTexelBufferOffsetAlignment                   = 0x00000004
    minUniformBufferOffsetAlignment                 = 0x00000004
    minStorageBufferOffsetAlignment                 = 0x00000004
    minTexelOffset                                  = -32
    maxTexelOffset                                  = 31
    minTexelGatherOffset                            = -32
    maxTexelGatherOffset                            = 31
    minInterpolationOffset                          = -2
    maxInterpolationOffset                          = 2
    subPixelInterpolationOffsetBits                 = 8
    maxFramebufferWidth                             = 16384
    maxFramebufferHeight                            = 16384
    maxFramebufferLayers                            = 1024
    framebufferColorSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    framebufferDepthSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    framebufferStencilSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    framebufferNoAttachmentsSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    maxColorAttachments                             = 8
    sampledImageColorSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    sampledImageIntegerSampleCounts:
        SAMPLE_COUNT_1_BIT
    sampledImageDepthSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    sampledImageStencilSampleCounts:
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    storageImageSampleCounts:
        SAMPLE_COUNT_1_BIT
    maxSampleMaskWords                              = 1
    timestampComputeAndGraphics                     = true
    timestampPeriod                                 = 20.8333
    maxClipDistances                                = 8
    maxCullDistances                                = 8
    maxCombinedClipAndCullDistances                 = 8
    discreteQueuePriorities                         = 2
    pointSizeRange: count = 2
        0
        8192
    lineWidthRange: count = 2
        0
        7.99219
    pointSizeGranularity                            = 0.125
    lineWidthGranularity                            = 0.0078125
    strictLines                                     = false
    standardSampleLocations                         = true
    optimalBufferCopyOffsetAlignment                = 0x00000080
    optimalBufferCopyRowPitchAlignment              = 0x00000080
    nonCoherentAtomSize                             = 0x00000040

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

VkPhysicalDeviceDepthStencilResolvePropertiesKHR:
-------------------------------------------------
    supportedDepthResolveModes:
        RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR
        RESOLVE_MODE_AVERAGE_BIT_KHR
        RESOLVE_MODE_MIN_BIT_KHR
        RESOLVE_MODE_MAX_BIT_KHR
    supportedStencilResolveModes:
        RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR
        RESOLVE_MODE_MIN_BIT_KHR
        RESOLVE_MODE_MAX_BIT_KHR
    independentResolveNone = true
    independentResolve     = true

VkPhysicalDeviceDescriptorIndexingPropertiesEXT:
------------------------------------------------
    maxUpdateAfterBindDescriptorsInAllPools              = 67108863
    shaderUniformBufferArrayNonUniformIndexingNative     = false
    shaderSampledImageArrayNonUniformIndexingNative      = false
    shaderStorageBufferArrayNonUniformIndexingNative     = false
    shaderStorageImageArrayNonUniformIndexingNative      = false
    shaderInputAttachmentArrayNonUniformIndexingNative   = false
    robustBufferAccessUpdateAfterBind                    = false
    quadDivergentImplicitLod                             = false
    maxPerStageDescriptorUpdateAfterBindSamplers         = 8388606
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 8388606
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 8388606
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 8388606
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 8388606
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 8388606
    maxPerStageUpdateAfterBindResources                  = 8388606
    maxDescriptorSetUpdateAfterBindSamplers              = 8388606
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 8388606
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 16
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 8388606
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 8
    maxDescriptorSetUpdateAfterBindSampledImages         = 8388606
    maxDescriptorSetUpdateAfterBindStorageImages         = 8388606
    maxDescriptorSetUpdateAfterBindInputAttachments      = 8388606

VkPhysicalDeviceDiscardRectanglePropertiesEXT:
----------------------------------------------
    maxDiscardRectangles = 4

VkPhysicalDeviceDriverPropertiesKHR:
------------------------------------
    driverID           = DRIVER_ID_MESA_RADV_KHR
    driverName         = radv
    driverInfo         = Mesa 19.2.3 (LLVM 9.0.0)
    conformanceVersion = 1.1.2.0

VkPhysicalDeviceExternalMemoryHostPropertiesEXT:
------------------------------------------------
    minImportedHostPointerAlignment = 0x00001000

VkPhysicalDeviceIDProperties:
-----------------------------
    deviceUUID      =  0000-00-00-10-000000
    driverUUID      = 414d442d-4d45-5341-2d44-52560000
    deviceNodeMask  = 0
    deviceLUIDValid = false

VkPhysicalDeviceInlineUniformBlockPropertiesEXT:
------------------------------------------------
    maxInlineUniformBlockSize                               = 4194304
    maxPerStageDescriptorInlineUniformBlocks                = 134217728
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 134217728
    maxDescriptorSetInlineUniformBlocks                     = 64
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 64

VkPhysicalDeviceMaintenance3Properties:
---------------------------------------
    maxPerSetDescriptors    = 22369621
    maxMemoryAllocationSize = 0xffffffff

VkPhysicalDeviceMultiviewProperties:
------------------------------------
    maxMultiviewViewCount     = 8
    maxMultiviewInstanceIndex = 2147483647

VkPhysicalDevicePCIBusInfoPropertiesEXT:
----------------------------------------
    pciDomain   = 0
    pciBus      = 0
    pciDevice   = 1
    pciFunction = 0

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

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

VkPhysicalDevicePushDescriptorPropertiesKHR:
--------------------------------------------
    maxPushDescriptors = 32

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

VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT:
-------------------------------------------------
    filterMinmaxSingleComponentFormats = true
    filterMinmaxImageComponentMapping  = false

VkPhysicalDeviceSubgroupProperties:
-----------------------------------
    subgroupSize              = 64
    supportedStages:
        SHADER_STAGE_VERTEX_BIT
        SHADER_STAGE_TESSELLATION_CONTROL_BIT
        SHADER_STAGE_TESSELLATION_EVALUATION_BIT
        SHADER_STAGE_GEOMETRY_BIT
        SHADER_STAGE_FRAGMENT_BIT
        SHADER_STAGE_COMPUTE_BIT
        SHADER_STAGE_ALL_GRAPHICS
        SHADER_STAGE_ALL
        SHADER_STAGE_RAYGEN_BIT_NV
        SHADER_STAGE_ANY_HIT_BIT_NV
        SHADER_STAGE_CLOSEST_HIT_BIT_NV
        SHADER_STAGE_MISS_BIT_NV
        SHADER_STAGE_INTERSECTION_BIT_NV
        SHADER_STAGE_CALLABLE_BIT_NV
        SHADER_STAGE_TASK_BIT_NV
        SHADER_STAGE_MESH_BIT_NV
    supportedOperations:
        SUBGROUP_FEATURE_BASIC_BIT
        SUBGROUP_FEATURE_VOTE_BIT
        SUBGROUP_FEATURE_BALLOT_BIT
        SUBGROUP_FEATURE_QUAD_BIT
    quadOperationsInAllStages = true

VkPhysicalDeviceTransformFeedbackPropertiesEXT:
-----------------------------------------------
    maxTransformFeedbackStreams                = 4
    maxTransformFeedbackBuffers                = 4
    maxTransformFeedbackBufferSize             = 0xffffffff
    maxTransformFeedbackStreamDataSize         = 512
    maxTransformFeedbackBufferDataSize         = 4294967295
    maxTransformFeedbackBufferDataStride       = 512
    transformFeedbackQueries                   = true
    transformFeedbackStreamsLinesTriangles     = true
    transformFeedbackRasterizationStreamSelect = false
    transformFeedbackDraw                      = true

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
----------------------------------------------------
    maxVertexAttribDivisor = 4294967295

Device Extensions: count = 71
    VK_AMD_buffer_marker                  : extension revision 1
    VK_AMD_draw_indirect_count            : extension revision 1
    VK_AMD_gcn_shader                     : extension revision 1
    VK_AMD_shader_core_properties         : extension revision 1
    VK_AMD_shader_info                    : extension revision 1
    VK_AMD_shader_trinary_minmax          : extension revision 1
    VK_EXT_buffer_device_address          : extension revision 1
    VK_EXT_calibrated_timestamps          : extension revision 1
    VK_EXT_conditional_rendering          : extension revision 1
    VK_EXT_depth_clip_enable              : extension revision 1
    VK_EXT_depth_range_unrestricted       : extension revision 1
    VK_EXT_descriptor_indexing            : extension revision 2
    VK_EXT_discard_rectangles             : extension revision 1
    VK_EXT_display_control                : extension revision 1
    VK_EXT_external_memory_dma_buf        : extension revision 1
    VK_EXT_external_memory_host           : extension revision 1
    VK_EXT_global_priority                : extension revision 1
    VK_EXT_host_query_reset               : extension revision 1
    VK_EXT_inline_uniform_block           : extension revision 1
    VK_EXT_memory_budget                  : extension revision 1
    VK_EXT_memory_priority                : extension revision 1
    VK_EXT_pci_bus_info                   : extension revision 2
    VK_EXT_pipeline_creation_feedback     : extension revision 1
    VK_EXT_queue_family_foreign           : extension revision 1
    VK_EXT_sample_locations               : extension revision 1
    VK_EXT_sampler_filter_minmax          : extension revision 1
    VK_EXT_scalar_block_layout            : 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_transform_feedback             : extension revision 1
    VK_EXT_vertex_attribute_divisor       : extension revision 3
    VK_EXT_ycbcr_image_arrays             : extension revision 1
    VK_GOOGLE_decorate_string             : extension revision 1
    VK_GOOGLE_hlsl_functionality1         : extension revision 1
    VK_KHR_16bit_storage                  : extension revision 1
    VK_KHR_bind_memory2                   : extension revision 1
    VK_KHR_create_renderpass2             : extension revision 1
    VK_KHR_dedicated_allocation           : extension revision 1
    VK_KHR_depth_stencil_resolve          : extension revision 1
    VK_KHR_descriptor_update_template     : extension revision 1
    VK_KHR_device_group                   : extension revision 1
    VK_KHR_draw_indirect_count            : extension revision 1
    VK_KHR_driver_properties              : extension revision 1
    VK_KHR_external_fence                 : extension revision 1
    VK_KHR_external_fence_fd              : extension revision 1
    VK_KHR_external_memory                : extension revision 1
    VK_KHR_external_memory_fd             : extension revision 1
    VK_KHR_external_semaphore             : extension revision 1
    VK_KHR_external_semaphore_fd          : 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 1
    VK_KHR_maintenance1                   : extension revision 1
    VK_KHR_maintenance2                   : extension revision 1
    VK_KHR_maintenance3                   : extension revision 1
    VK_KHR_multiview                      : extension revision 1
    VK_KHR_pipeline_executable_properties : extension revision 1
    VK_KHR_push_descriptor                : extension revision 1
    VK_KHR_relaxed_block_layout           : extension revision 1
    VK_KHR_sampler_mirror_clamp_to_edge   : extension revision 1
    VK_KHR_sampler_ycbcr_conversion       : extension revision 1
    VK_KHR_shader_atomic_int64            : extension revision 1
    VK_KHR_shader_draw_parameters         : extension revision 1
    VK_KHR_shader_float16_int8            : extension revision 1
    VK_KHR_storage_buffer_storage_class   : extension revision 1
    VK_KHR_swapchain                      : extension revision 68
    VK_KHR_uniform_buffer_standard_layout : extension revision 1
    VK_KHR_variable_pointers              : extension revision 1

VkQueueFamilyProperties[0]:
==========================
    minImageTransferGranularity = (1, 1, 1)
    queueCount                  = 1
    queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
    timestampValidBits          = 64
    present support:
        VK_KHR_xcb_surface  = true
        VK_KHR_xlib_surface = true

VkQueueFamilyProperties[1]:
==========================
    minImageTransferGranularity = (1, 1, 1)
    queueCount                  = 4
    queueFlags                  = QUEUE_COMPUTE | QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
    timestampValidBits          = 64
    present support:
        VK_KHR_xcb_surface  = true
        VK_KHR_xlib_surface = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 2
    memoryHeaps[0]:
        size   = 1073741824 (0x40000000) (1024.00 MiB)
        budget = 974553088
        usage  = 0
        flags:
            MEMORY_HEAP_DEVICE_LOCAL_BIT
    memoryHeaps[1]:
        size   = 3221225472 (0xc0000000) (3.00 GiB)
        budget = 3205656576
        usage  = 0
        flags:
            MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 3
    memoryTypes[0]:
        heapIndex     = 0
        propertyFlags = 0x0007:
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images
    memoryTypes[1]:
        heapIndex     = 1
        propertyFlags = 0x0007:
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images
    memoryTypes[2]:
        heapIndex     = 1
        propertyFlags = 0x000f:
            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: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images

VkPhysicalDeviceFeatures:
=========================
    robustBufferAccess                      = true
    fullDrawIndexUint32                     = true
    imageCubeArray                          = true
    independentBlend                        = true
    geometryShader                          = true
    tessellationShader                      = true
    sampleRateShading                       = true
    dualSrcBlend                            = true
    logicOp                                 = true
    multiDrawIndirect                       = true
    drawIndirectFirstInstance               = true
    depthClamp                              = true
    depthBiasClamp                          = true
    fillModeNonSolid                        = true
    depthBounds                             = true
    wideLines                               = true
    largePoints                             = true
    alphaToOne                              = true
    multiViewport                           = true
    samplerAnisotropy                       = true
    textureCompressionETC2                  = false
    textureCompressionASTC_LDR              = false
    textureCompressionBC                    = true
    occlusionQueryPrecise                   = true
    pipelineStatisticsQuery                 = true
    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                      = true
    shaderFloat64                           = true
    shaderInt64                             = true
    shaderInt16                             = false
    shaderResourceResidency                 = false
    shaderResourceMinLod                    = false
    sparseBinding                           = true
    sparseResidencyBuffer                   = false
    sparseResidencyImage2D                  = false
    sparseResidencyImage3D                  = false
    sparseResidency2Samples                 = false
    sparseResidency4Samples                 = false
    sparseResidency8Samples                 = false
    sparseResidency16Samples                = false
    sparseResidencyAliased                  = false
    variableMultisampleRate                 = true
    inheritedQueries                        = true

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

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

VkPhysicalDeviceConditionalRenderingFeaturesEXT:
------------------------------------------------
    conditionalRendering          = true
    inheritedConditionalRendering = false

VkPhysicalDeviceDepthClipEnableFeaturesEXT:
-------------------------------------------
    depthClipEnable = true

VkPhysicalDeviceDescriptorIndexingFeaturesEXT:
----------------------------------------------
    shaderInputAttachmentArrayDynamicIndexing          = true
    shaderUniformTexelBufferArrayDynamicIndexing       = true
    shaderStorageTexelBufferArrayDynamicIndexing       = true
    shaderUniformBufferArrayNonUniformIndexing         = true
    shaderSampledImageArrayNonUniformIndexing          = true
    shaderStorageBufferArrayNonUniformIndexing         = true
    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

VkPhysicalDeviceHostQueryResetFeaturesEXT:
------------------------------------------
    hostQueryReset = true

VkPhysicalDeviceImagelessFramebufferFeaturesKHR:
------------------------------------------------
    imagelessFramebuffer = true

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

VkPhysicalDeviceMemoryPriorityFeaturesEXT:
------------------------------------------
    memoryPriority = true

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

VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR:
--------------------------------------------------------
    pipelineExecutableInfo = true

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

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

VkPhysicalDeviceScalarBlockLayoutFeaturesEXT:
---------------------------------------------
    scalarBlockLayout = true

VkPhysicalDeviceShaderAtomicInt64FeaturesKHR:
---------------------------------------------
    shaderBufferInt64Atomics = true
    shaderSharedInt64Atomics = true

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

VkPhysicalDeviceShaderFloat16Int8FeaturesKHR:
---------------------------------------------
    shaderFloat16 = false
    shaderInt8    = true

VkPhysicalDeviceTransformFeedbackFeaturesEXT:
---------------------------------------------
    transformFeedback = true
    geometryStreams   = true

VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR:
-------------------------------------------------------
    uniformBufferStandardLayout = true

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

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

VkPhysicalDeviceYcbcrImageArraysFeaturesEXT:
--------------------------------------------
    ycbcrImageArrays = true

GPU1:
VkPhysicalDeviceProperties:
---------------------------
    apiVersion     = 4198521 (1.1.121)
    driverVersion  = 8388723 (0x800073)
    vendorID       = 0x1002
    deviceID       = 0x9851
    deviceType     = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
    deviceName     = Unknown AMD GPU

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

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

VkPhysicalDeviceDepthStencilResolvePropertiesKHR:
-------------------------------------------------
    supportedDepthResolveModes:
        RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR
        RESOLVE_MODE_MIN_BIT_KHR
        RESOLVE_MODE_MAX_BIT_KHR
    supportedStencilResolveModes:
        RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR
        RESOLVE_MODE_MIN_BIT_KHR
        RESOLVE_MODE_MAX_BIT_KHR
    independentResolveNone = true
    independentResolve     = true

VkPhysicalDeviceDescriptorIndexingPropertiesEXT:
------------------------------------------------
    maxUpdateAfterBindDescriptorsInAllPools              = 4294967295
    shaderUniformBufferArrayNonUniformIndexingNative     = false
    shaderSampledImageArrayNonUniformIndexingNative      = false
    shaderStorageBufferArrayNonUniformIndexingNative     = false
    shaderStorageImageArrayNonUniformIndexingNative      = false
    shaderInputAttachmentArrayNonUniformIndexingNative   = false
    robustBufferAccessUpdateAfterBind                    = false
    quadDivergentImplicitLod                             = false
    maxPerStageDescriptorUpdateAfterBindSamplers         = 4294967295
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 4294967295
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 4294967295
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 4294967295
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 4294967295
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 4294967295
    maxPerStageUpdateAfterBindResources                  = 4294967295
    maxDescriptorSetUpdateAfterBindSamplers              = 4294967295
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 4294967295
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 8
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 4294967295
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 8
    maxDescriptorSetUpdateAfterBindSampledImages         = 4294967295
    maxDescriptorSetUpdateAfterBindStorageImages         = 4294967295
    maxDescriptorSetUpdateAfterBindInputAttachments      = 4294967295

VkPhysicalDeviceDriverPropertiesKHR:
------------------------------------
    driverID           = DRIVER_ID_AMD_OPEN_SOURCE_KHR
    driverName         = AMD open-source driver
    driverInfo         = 
    conformanceVersion = 1.1.2.3

VkPhysicalDeviceExternalMemoryHostPropertiesEXT:
------------------------------------------------
    minImportedHostPointerAlignment = 0x00001000

VkPhysicalDeviceIDProperties:
-----------------------------
    deviceUUID      =  0000-10-00-00-000000
    driverUUID      = 414d442d-4c49-4e55-582d-445256000
    deviceNodeMask  = 1
    deviceLUIDValid = false

VkPhysicalDeviceInlineUniformBlockPropertiesEXT:
------------------------------------------------
    maxInlineUniformBlockSize                               = 65536
    maxPerStageDescriptorInlineUniformBlocks                = 16
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 16
    maxDescriptorSetInlineUniformBlocks                     = 16
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 16

VkPhysicalDeviceLineRasterizationPropertiesEXT:
-----------------------------------------------
    lineSubPixelPrecisionBits = 4

VkPhysicalDeviceMaintenance3Properties:
---------------------------------------
    maxPerSetDescriptors    = 4294967295
    maxMemoryAllocationSize = 0x80000000

VkPhysicalDeviceMultiviewProperties:
------------------------------------
    maxMultiviewViewCount     = 6
    maxMultiviewInstanceIndex = 4294967295

VkPhysicalDevicePCIBusInfoPropertiesEXT:
----------------------------------------
    pciDomain   = 0
    pciBus      = 0
    pciDevice   = 1
    pciFunction = 0

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

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

VkPhysicalDeviceSampleLocationsPropertiesEXT:
---------------------------------------------
    sampleLocationSampleCounts:
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    maxSampleLocationGridSize:
        width  = 2
        height = 2
    sampleLocationCoordinateRange: count = 2
        0
        1
    sampleLocationSubPixelBits       = 4
    variableSampleLocations          = true

VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT:
-------------------------------------------------
    filterMinmaxSingleComponentFormats = true
    filterMinmaxImageComponentMapping  = false

VkPhysicalDeviceSubgroupProperties:
-----------------------------------
    subgroupSize              = 64
    supportedStages:
        SHADER_STAGE_VERTEX_BIT
        SHADER_STAGE_TESSELLATION_CONTROL_BIT
        SHADER_STAGE_TESSELLATION_EVALUATION_BIT
        SHADER_STAGE_GEOMETRY_BIT
        SHADER_STAGE_FRAGMENT_BIT
        SHADER_STAGE_COMPUTE_BIT
        SHADER_STAGE_ALL_GRAPHICS
        SHADER_STAGE_ALL
    supportedOperations:
        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              = 64
    maxSubgroupSize              = 64
    maxComputeWorkgroupSubgroups = 4294967295
    requiredSubgroupSizeStages:
        None

VkPhysicalDeviceTransformFeedbackPropertiesEXT:
-----------------------------------------------
    maxTransformFeedbackStreams                = 4
    maxTransformFeedbackBuffers                = 4
    maxTransformFeedbackBufferSize             = 0xffffffff
    maxTransformFeedbackStreamDataSize         = 512
    maxTransformFeedbackBufferDataSize         = 512
    maxTransformFeedbackBufferDataStride       = 512
    transformFeedbackQueries                   = true
    transformFeedbackStreamsLinesTriangles     = true
    transformFeedbackRasterizationStreamSelect = false
    transformFeedbackDraw                      = true

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
----------------------------------------------------
    maxVertexAttribDivisor = 4294967295

Device Extensions: count = 77
    VK_AMD_buffer_marker                    : extension revision 1
    VK_AMD_draw_indirect_count              : extension revision 2
    VK_AMD_gcn_shader                       : extension revision 1
    VK_AMD_gpa_interface                    : extension revision 1
    VK_AMD_memory_overallocation_behavior   : extension revision 1
    VK_AMD_mixed_attachment_samples         : extension revision 1
    VK_AMD_negative_viewport_height         : extension revision 1
    VK_AMD_shader_ballot                    : extension revision 1
    VK_AMD_shader_core_properties           : extension revision 2
    VK_AMD_shader_core_properties2          : extension revision 1
    VK_AMD_shader_explicit_vertex_parameter : extension revision 1
    VK_AMD_shader_fragment_mask             : extension revision 1
    VK_AMD_shader_image_load_store_lod      : extension revision 1
    VK_AMD_shader_info                      : extension revision 1
    VK_AMD_shader_trinary_minmax            : extension revision 1
    VK_AMD_texture_gather_bias_lod          : extension revision 1
    VK_EXT_calibrated_timestamps            : extension revision 1
    VK_EXT_depth_clip_enable                : extension revision 1
    VK_EXT_depth_range_unrestricted         : extension revision 1
    VK_EXT_descriptor_indexing              : extension revision 2
    VK_EXT_external_memory_host             : extension revision 1
    VK_EXT_global_priority                  : extension revision 2
    VK_EXT_hdr_metadata                     : extension revision 2
    VK_EXT_host_query_reset                 : extension revision 1
    VK_EXT_inline_uniform_block             : extension revision 1
    VK_EXT_line_rasterization               : extension revision 1
    VK_EXT_memory_budget                    : extension revision 1
    VK_EXT_memory_priority                  : extension revision 1
    VK_EXT_pci_bus_info                     : extension revision 2
    VK_EXT_queue_family_foreign             : extension revision 1
    VK_EXT_sample_locations                 : extension revision 1
    VK_EXT_sampler_filter_minmax            : extension revision 2
    VK_EXT_scalar_block_layout              : extension revision 1
    VK_EXT_separate_stencil_usage           : 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_transform_feedback               : extension revision 1
    VK_EXT_vertex_attribute_divisor         : extension revision 3
    VK_GOOGLE_decorate_string               : extension revision 1
    VK_GOOGLE_hlsl_functionality1           : 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_create_renderpass2               : extension revision 1
    VK_KHR_dedicated_allocation             : extension revision 3
    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_draw_indirect_count              : extension revision 1
    VK_KHR_driver_properties                : extension revision 1
    VK_KHR_external_fence                   : extension revision 1
    VK_KHR_external_fence_fd                : extension revision 1
    VK_KHR_external_memory                  : extension revision 1
    VK_KHR_external_memory_fd               : extension revision 1
    VK_KHR_external_semaphore               : extension revision 1
    VK_KHR_external_semaphore_fd            : 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_maintenance1                     : extension revision 2
    VK_KHR_maintenance2                     : extension revision 1
    VK_KHR_maintenance3                     : extension revision 1
    VK_KHR_multiview                        : extension revision 1
    VK_KHR_relaxed_block_layout             : extension revision 1
    VK_KHR_sampler_mirror_clamp_to_edge     : extension revision 3
    VK_KHR_shader_atomic_int64              : extension revision 1
    VK_KHR_shader_draw_parameters           : extension revision 1
    VK_KHR_shader_float16_int8              : 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_uniform_buffer_standard_layout   : extension revision 1
    VK_KHR_variable_pointers                : extension revision 1
    VK_KHR_vulkan_memory_model              : extension revision 3

VkQueueFamilyProperties[0]:
==========================
    minImageTransferGranularity = (1, 1, 1)
    queueCount                  = 1
    queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
    timestampValidBits          = 64
    present support:
        VK_KHR_xcb_surface  = true
        VK_KHR_xlib_surface = true

VkQueueFamilyProperties[1]:
==========================
    minImageTransferGranularity = (1, 1, 1)
    queueCount                  = 4
    queueFlags                  = QUEUE_COMPUTE | QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
    timestampValidBits          = 64
    present support:
        VK_KHR_xcb_surface  = true
        VK_KHR_xlib_surface = true

VkQueueFamilyProperties[2]:
==========================
    minImageTransferGranularity = (8, 8, 8)
    queueCount                  = 2
    queueFlags                  = QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
    timestampValidBits          = 64
    present support:
        VK_KHR_xcb_surface  = true
        VK_KHR_xlib_surface = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 2
    memoryHeaps[0]:
        size   = 3221225472 (0xc0000000) (3.00 GiB)
        budget = 3060164096
        usage  = 0
        flags:
            None
    memoryHeaps[1]:
        size   = 1073741824 (0x40000000) (1024.00 MiB)
        budget = 1020054720
        usage  = 0
        flags:
            MEMORY_HEAP_DEVICE_LOCAL_BIT
            MEMORY_HEAP_MULTI_INSTANCE_BIT
memoryTypes: count = 4
    memoryTypes[0]:
        heapIndex     = 1
        propertyFlags = 0x0001:
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
        usable for:
            IMAGE_TILING_OPTIMAL: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images
    memoryTypes[1]:
        heapIndex     = 0
        propertyFlags = 0x0006:
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images
    memoryTypes[2]:
        heapIndex     = 1
        propertyFlags = 0x0007:
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images
    memoryTypes[3]:
        heapIndex     = 0
        propertyFlags = 0x000e:
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
            MEMORY_PROPERTY_HOST_CACHED_BIT
        usable for:
            IMAGE_TILING_OPTIMAL: color images, FORMAT_D16_UNORM, FORMAT_D32_SFLOAT, FORMAT_S8_UINT, FORMAT_D16_UNORM_S8_UINT, FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR: color images

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

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

VkPhysicalDevice8BitStorageFeaturesKHR:
---------------------------------------
    storageBuffer8BitAccess           = true
    uniformAndStorageBuffer8BitAccess = true
    storagePushConstant8              = false

VkPhysicalDeviceDepthClipEnableFeaturesEXT:
-------------------------------------------
    depthClipEnable = true

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

VkPhysicalDeviceHostQueryResetFeaturesEXT:
------------------------------------------
    hostQueryReset = true

VkPhysicalDeviceImagelessFramebufferFeaturesKHR:
------------------------------------------------
    imagelessFramebuffer = true

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

VkPhysicalDeviceLineRasterizationFeaturesEXT:
---------------------------------------------
    rectangularLines         = false
    bresenhamLines           = true
    smoothLines              = false
    stippledRectangularLines = false
    stippledBresenhamLines   = true
    stippledSmoothLines      = false

VkPhysicalDeviceMemoryPriorityFeaturesEXT:
------------------------------------------
    memoryPriority = true

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

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

VkPhysicalDeviceSamplerYcbcrConversionFeatures:
-----------------------------------------------
    samplerYcbcrConversion = false

VkPhysicalDeviceScalarBlockLayoutFeaturesEXT:
---------------------------------------------
    scalarBlockLayout = true

VkPhysicalDeviceShaderAtomicInt64FeaturesKHR:
---------------------------------------------
    shaderBufferInt64Atomics = true
    shaderSharedInt64Atomics = true

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

VkPhysicalDeviceShaderFloat16Int8FeaturesKHR:
---------------------------------------------
    shaderFloat16 = false
    shaderInt8    = true

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

VkPhysicalDeviceTransformFeedbackFeaturesEXT:
---------------------------------------------
    transformFeedback = true
    geometryStreams   = true

VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR:
-------------------------------------------------------
    uniformBufferStandardLayout = true

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

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

VkPhysicalDeviceVulkanMemoryModelFeaturesKHR:
---------------------------------------------
    vulkanMemoryModel                             = true
    vulkanMemoryModelDeviceScope                  = true
    vulkanMemoryModelAvailabilityVisibilityChains = false

And here is my hardware info:

00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Mullins [Radeon R4/R5 Graphics] (rev 40) (prog-if 00 [VGA controller])
    Subsystem: Toshiba America Info Systems Mullins [Radeon R4/R5 Graphics]
    Flags: bus master, fast devsel, latency 0, IRQ 31
    Memory at e0000000 (64-bit, prefetchable) [size=256M]
    Memory at f0000000 (64-bit, prefetchable) [size=8M]
    I/O ports at 4000 [size=256]
    Memory at f0d00000 (32-bit, non-prefetchable) [size=256K]
    Expansion ROM at 000c0000 [disabled] [size=128K]
    Capabilities: [48] Vendor Specific Information: Len=08 <?>
    Capabilities: [50] Power Management version 3
    Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00
    Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
    Capabilities: [270] Secondary PCI Express <?>
    Capabilities: [2b0] Address Translation Service (ATS)
    Capabilities: [2c0] Page Request Interface (PRI)
    Capabilities: [2d0] Process Address Space ID (PASID)
    Kernel driver in use: amdgpu
    Kernel modules: radeon, amdgpu

My OS is Arch Linux with kernel linux-5.3.8-arch1-1. I get this problem using both RADV (part of Mesa project) and amdvlk (AMDVLK Open, maintained by AMD). Just for reference, I can run Sascha Willems' Vulkan examples without any issue.

Thanks in advance!

antoniotorresm commented 5 years ago

Actually, I've tried to specifically set the device with index 1 in the sample (seen by vulkaninfo as Unknown AMD GPU, just the same card but using amdvlk instead of RADV) and now I'm just getting a segmentation fault.

[1] 105065 segmentation fault (core dumped) ./simple

jgbit commented 5 years ago

Thank you for testing vuda and reporting back. It seems to be an error from my side as the DescriptorPoolSize does not seem to be specified correctly (apparently this has no implication on my test setups). Try changing, the line in the file pool.hpp from

m_descriptorPoolSize(vk::DescriptorPoolSize(vk::DescriptorType::eStorageBuffer, binding_size)), to

m_descriptorPoolSize(vk::DescriptorPoolSize(vk::DescriptorType::eStorageBuffer, binding_size * static_cast<uint32_t>(capacity))),

The intended behavior is that the allocation of the descriptor sets should never be able to do any overallocation.

Unfortunately, I don’t have access to a kabini, so I have no possibility of doing a repro. Please let me know what you find. Also, any other feedback on test results and unexpected behavior are welcome.

antoniotorresm commented 5 years ago

That worked! Opened a PR with the fix :)