nowrep / obs-vkcapture

OBS Linux Vulkan/OpenGL game capture
GNU General Public License v2.0
532 stars 25 forks source link

obs-vkcapture GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED #71

Closed mgroshans closed 1 year ago

mgroshans commented 2 years ago

Using the proprietary nvidia drivers (515.48.07) on manjaro i3. obs-vkcapture built from latest master.

$> obs-vkcapture vkcube
[obs-vkcapture] Init Vulkan 1.1.3
[obs-vkcapture] CreateInstance
[obs-vkcapture] CreateInstance VK_SUCCESS
Selected GPU 0: NVIDIA GeForce RTX 3090, type: DiscreteGpu
[obs-vkcapture] CreateXcbSurfaceKHR
[obs-vkcapture] CreateDevice
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension
[obs-vkcapture] CreateDevice VK_SUCCESS
[obs-vkcapture] CreateSwapchainKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] Texture VK_FORMAT_B8G8R8A8_UNORM 1259x1387
[obs-vkcapture] Available modifiers:
[obs-vkcapture]  0: modifier:216172782120099861 planes:1
[obs-vkcapture]  1: modifier:216172782120099860 planes:1
[obs-vkcapture]  2: modifier:216172782120099859 planes:1
[obs-vkcapture]  3: modifier:216172782120099858 planes:1
[obs-vkcapture]  4: modifier:216172782120099857 planes:1
[obs-vkcapture]  5: modifier:216172782120099856 planes:1
[obs-vkcapture]  6: modifier:0 planes:1
[obs-vkcapture] GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED
[obs-vkcapture] ------------------- vulkan capture freed -------------------
[obs-vkcapture] vk_shtex_init failed
mgroshans commented 2 years ago

With limited insight it seems like this might just be an nvidia driver bug with the newly "supported" extension. I'd be happy to be wrong though, and willing to try potential fixes.

nowrep commented 2 years ago

Can you try with OBS_VKCAPTURE_LINEAR=1 obs-vkcapture vkcube?

mgroshans commented 2 years ago

Unfortunately same result

$> OBS_VKCAPTURE_LINEAR=1 obs-vkcapture vkcube
[obs-vkcapture] Init Vulkan 1.1.3
[obs-vkcapture] CreateInstance
[obs-vkcapture] CreateInstance VK_SUCCESS
Selected GPU 0: NVIDIA GeForce RTX 3090, type: DiscreteGpu
[obs-vkcapture] CreateXcbSurfaceKHR
[obs-vkcapture] CreateDevice
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension
[obs-vkcapture] CreateDevice VK_SUCCESS
[obs-vkcapture] CreateSwapchainKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] Texture VK_FORMAT_B8G8R8A8_UNORM 1259x450
[obs-vkcapture] Available modifiers:
[obs-vkcapture]  0: modifier:216172782120099861 planes:1
[obs-vkcapture]  1: modifier:216172782120099860 planes:1
[obs-vkcapture]  2: modifier:216172782120099859 planes:1
[obs-vkcapture]  3: modifier:216172782120099858 planes:1
[obs-vkcapture]  4: modifier:216172782120099857 planes:1
[obs-vkcapture]  5: modifier:216172782120099856 planes:1
[obs-vkcapture]  6: modifier:0 planes:1
[obs-vkcapture] GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED
[obs-vkcapture] ------------------- vulkan capture freed -------------------
[obs-vkcapture] vk_shtex_init failed
nowrep commented 2 years ago

Hmm no idea then. Did it break with nvidia driver update, or did it never work for you? I think you need to have modesetting enabled for this to work, but it should be by default I guess.

mgroshans commented 2 years ago

I only just tried for the first time with this driver. I believe modesetting is on. In dmseg:

[    2.826662] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:11:00.0 on minor 0
$> lsmod | grep nvidia
nvidia_uvm           2752512  0
nvidia_drm             73728  11
nvidia_modeset       1146880  13 nvidia_drm
nvidia              40849408  665 nvidia_uvm,nvidia_modeset

Appreciate you taking a look. Not a big issue for me so I probably won't try to install an older driver, and I'll keep an eye on future driver updates.

Gustash commented 2 years ago

Same issue here with Manjaro i3. Using the Nvidia 515.57 drivers. Windows show up in the list on OBS, but the output is always black

ZEN0X9999 commented 2 years ago

Quite literally the same issue here with Manjaro. Using the latest nvidia 515.65.01drivers. Windows show up in the list on OBS, but the output is always black.also on vkcube. specs: AMD Ryzen 7 3700X (16) @ 3.600GHz NVIDIA GeForce GTX 960 the exact error:

[obs-vkcapture] Init Vulkan 1.1.3
Selected GPU 0: NVIDIA GeForce GTX 960, type: DiscreteGpu
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension
[obs-vkcapture] Texture VK_FORMAT_B8G8R8A8_UNORM 500x493
[obs-vkcapture] GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED
[obs-vkcapture] ------------------- vulkan capture freed -------------------
[obs-vkcapture] vk_shtex_init failed
nowrep commented 2 years ago

You should at least try with latest version, 1.1.3 is pretty old. It probably won't make a difference tho.

ZEN0X9999 commented 2 years ago

my vulkan is on the latest version:

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

Vulkan Instance Version: 1.3.221

Instance Extensions: count = 20
===============================
    VK_EXT_acquire_drm_display             : extension revision 1
    VK_EXT_acquire_xlib_display            : extension revision 1
    VK_EXT_debug_report                    : extension revision 10
    VK_EXT_debug_utils                     : extension revision 2
    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_portability_enumeration         : 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 = 7
=================
VK_LAYER_MANGOHUD_overlay (Vulkan Hud Overlay) Vulkan version 1.3.0, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

VK_LAYER_NV_optimus (NVIDIA Optimus layer) Vulkan version 1.3.205, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

VK_LAYER_OBS_vkcapture_64 (OBS Linux game capture) Vulkan version 1.2.135, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_fossilize_32 (Steam Pipeline Caching Layer) Vulkan version 1.3.207, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_fossilize_64 (Steam Pipeline Caching Layer) Vulkan version 1.3.207, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_overlay_32 (Steam Overlay Layer) Vulkan version 1.3.207, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_overlay_64 (Steam Overlay Layer) Vulkan version 1.3.207, layer version 1:
    Layer Extensions: count = 0
    Devices: count = 1
        GPU id = 0 (NVIDIA GeForce GTX 960)
        Layer-Device Extensions: count = 0

Presentable Surfaces:
=====================
GPU id : 0 (NVIDIA GeForce GTX 960):
    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_FIFO_KHR
        PRESENT_MODE_FIFO_RELAXED_KHR
        PRESENT_MODE_IMMEDIATE_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount = 2
        maxImageCount = 8
        currentExtent:
            width  = 256
            height = 256
        minImageExtent:
            width  = 256
            height = 256
        maxImageExtent:
            width  = 256
            height = 256
        maxImageArrayLayers = 1
        supportedTransforms: count = 1
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha: count = 1
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
        supportedUsageFlags: count = 6
            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

Device Groups:
==============
Group 0:
    Properties:
        physicalDevices: count = 1
            NVIDIA GeForce GTX 960 (ID: 0)
        subsetAllocation = 0

    Present Capabilities:
        NVIDIA GeForce GTX 960 (ID: 0):
            Can present images from the following devices: count = 1
                NVIDIA GeForce GTX 960 (ID: 0)
        Present modes: count = 1
            DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR

Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
    apiVersion        = 4206797 (1.3.205)
    driverVersion     = 2161131584 (0x80d04040)
    vendorID          = 0x10de
    deviceID          = 0x1401
    deviceType        = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
    deviceName        = NVIDIA GeForce GTX 960
    pipelineCacheUUID = 8531364b-d566-1fb6-3085-32e1c1864d79

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

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

VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT:
----------------------------------------------------
    advancedBlendMaxColorAttachments      = 1
    advancedBlendIndependentBlend         = false
    advancedBlendNonPremultipliedSrcColor = true
    advancedBlendNonPremultipliedDstColor = true
    advancedBlendCorrelatedOverlap        = true
    advancedBlendAllOperations            = true

VkPhysicalDeviceConservativeRasterizationPropertiesEXT:
-------------------------------------------------------
    primitiveOverestimationSize                 = 0
    maxExtraPrimitiveOverestimationSize         = 0.75
    extraPrimitiveOverestimationSizeGranularity = 0.25
    primitiveUnderestimation                    = false
    conservativePointAndLineRasterization       = true
    degenerateTrianglesRasterized               = false
    degenerateLinesRasterized                   = false
    fullyCoveredFragmentShaderInputVariable     = false
    conservativeRasterizationPostDepthCoverage  = true

VkPhysicalDeviceCustomBorderColorPropertiesEXT:
-----------------------------------------------
    maxCustomBorderColorSamplers = 4000

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

VkPhysicalDeviceDescriptorIndexingProperties:
---------------------------------------------
    maxUpdateAfterBindDescriptorsInAllPools              = 4294967295
    shaderUniformBufferArrayNonUniformIndexingNative     = true
    shaderSampledImageArrayNonUniformIndexingNative      = true
    shaderStorageBufferArrayNonUniformIndexingNative     = true
    shaderStorageImageArrayNonUniformIndexingNative      = true
    shaderInputAttachmentArrayNonUniformIndexingNative   = true
    robustBufferAccessUpdateAfterBind                    = true
    quadDivergentImplicitLod                             = true
    maxPerStageDescriptorUpdateAfterBindSamplers         = 1048576
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 15
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 1048576
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 1048576
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 1048576
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 1048576
    maxPerStageUpdateAfterBindResources                  = 4294967295
    maxDescriptorSetUpdateAfterBindSamplers              = 1048576
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 90
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 15
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 1048576
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 16
    maxDescriptorSetUpdateAfterBindSampledImages         = 1048576
    maxDescriptorSetUpdateAfterBindStorageImages         = 1048576
    maxDescriptorSetUpdateAfterBindInputAttachments      = 1048576

VkPhysicalDeviceDiscardRectanglePropertiesEXT:
----------------------------------------------
    maxDiscardRectangles = 8

VkPhysicalDeviceDriverProperties:
---------------------------------
    driverID        = DRIVER_ID_NVIDIA_PROPRIETARY
    driverName      = NVIDIA
    driverInfo      = 515.65.01
    conformanceVersion:
        major    = 1
        minor    = 3
        subminor = 1
        patch    = 0

VkPhysicalDeviceDrmPropertiesEXT:
---------------------------------
    hasPrimary   = true
    hasRender    = true
    primaryMajor = 226
    primaryMinor = 0
    renderMajor  = 226
    renderMinor  = 128

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

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

VkPhysicalDeviceIDProperties:
-----------------------------
    deviceUUID      = c0b8507b-df49-a374-b4f3-538d21adc927
    driverUUID      = 0a738663-f3b3-5eff-81dc-f04e4d976dbf
    deviceNodeMask  = 1
    deviceLUIDValid = false

VkPhysicalDeviceInlineUniformBlockProperties:
---------------------------------------------
    maxInlineUniformBlockSize                               = 256
    maxPerStageDescriptorInlineUniformBlocks                = 32
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 32
    maxDescriptorSetInlineUniformBlocks                     = 32
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 32

VkPhysicalDeviceLineRasterizationPropertiesEXT:
-----------------------------------------------
    lineSubPixelPrecisionBits = 8

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

VkPhysicalDeviceMaintenance4Properties:
---------------------------------------
    maxBufferSize = 0xffffffffffff0000

VkPhysicalDeviceMultiDrawPropertiesEXT:
---------------------------------------
    maxMultiDrawCount = 4294967295

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

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

VkPhysicalDevicePointClippingProperties:
----------------------------------------
    pointClippingBehavior = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY

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

VkPhysicalDeviceProvokingVertexPropertiesEXT:
---------------------------------------------
    provokingVertexModePerPipeline                       = true
    transformFeedbackPreservesTriangleFanProvokingVertex = true

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

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

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

VkPhysicalDeviceSamplerFilterMinmaxProperties:
----------------------------------------------
    filterMinmaxSingleComponentFormats = true
    filterMinmaxImageComponentMapping  = true

VkPhysicalDeviceShaderIntegerDotProductProperties:
--------------------------------------------------
    integerDotProduct8BitUnsignedAccelerated                                      = true
    integerDotProduct8BitSignedAccelerated                                        = true
    integerDotProduct8BitMixedSignednessAccelerated                               = true
    integerDotProduct4x8BitPackedUnsignedAccelerated                              = true
    integerDotProduct4x8BitPackedSignedAccelerated                                = true
    integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = true
    integerDotProduct16BitUnsignedAccelerated                                     = false
    integerDotProduct16BitSignedAccelerated                                       = false
    integerDotProduct16BitMixedSignednessAccelerated                              = false
    integerDotProduct32BitUnsignedAccelerated                                     = false
    integerDotProduct32BitSignedAccelerated                                       = false
    integerDotProduct32BitMixedSignednessAccelerated                              = false
    integerDotProduct64BitUnsignedAccelerated                                     = false
    integerDotProduct64BitSignedAccelerated                                       = false
    integerDotProduct64BitMixedSignednessAccelerated                              = false
    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = true
    integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = true
    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = true
    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = true
    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = true
    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = true
    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = true
    integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = true
    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = true
    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = true
    integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = true
    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = true
    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = true
    integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = true
    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = true

VkPhysicalDeviceSubgroupProperties:
-----------------------------------
    subgroupSize              = 32
    supportedStages: count = 8
        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: count = 9
        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_CLUSTERED_BIT
        SUBGROUP_FEATURE_QUAD_BIT
        SUBGROUP_FEATURE_PARTITIONED_BIT_NV
    quadOperationsInAllStages = true

VkPhysicalDeviceSubgroupSizeControlProperties:
----------------------------------------------
    minSubgroupSize              = 32
    maxSubgroupSize              = 32
    maxComputeWorkgroupSubgroups = 3145728
    requiredSubgroupSizeStages: count = 8
        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

VkPhysicalDeviceTexelBufferAlignmentProperties:
-----------------------------------------------
    storageTexelBufferOffsetAlignmentBytes       = 0x00000010
    storageTexelBufferOffsetSingleTexelAlignment = true
    uniformTexelBufferOffsetAlignmentBytes       = 0x00000010
    uniformTexelBufferOffsetSingleTexelAlignment = true

VkPhysicalDeviceTimelineSemaphoreProperties:
--------------------------------------------
    maxTimelineSemaphoreValueDifference = 2147483647

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

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

VkPhysicalDeviceVulkan11Properties:
-----------------------------------
    deviceUUID                        = c0b8507b-df49-a374-b4f3-538d21adc927
    driverUUID                        = 0a738663-f3b3-5eff-81dc-f04e4d976dbf
    deviceNodeMask                    = 1
    deviceLUIDValid                   = false
    subgroupSize                      = 32
    subgroupSupportedStages: count = 8
        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
    subgroupSupportedOperations: count = 9
        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_CLUSTERED_BIT
        SUBGROUP_FEATURE_QUAD_BIT
        SUBGROUP_FEATURE_PARTITIONED_BIT_NV
    subgroupQuadOperationsInAllStages = true
    pointClippingBehavior             = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
    maxMultiviewViewCount             = 32
    maxMultiviewInstanceIndex         = 134217727
    protectedNoFault                  = false
    maxPerSetDescriptors              = 4294967295
    maxMemoryAllocationSize           = 0xffe00000

VkPhysicalDeviceVulkan12Properties:
-----------------------------------
    driverID                                             = DRIVER_ID_NVIDIA_PROPRIETARY
    driverName                                           = NVIDIA
    driverInfo                                           = 515.65.01
    conformanceVersion:
        major    = 1
        minor    = 3
        subminor = 1
        patch    = 0
    denormBehaviorIndependence                           = SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL
    roundingModeIndependence                             = SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL
    shaderSignedZeroInfNanPreserveFloat16                = true
    shaderSignedZeroInfNanPreserveFloat32                = true
    shaderSignedZeroInfNanPreserveFloat64                = true
    shaderDenormPreserveFloat16                          = false
    shaderDenormPreserveFloat32                          = false
    shaderDenormPreserveFloat64                          = false
    shaderDenormFlushToZeroFloat16                       = false
    shaderDenormFlushToZeroFloat32                       = false
    shaderDenormFlushToZeroFloat64                       = false
    shaderRoundingModeRTEFloat16                         = true
    shaderRoundingModeRTEFloat32                         = true
    shaderRoundingModeRTEFloat64                         = true
    shaderRoundingModeRTZFloat16                         = false
    shaderRoundingModeRTZFloat32                         = true
    shaderRoundingModeRTZFloat64                         = true
    maxUpdateAfterBindDescriptorsInAllPools              = 4294967295
    shaderUniformBufferArrayNonUniformIndexingNative     = true
    shaderSampledImageArrayNonUniformIndexingNative      = true
    shaderStorageBufferArrayNonUniformIndexingNative     = true
    shaderStorageImageArrayNonUniformIndexingNative      = true
    shaderInputAttachmentArrayNonUniformIndexingNative   = true
    robustBufferAccessUpdateAfterBind                    = true
    quadDivergentImplicitLod                             = true
    maxPerStageDescriptorUpdateAfterBindSamplers         = 1048576
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 15
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 1048576
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 1048576
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 1048576
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 1048576
    maxPerStageUpdateAfterBindResources                  = 4294967295
    maxDescriptorSetUpdateAfterBindSamplers              = 1048576
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 90
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 15
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 1048576
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 16
    maxDescriptorSetUpdateAfterBindSampledImages         = 1048576
    maxDescriptorSetUpdateAfterBindStorageImages         = 1048576
    maxDescriptorSetUpdateAfterBindInputAttachments      = 1048576
    supportedDepthResolveModes: count = 4
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_AVERAGE_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    supportedStencilResolveModes: count = 3
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    independentResolveNone                               = true
    independentResolve                                   = true
    filterMinmaxSingleComponentFormats                   = true
    filterMinmaxImageComponentMapping                    = true
    maxTimelineSemaphoreValueDifference                  = 2147483647
    framebufferIntegerColorSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT

VkPhysicalDeviceVulkan13Properties:
-----------------------------------
    minSubgroupSize                                                               = 32
    maxSubgroupSize                                                               = 32
    maxComputeWorkgroupSubgroups                                                  = 3145728
    requiredSubgroupSizeStages: count = 8
        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
    maxInlineUniformBlockSize                                                     = 256
    maxPerStageDescriptorInlineUniformBlocks                                      = 32
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks                       = 32
    maxDescriptorSetInlineUniformBlocks                                           = 32
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks                            = 32
    maxInlineUniformTotalSize                                                     = 1536
    integerDotProduct8BitUnsignedAccelerated                                      = true
    integerDotProduct8BitSignedAccelerated                                        = true
    integerDotProduct8BitMixedSignednessAccelerated                               = true
    integerDotProduct4x8BitPackedUnsignedAccelerated                              = true
    integerDotProduct4x8BitPackedSignedAccelerated                                = true
    integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = true
    integerDotProduct16BitUnsignedAccelerated                                     = false
    integerDotProduct16BitSignedAccelerated                                       = false
    integerDotProduct16BitMixedSignednessAccelerated                              = false
    integerDotProduct32BitUnsignedAccelerated                                     = false
    integerDotProduct32BitSignedAccelerated                                       = false
    integerDotProduct32BitMixedSignednessAccelerated                              = false
    integerDotProduct64BitUnsignedAccelerated                                     = false
    integerDotProduct64BitSignedAccelerated                                       = false
    integerDotProduct64BitMixedSignednessAccelerated                              = false
    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = true
    integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = true
    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = true
    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = true
    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = true
    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = true
    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = true
    integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = true
    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = true
    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = true
    integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = true
    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = true
    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = true
    integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = true
    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = true
    storageTexelBufferOffsetAlignmentBytes                                        = 0x00000010
    storageTexelBufferOffsetSingleTexelAlignment                                  = true
    uniformTexelBufferOffsetAlignmentBytes                                        = 0x00000010
    uniformTexelBufferOffsetSingleTexelAlignment                                  = true
    maxBufferSize                                                                 = 0xffffffffffff0000

Device Extensions: count = 135
    VK_EXT_4444_formats                       : extension revision 1
    VK_EXT_blend_operation_advanced           : extension revision 2
    VK_EXT_border_color_swizzle               : extension revision 1
    VK_EXT_buffer_device_address              : extension revision 2
    VK_EXT_calibrated_timestamps              : extension revision 2
    VK_EXT_color_write_enable                 : extension revision 1
    VK_EXT_conditional_rendering              : extension revision 2
    VK_EXT_conservative_rasterization         : extension revision 1
    VK_EXT_custom_border_color                : extension revision 12
    VK_EXT_depth_clip_control                 : 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_extended_dynamic_state             : extension revision 1
    VK_EXT_extended_dynamic_state2            : extension revision 1
    VK_EXT_external_memory_dma_buf            : extension revision 1
    VK_EXT_external_memory_host               : extension revision 1
    VK_EXT_fragment_shader_interlock          : extension revision 1
    VK_EXT_global_priority                    : extension revision 2
    VK_EXT_global_priority_query              : extension revision 1
    VK_EXT_host_query_reset                   : extension revision 1
    VK_EXT_image_drm_format_modifier          : extension revision 2
    VK_EXT_image_robustness                   : extension revision 1
    VK_EXT_image_view_min_lod                 : extension revision 1
    VK_EXT_index_type_uint8                   : extension revision 1
    VK_EXT_inline_uniform_block               : extension revision 1
    VK_EXT_line_rasterization                 : extension revision 1
    VK_EXT_load_store_op_none                 : extension revision 1
    VK_EXT_memory_budget                      : extension revision 1
    VK_EXT_multi_draw                         : extension revision 1
    VK_EXT_pci_bus_info                       : extension revision 2
    VK_EXT_physical_device_drm                : 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_primitive_topology_list_restart    : extension revision 1
    VK_EXT_private_data                       : extension revision 1
    VK_EXT_provoking_vertex                   : extension revision 1
    VK_EXT_queue_family_foreign               : extension revision 1
    VK_EXT_robustness2                        : 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_atomic_float                : extension revision 1
    VK_EXT_shader_demote_to_helper_invocation : extension revision 1
    VK_EXT_shader_image_atomic_int64          : 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_texel_buffer_alignment             : extension revision 1
    VK_EXT_tooling_info                       : extension revision 1
    VK_EXT_transform_feedback                 : extension revision 1
    VK_EXT_vertex_attribute_divisor           : extension revision 3
    VK_EXT_vertex_input_dynamic_state         : extension revision 2
    VK_EXT_ycbcr_2plane_444_formats           : extension revision 1
    VK_EXT_ycbcr_image_arrays                 : 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_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_dynamic_rendering                  : 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_format_feature_flags2              : extension revision 1
    VK_KHR_get_memory_requirements2           : extension revision 1
    VK_KHR_global_priority                    : 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_maintenance4                       : extension revision 2
    VK_KHR_multiview                          : extension revision 1
    VK_KHR_pipeline_executable_properties     : extension revision 1
    VK_KHR_present_id                         : extension revision 1
    VK_KHR_present_wait                       : 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_atomic_int64                : extension revision 1
    VK_KHR_shader_clock                       : 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_integer_dot_product         : extension revision 1
    VK_KHR_shader_non_semantic_info           : extension revision 1
    VK_KHR_shader_subgroup_extended_types     : extension revision 1
    VK_KHR_shader_terminate_invocation        : 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_KHR_vulkan_memory_model                : extension revision 3
    VK_KHR_workgroup_memory_explicit_layout   : extension revision 1
    VK_KHR_zero_initialize_workgroup_memory   : extension revision 1
    VK_NVX_multiview_per_view_attributes      : extension revision 1
    VK_NV_coverage_reduction_mode             : extension revision 1
    VK_NV_dedicated_allocation                : extension revision 1
    VK_NV_dedicated_allocation_image_aliasing : extension revision 1
    VK_NV_device_diagnostic_checkpoints       : extension revision 2
    VK_NV_device_diagnostics_config           : extension revision 1
    VK_NV_device_generated_commands           : extension revision 3
    VK_NV_fill_rectangle                      : extension revision 1
    VK_NV_fragment_coverage_to_color          : extension revision 1
    VK_NV_framebuffer_mixed_samples           : extension revision 1
    VK_NV_geometry_shader_passthrough         : extension revision 1
    VK_NV_inherited_viewport_scissor          : extension revision 1
    VK_NV_linear_color_attachment             : extension revision 1
    VK_NV_sample_mask_override_coverage       : extension revision 1
    VK_NV_shader_sm_builtins                  : extension revision 1
    VK_NV_shader_subgroup_partitioned         : extension revision 1
    VK_NV_viewport_array2                     : extension revision 1
    VK_NV_viewport_swizzle                    : extension revision 1

VkQueueFamilyProperties:
========================
    queueProperties[0]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 16
        queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
        timestampValidBits          = 64
        present support             = true
        VkQueueFamilyGlobalPriorityPropertiesKHR:
        -----------------------------------------
            priorityCount  = 1
            priorities: count = 1
                QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR

    queueProperties[1]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 2
        queueFlags                  = QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
        timestampValidBits          = 64
        present support             = false
        VkQueueFamilyGlobalPriorityPropertiesKHR:
        -----------------------------------------
            priorityCount  = 1
            priorities: count = 1
                QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 3
    memoryHeaps[0]:
        size   = 4294967296 (0x100000000) (4.00 GiB)
        budget = 3810721792 (0xe3230000) (3.55 GiB)
        usage  = 0 (0x00000000) (0.00 B)
        flags: count = 1
            MEMORY_HEAP_DEVICE_LOCAL_BIT
    memoryHeaps[1]:
        size   = 12572768256 (0x2ed653800) (11.71 GiB)
        budget = 12572768256 (0x2ed653800) (11.71 GiB)
        usage  = 0 (0x00000000) (0.00 B)
        flags:
            None
    memoryHeaps[2]:
        size   = 257949696 (0x0f600000) (246.00 MiB)
        budget = 251396096 (0x0efc0000) (239.75 MiB)
        usage  = 6553600 (0x00640000) (6.25 MiB)
        flags: count = 1
            MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 11
    memoryTypes[0]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)
    memoryTypes[1]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[2]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                FORMAT_D16_UNORM
                (non-sparse, non-transient)
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[3]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                FORMAT_X8_D24_UNORM_PACK32
                FORMAT_D24_UNORM_S8_UINT
                (non-sparse, non-transient)
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[4]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                FORMAT_D32_SFLOAT
                (non-sparse, non-transient)
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[5]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                FORMAT_D32_SFLOAT_S8_UINT
                (non-sparse, non-transient)
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[6]:
        heapIndex     = 1
        propertyFlags = 0x0000:
            None
        usable for:
            IMAGE_TILING_OPTIMAL:
                FORMAT_S8_UINT
                (non-sparse, non-transient)
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[7]:
        heapIndex     = 0
        propertyFlags = 0x0001: count = 1
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_X8_D24_UNORM_PACK32
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D24_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)
    memoryTypes[8]:
        heapIndex     = 1
        propertyFlags = 0x0006: count = 2
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)
    memoryTypes[9]:
        heapIndex     = 1
        propertyFlags = 0x000e: count = 3
            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, non-transient)
    memoryTypes[10]:
        heapIndex     = 2
        propertyFlags = 0x0007: count = 3
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)

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           = true
    shaderStorageImageReadWithoutFormat     = true
    shaderStorageImageWriteWithoutFormat    = true
    shaderUniformBufferArrayDynamicIndexing = true
    shaderSampledImageArrayDynamicIndexing  = true
    shaderStorageBufferArrayDynamicIndexing = true
    shaderStorageImageArrayDynamicIndexing  = true
    shaderClipDistance                      = true
    shaderCullDistance                      = true
    shaderFloat64                           = true
    shaderInt64                             = true
    shaderInt16                             = true
    shaderResourceResidency                 = true
    shaderResourceMinLod                    = true
    sparseBinding                           = true
    sparseResidencyBuffer                   = true
    sparseResidencyImage2D                  = true
    sparseResidencyImage3D                  = true
    sparseResidency2Samples                 = true
    sparseResidency4Samples                 = true
    sparseResidency8Samples                 = true
    sparseResidency16Samples                = true
    sparseResidencyAliased                  = true
    variableMultisampleRate                 = true
    inheritedQueries                        = true

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

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

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

VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT:
--------------------------------------------------
    advancedBlendCoherentOperations = true

VkPhysicalDeviceBorderColorSwizzleFeaturesEXT:
----------------------------------------------
    borderColorSwizzle          = true
    borderColorSwizzleFromImage = false

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

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

VkPhysicalDeviceColorWriteEnableFeaturesEXT:
--------------------------------------------
    colorWriteEnable = true

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

VkPhysicalDeviceCustomBorderColorFeaturesEXT:
---------------------------------------------
    customBorderColors             = true
    customBorderColorWithoutFormat = true

VkPhysicalDeviceDepthClipControlFeaturesEXT:
--------------------------------------------
    depthClipControl = true

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

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

VkPhysicalDeviceDynamicRenderingFeatures:
-----------------------------------------
    dynamicRendering = true

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

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

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

VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR:
-----------------------------------------------
    globalPriorityQuery = true

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

VkPhysicalDeviceImageRobustnessFeatures:
----------------------------------------
    robustImageAccess = true

VkPhysicalDeviceImageViewMinLodFeaturesEXT:
-------------------------------------------
    minLod = true

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

VkPhysicalDeviceIndexTypeUint8FeaturesEXT:
------------------------------------------
    indexTypeUint8 = true

VkPhysicalDeviceInlineUniformBlockFeatures:
-------------------------------------------
    inlineUniformBlock                                 = true
    descriptorBindingInlineUniformBlockUpdateAfterBind = true

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

VkPhysicalDeviceMaintenance4Features:
-------------------------------------
    maintenance4 = true

VkPhysicalDeviceMultiDrawFeaturesEXT:
-------------------------------------
    multiDraw = true

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

VkPhysicalDevicePipelineCreationCacheControlFeatures:
-----------------------------------------------------
    pipelineCreationCacheControl = true

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

VkPhysicalDevicePresentIdFeaturesKHR:
-------------------------------------
    presentId = true

VkPhysicalDevicePresentWaitFeaturesKHR:
---------------------------------------
    presentWait = true

VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT:
--------------------------------------------------------
    primitiveTopologyListRestart      = true
    primitiveTopologyPatchListRestart = true

VkPhysicalDevicePrivateDataFeatures:
------------------------------------
    privateData = true

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

VkPhysicalDeviceProvokingVertexFeaturesEXT:
-------------------------------------------
    provokingVertexLast                       = true
    transformFeedbackPreservesProvokingVertex = true

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

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    = true
    shaderImageFloat32AtomicAdd  = true
    sparseImageFloat32Atomics    = true
    sparseImageFloat32AtomicAdd  = true

VkPhysicalDeviceShaderAtomicInt64Features:
------------------------------------------
    shaderBufferInt64Atomics = true
    shaderSharedInt64Atomics = true

VkPhysicalDeviceShaderClockFeaturesKHR:
---------------------------------------
    shaderSubgroupClock = true
    shaderDeviceClock   = true

VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures:
-------------------------------------------------------
    shaderDemoteToHelperInvocation = true

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

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

VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT:
--------------------------------------------------
    shaderImageInt64Atomics = true
    sparseImageInt64Atomics = true

VkPhysicalDeviceShaderIntegerDotProductFeatures:
------------------------------------------------
    shaderIntegerDotProduct = true

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

VkPhysicalDeviceShaderTerminateInvocationFeatures:
--------------------------------------------------
    shaderTerminateInvocation = true

VkPhysicalDeviceSubgroupSizeControlFeatures:
--------------------------------------------
    subgroupSizeControl  = true
    computeFullSubgroups = true

VkPhysicalDeviceSynchronization2Features:
-----------------------------------------
    synchronization2 = true

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

VkPhysicalDeviceTextureCompressionASTCHDRFeatures:
--------------------------------------------------
    textureCompressionASTC_HDR = false

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

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

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

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

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

VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT:
---------------------------------------------------
    vertexInputDynamicState = true

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

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

VkPhysicalDeviceVulkan13Features:
---------------------------------
    robustImageAccess                                  = true
    inlineUniformBlock                                 = true
    descriptorBindingInlineUniformBlockUpdateAfterBind = true
    pipelineCreationCacheControl                       = true
    privateData                                        = true
    shaderDemoteToHelperInvocation                     = true
    shaderTerminateInvocation                          = true
    subgroupSizeControl                                = true
    computeFullSubgroups                               = true
    synchronization2                                   = true
    textureCompressionASTC_HDR                         = false
    shaderZeroInitializeWorkgroupMemory                = true
    dynamicRendering                                   = true
    shaderIntegerDotProduct                            = true
    maintenance4                                       = true

VkPhysicalDeviceVulkanMemoryModelFeatures:
------------------------------------------
    vulkanMemoryModel                             = true
    vulkanMemoryModelDeviceScope                  = true
    vulkanMemoryModelAvailabilityVisibilityChains = true

VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR:
---------------------------------------------------------
    workgroupMemoryExplicitLayout                  = true
    workgroupMemoryExplicitLayoutScalarBlockLayout = true
    workgroupMemoryExplicitLayout8BitAccess        = true
    workgroupMemoryExplicitLayout16BitAccess       = true

VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT:
-------------------------------------------------
    ycbcr2plane444Formats = true

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

VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures:
------------------------------------------------------
    shaderZeroInitializeWorkgroupMemory = true

but the script uses the old one? :D

$> OBS_VKCAPTURE_LINEAR=1 obs-vkcapture vkcube                    
[obs-vkcapture] Init Vulkan 1.1.3
Selected GPU 0: NVIDIA GeForce GTX 960, type: DiscreteGpu
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension

this is on X11 & GNOME 42.2 with Mutter WM

nowrep commented 2 years ago

[obs-vkcapture] Init Vulkan 1.1.3 This 1.1.3 means version of obs-vkcapture. And that is old, can you try with latest version?

ZEN0X9999 commented 2 years ago

Yeah the with the newer 1.2 version has literally the same output

$> obs-gamecapture vkcube          

[obs-vkcapture] Init Vulkan 1.2.0
Selected GPU 0: NVIDIA GeForce GTX 960, type: DiscreteGpu
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension
[obs-vkcapture] Texture VK_FORMAT_B8G8R8A8_UNORM 500x500
[obs-vkcapture] GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED
[obs-vkcapture] ------------------- vulkan capture freed -------------------
[obs-vkcapture] vk_shtex_init failed
Thjodolf commented 2 years ago

Hi, same issue for me with Nvidia Driver 515.57

$ obs-gamecapture vkcube
[obs-vkcapture] Init Vulkan 1.2.0
Selected GPU 0: NVIDIA GeForce RTX 3080, type: DiscreteGpu
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension
[obs-vkcapture] Texture VK_FORMAT_B8G8R8A8_UNORM 500x500
[obs-vkcapture] GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED
[obs-vkcapture] ------------------- vulkan capture freed -------------------
[obs-vkcapture] vk_shtex_init failed
nowrep commented 2 years ago

I suggest to report this issue to NVIDIA. It used to work at some point in early versions of Wayland enabled driver (515.43.04), so some change in the driver broke it. It works correctly with Mesa drivers (radv, intel) and amdvlk/amd-pro. I also don't have NVIDIA hardware to troubleshoot it myself.

Thjodolf commented 2 years ago

Thanks for the suggestion. Wanna add that I also tested it with the 515.65.01 driver with the same error.

nowrep commented 2 years ago

Can someone please try this patch?

diff --git a/src/vklayer.c b/src/vklayer.c
index 4cbfef5..fb48403 100644
--- a/src/vklayer.c
+++ b/src/vklayer.c
@@ -1487,8 +1487,7 @@ static VkResult VKAPI_CALL OBS_CreateDevice(VkPhysicalDevice phy_device,
     GETADDR(GetImageSubresourceLayout);
     GETADDR(GetMemoryFdKHR);

-    dfuncs->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)
-        gdpa(device, "vkGetImageDrmFormatModifierPropertiesEXT");
+    dfuncs->GetImageDrmFormatModifierPropertiesEXT = NULL;
     if (!dfuncs->GetImageDrmFormatModifierPropertiesEXT) {
         hlog("DRM format modifier support not available");
     }

Also I would like to know if you are using X11 or Wayland.

dec05eba commented 2 years ago

Can someone please try this patch?

I tried it and it fails with the same error:

build % ./obs-gamecapture vkcube
[obs-vkcapture] Init Vulkan 1.2.0
[obs-vkcapture] CreateInstance
[obs-vkcapture] CreateInstance VK_SUCCESS
Selected GPU 0: NVIDIA GeForce GTX 1080, type: DiscreteGpu
[obs-vkcapture] CreateXcbSurfaceKHR
[obs-vkcapture] CreateDevice
[obs-vkcapture] Injecting VK_KHR_bind_memory2 extension
[obs-vkcapture] Injecting VK_KHR_get_memory_requirements2 extension
[obs-vkcapture] Injecting VK_KHR_external_memory_fd extension
[obs-vkcapture] Injecting VK_EXT_image_drm_format_modifier extension
[obs-vkcapture] CreateDevice VK_SUCCESS
[obs-vkcapture] DRM format modifier support not available
[obs-vkcapture] CreateSwapchainKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] CreateSwapchainKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] DestroySwapchainKHR
[obs-vkcapture] CreateSwapchainKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] DestroySwapchainKHR
[obs-vkcapture] CreateSwapchainKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] GetSwapchainImagesKHR VK_SUCCESS
[obs-vkcapture] DestroySwapchainKHR
[obs-vkcapture] Texture VK_FORMAT_B8G8R8A8_UNORM 1910x2121
[obs-vkcapture] GetMemoryFdKHR failed VK_ERROR_INITIALIZATION_FAILED
[obs-vkcapture] ------------------- vulkan capture freed -------------------
[obs-vkcapture] vk_shtex_init failed

Tried with OBS_VKCAPTURE_LINEAR=1 as well. Nvidia driver version is 515.76-4 (on arch linux).

GregTheMadMonk commented 2 years ago

Can someone please try this patch?

diff --git a/src/vklayer.c b/src/vklayer.c
index 4cbfef5..fb48403 100644
--- a/src/vklayer.c
+++ b/src/vklayer.c
@@ -1487,8 +1487,7 @@ static VkResult VKAPI_CALL OBS_CreateDevice(VkPhysicalDevice phy_device,
     GETADDR(GetImageSubresourceLayout);
     GETADDR(GetMemoryFdKHR);

-    dfuncs->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)
-        gdpa(device, "vkGetImageDrmFormatModifierPropertiesEXT");
+    dfuncs->GetImageDrmFormatModifierPropertiesEXT = NULL;
     if (!dfuncs->GetImageDrmFormatModifierPropertiesEXT) {
         hlog("DRM format modifier support not available");
     }

Also I would like to know if you are using X11 or Wayland.

Didn't seem to work for me. Arch Linux, X11, Nvidia 515.76.

Staudey commented 2 years ago

FWIW I had the exact same error before adding the nvidia-drm.modeset=1 kernel parameter, so I would double-check if you really have it enabled.

nowrep commented 1 year ago

Can you please try again with current master?

nowrep commented 1 year ago

This should be working now, make sure you set nvidia-drm.modeset=1 kernel parameter.