On Thu, May 30, 2024 at 4:35 PM Chen-Yu Tsai <wenst@xxxxxxxxxxxx> wrote: > > Hi everyone, > > This series enables the PowerVR GPU found in the MT8173 SoC, found in > some Chromebooks. > > This version is different from the initial powervr driver submission [1] > in that it splits out the GPU glue layer support out of the powervr > driver and into a separate clock and power domain driver. The glue code > is otherwise the same, and also the same as found in the ChromeOS > kernels, with some extra comments and macro names added where possible. > > Patch 1 adds a binding for the glue layer, called mfgtop. The glue layer > contains clock and power controls for the GPU. > > Patch 2 adds a driver for the glue layer. > > Patch 3 adds an entry for the MT8173 GPU and 6XT series to the PowerVR > binding. > > Patch 4 adds an entry for the PowerVR 6XT series GPU to the driver. > > Patch 5 corrects the clock for the GPU (called MFG) power domain. > > Patch 6 adds device nodes for the GPU and glue layer to the MT8173 dtsi > file. > > Patch 2 and 6 depend on patch 1 to build. I suppose some common > immutable tree would be needed from the MediaTek maintainers. > > The kernel driver successfully probes the hardware and loads the > "rogue_4.40.2.51_v1.fw" firmware provided by Imagination Technologies [2]. > Userspace was tested with Mesa 24.0.8 from Debian Trixie rebuilt with > the powervr vulkan driver enabled. `vulkaninfo` gives some information > about the GPU (attached at the end), but running the `triangle` example > from the Sascha Willems demos [3] with -DUSE_D2D_WSI=ON as recommended [4] > failed with: > > Can't find a display and a display mode! > > Same program worked correctly on a BeaglePlay and displayed a color > gradient triangle. Not sure what went wrong here. Frank mentioned over IRC that giving `triangle` a screen resolution would make it work, and it did! Thanks Frank! OTOH I'm getting some extra warnings not seen on the BeaglePlay: MESA: error: No hard coded passthrough rta vertex shader. Returning empty shader. MESA: warning: ../src/imagination/vulkan/pvr_job_context.c:71: FINISHME: Missing reset support for brn51764 MESA: warning: ../src/imagination/vulkan/pvr_job_context.c:74: FINISHME: Missing reset support for brn58839 MESA: warning: ../src/imagination/vulkan/pvr_border.c:104: FINISHME: Devices without tpu_border_colour_enhanced require entries for compressed formats to be stored in the table pre-compressed. I also get a constant stream of kernel error messages, all the same: powervr 13000000.gpu: [drm] Received unknown FWCCB command 2abc0069 And the first few frames seem to flicker. (Though that could also be the display driver that's at fault.) For reference, on the BeaglePlay I see: MESA: error: No hard coded idfwdf program. Returning empty program. MESA: error: No hard coded passthrough vertex shader. Returning empty shader. MESA: warning: ../src/imagination/vulkan/pvr_descriptor_set.c:1073: FINISHME: Entry tracker for allocations? Regards ChenYu > Anyway, please have a look and test. > > > Thanks > ChenYu > > [1] https://lore.kernel.org/dri-devel/20220815165156.118212-2-sarah.walker@xxxxxxxxxx/ > [2] https://gitlab.freedesktop.org/imagination/linux-firmware/-/tree/powervr > [3] https://github.com/SaschaWillems/Vulkan > [4] https://lore.kernel.org/dri-devel/f2b2671e-5acc-4dec-9c2e-3c9cd2e1f19e@xxxxxxxxxx/ > > Chen-Yu Tsai (6): > dt-bindings: clock: mediatek: Add mt8173 mfgtop > clk: mediatek: Add mt8173-mfgtop driver > dt-bindings: gpu: powervr-rogue: Add MediaTek MT8173 GPU > drm/imagination: Add compatible string entry for Series6XT > arm64: dts: mediatek: mt8173: Fix MFG_ASYNC power domain clock > arm64: dts: mediatek: mt8173: Add GPU device nodes > > .../clock/mediatek,mt8173-mfgtop.yaml | 71 ++++++ > .../bindings/gpu/img,powervr-rogue.yaml | 24 +- > arch/arm64/boot/dts/mediatek/mt8173.dtsi | 26 +- > drivers/clk/mediatek/Kconfig | 9 + > drivers/clk/mediatek/Makefile | 1 + > drivers/clk/mediatek/clk-mt8173-mfgtop.c | 240 ++++++++++++++++++ > drivers/gpu/drm/imagination/pvr_drv.c | 1 + > include/dt-bindings/clock/mt8173-clk.h | 7 + > 8 files changed, 374 insertions(+), 5 deletions(-) > create mode 100644 Documentation/devicetree/bindings/clock/mediatek,mt8173-mfgtop.yaml > create mode 100644 drivers/clk/mediatek/clk-mt8173-mfgtop.c > > > base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0 > > Vulkan info output: > > WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD /usr/lib/aarch64-linux-gnu/libvulkan_virtio.so. Skipping this driver. > 'DISPLAY' environment variable not set... skipping surface info > ERROR: [../src/panfrost/vulkan/panvk_device.c:386] Code 0 : WARNING: panvk is not a conformant vulkan implementation, pass PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1 if you know what you're doing. (VK_ERROR_INCOMPATIBLE_DRIVER) > MESA: error: No hard coded idfwdf program. Returning empty program. > MESA: error: No hard coded passthrough rta vertex shader. Returning empty shader. > MESA: error: No hard coded passthrough vertex shader. Returning empty shader. > MESA: warning: ../src/imagination/vulkan/pvr_job_context.c:71: FINISHME: Missing reset support for brn51764 > MESA: warning: ../src/imagination/vulkan/pvr_job_context.c:74: FINISHME: Missing reset support for brn58839 > MESA: warning: ../src/imagination/vulkan/pvr_border.c:104: FINISHME: Devices without tpu_border_colour_enhanced require entries for compressed formats to be stored in the table pre-compressed. > ========== > VULKANINFO > ========== > > Vulkan Instance Version: 1.3.280 > > > Instance Extensions: count = 23 > =============================== > 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_EXT_surface_maintenance1 : extension revision 1 > VK_EXT_swapchain_colorspace : extension revision 4 > 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 > VK_LUNARG_direct_driver_loading : extension revision 1 > > Layers: count = 2 > ================= > VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.3.211, layer version 1: > Layer Extensions: count = 0 > Devices: count = 2 > GPU id = 0 (Imagination PowerVR Rogue GX6250) > Layer-Device Extensions: count = 0 > > GPU id = 1 (llvmpipe (LLVM 17.0.6, 128 bits)) > Layer-Device Extensions: count = 0 > > VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.3.211, layer version 1: > Layer Extensions: count = 0 > Devices: count = 2 > GPU id = 0 (Imagination PowerVR Rogue GX6250) > Layer-Device Extensions: count = 0 > > GPU id = 1 (llvmpipe (LLVM 17.0.6, 128 bits)) > Layer-Device Extensions: count = 0 > > Device Properties and Extensions: > ================================= > GPU0: > VkPhysicalDeviceProperties: > --------------------------- > apiVersion = 1.0.274 (4194578) > driverVersion = 24.0.8 (100663304) > vendorID = 0x1010 > deviceID = 0x6250 > deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU > deviceName = Imagination PowerVR Rogue GX6250 > pipelineCacheUUID = 6ddf30eb-d118-41f1-455f-580ae751c27b > > VkPhysicalDeviceLimits: > ----------------------- > maxImageDimension1D = 8192 > maxImageDimension2D = 8192 > maxImageDimension3D = 2048 > maxImageDimensionCube = 8192 > maxImageArrayLayers = 2048 > maxTexelBufferElements = 65536 > maxUniformBufferRange = 134217728 > maxStorageBufferRange = 134217728 > maxPushConstantsSize = 256 > maxMemoryAllocationCount = 4294967295 > maxSamplerAllocationCount = 4294967295 > bufferImageGranularity = 0x00000001 > sparseAddressSpaceSize = 0x4000000000 > maxBoundDescriptorSets = 4 > maxPerStageDescriptorSamplers = 32 > maxPerStageDescriptorUniformBuffers = 64 > maxPerStageDescriptorStorageBuffers = 36 > maxPerStageDescriptorSampledImages = 48 > maxPerStageDescriptorStorageImages = 8 > maxPerStageDescriptorInputAttachments = 8 > maxPerStageResources = 224 > maxDescriptorSetSamplers = 256 > maxDescriptorSetUniformBuffers = 256 > maxDescriptorSetUniformBuffersDynamic = 8 > maxDescriptorSetStorageBuffers = 256 > maxDescriptorSetStorageBuffersDynamic = 8 > maxDescriptorSetSampledImages = 256 > maxDescriptorSetStorageImages = 256 > maxDescriptorSetInputAttachments = 256 > maxVertexInputAttributes = 16 > maxVertexInputBindings = 16 > maxVertexInputAttributeOffset = 65535 > maxVertexInputBindingStride = 2147483648 > maxVertexOutputComponents = 128 > maxTessellationGenerationLevel = 0 > maxTessellationPatchSize = 0 > maxTessellationControlPerVertexInputComponents = 0 > maxTessellationControlPerVertexOutputComponents = 0 > maxTessellationControlPerPatchOutputComponents = 0 > maxTessellationControlTotalOutputComponents = 0 > maxTessellationEvaluationInputComponents = 0 > maxTessellationEvaluationOutputComponents = 0 > maxGeometryShaderInvocations = 0 > maxGeometryInputComponents = 0 > maxGeometryOutputComponents = 0 > maxGeometryOutputVertices = 0 > maxGeometryTotalOutputComponents = 0 > maxFragmentInputComponents = 128 > maxFragmentOutputAttachments = 8 > maxFragmentDualSrcAttachments = 0 > maxFragmentCombinedOutputResources = 52 > maxComputeSharedMemorySize = 16384 > maxComputeWorkGroupCount: count = 3 > 65536 > 65536 > 65536 > maxComputeWorkGroupInvocations = 512 > maxComputeWorkGroupSize: count = 3 > 512 > 512 > 64 > subPixelPrecisionBits = 8 > subTexelPrecisionBits = 8 > mipmapPrecisionBits = 8 > maxDrawIndexedIndexValue = 4294967295 > maxDrawIndirectCount = 2147483648 > maxSamplerLodBias = 16 > maxSamplerAnisotropy = 1 > maxViewports = 1 > maxViewportDimensions: count = 2 > 8192 > 8192 > viewportBoundsRange: count = 2 > -16384 > 16384 > viewportSubPixelBits = 0 > minMemoryMapAlignment = 64 > minTexelBufferOffsetAlignment = 0x00000010 > minUniformBufferOffsetAlignment = 0x00000004 > minStorageBufferOffsetAlignment = 0x00000004 > minTexelOffset = -8 > maxTexelOffset = 7 > minTexelGatherOffset = -8 > maxTexelGatherOffset = 7 > minInterpolationOffset = -0.5 > maxInterpolationOffset = 0.5 > subPixelInterpolationOffsetBits = 4 > maxFramebufferWidth = 8192 > maxFramebufferHeight = 8192 > 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 = 4 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_2_BIT > SAMPLE_COUNT_4_BIT > SAMPLE_COUNT_8_BIT > framebufferNoAttachmentsSampleCounts: count = 4 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_2_BIT > SAMPLE_COUNT_4_BIT > SAMPLE_COUNT_8_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 = 4 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_2_BIT > SAMPLE_COUNT_4_BIT > SAMPLE_COUNT_8_BIT > storageImageSampleCounts: count = 4 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_2_BIT > SAMPLE_COUNT_4_BIT > SAMPLE_COUNT_8_BIT > maxSampleMaskWords = 1 > timestampComputeAndGraphics = false > timestampPeriod = 0 > maxClipDistances = 8 > maxCullDistances = 8 > maxCombinedClipAndCullDistances = 8 > discreteQueuePriorities = 2 > pointSizeRange: count = 2 > 1 > 511 > lineWidthRange: count = 2 > 0.0625 > 16 > pointSizeGranularity = 0.0625 > lineWidthGranularity = 0.0625 > strictLines = false > standardSampleLocations = true > optimalBufferCopyOffsetAlignment = 0x00000004 > optimalBufferCopyRowPitchAlignment = 0x00000004 > nonCoherentAtomSize = 0x00000001 > > VkPhysicalDeviceSparseProperties: > --------------------------------- > residencyStandard2DBlockShape = false > residencyStandard2DMultisampleBlockShape = false > residencyStandard3DBlockShape = false > residencyAlignedMipSize = false > residencyNonResidentStrict = false > > VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT: > -------------------------------------------------- > storageTexelBufferOffsetAlignmentBytes = 0x00000010 > storageTexelBufferOffsetSingleTexelAlignment = true > uniformTexelBufferOffsetAlignmentBytes = 0x00000010 > uniformTexelBufferOffsetSingleTexelAlignment = false > > VkPhysicalDeviceTimelineSemaphorePropertiesKHR: > ----------------------------------------------- > maxTimelineSemaphoreValueDifference = 18446744073709551615 > > Device Extensions: count = 20 > VK_EXT_external_memory_dma_buf : extension revision 1 > VK_EXT_host_query_reset : extension revision 1 > VK_EXT_private_data : extension revision 1 > VK_EXT_scalar_block_layout : extension revision 1 > VK_EXT_texel_buffer_alignment : extension revision 1 > VK_EXT_tooling_info : extension revision 1 > VK_KHR_bind_memory2 : extension revision 1 > VK_KHR_copy_commands2 : 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 2 > VK_KHR_get_memory_requirements2 : extension revision 1 > VK_KHR_image_format_list : extension revision 1 > VK_KHR_swapchain : extension revision 70 > VK_KHR_timeline_semaphore : extension revision 2 > VK_KHR_uniform_buffer_standard_layout : extension revision 1 > > VkQueueFamilyProperties: > ======================== > queueProperties[0]: > ------------------- > minImageTransferGranularity = (1,1,1) > queueCount = 2 > queueFlags = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT > timestampValidBits = 0 > present support = false > > VkPhysicalDeviceMemoryProperties: > ================================= > memoryHeaps: count = 1 > memoryHeaps[0]: > size = 1752969216 (0x687c3000) (1.63 GiB) > flags: count = 1 > MEMORY_HEAP_DEVICE_LOCAL_BIT > memoryTypes: count = 1 > memoryTypes[0]: > heapIndex = 0 > propertyFlags = 0x0007: count = 3 > 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_D24_UNORM_S8_UINT > (non-sparse) > IMAGE_TILING_LINEAR: > color images > (non-sparse) > > VkPhysicalDeviceFeatures: > ========================= > robustBufferAccess = true > fullDrawIndexUint32 = true > imageCubeArray = true > independentBlend = false > geometryShader = false > tessellationShader = false > sampleRateShading = true > dualSrcBlend = false > logicOp = false > multiDrawIndirect = true > drawIndirectFirstInstance = true > depthClamp = true > depthBiasClamp = true > fillModeNonSolid = false > depthBounds = false > wideLines = true > largePoints = true > alphaToOne = false > multiViewport = false > samplerAnisotropy = false > textureCompressionETC2 = true > textureCompressionASTC_LDR = false > textureCompressionBC = false > occlusionQueryPrecise = false > pipelineStatisticsQuery = false > vertexPipelineStoresAndAtomics = true > fragmentStoresAndAtomics = true > shaderTessellationAndGeometryPointSize = false > shaderImageGatherExtended = false > shaderStorageImageExtendedFormats = true > shaderStorageImageMultisample = false > shaderStorageImageReadWithoutFormat = true > shaderStorageImageWriteWithoutFormat = false > shaderUniformBufferArrayDynamicIndexing = true > shaderSampledImageArrayDynamicIndexing = true > shaderStorageBufferArrayDynamicIndexing = true > shaderStorageImageArrayDynamicIndexing = true > shaderClipDistance = false > shaderCullDistance = false > shaderFloat64 = false > shaderInt64 = true > shaderInt16 = true > shaderResourceResidency = false > shaderResourceMinLod = false > sparseBinding = false > sparseResidencyBuffer = false > sparseResidencyImage2D = false > sparseResidencyImage3D = false > sparseResidency2Samples = false > sparseResidency4Samples = false > sparseResidency8Samples = false > sparseResidency16Samples = false > sparseResidencyAliased = false > variableMultisampleRate = false > inheritedQueries = false > > VkPhysicalDeviceHostQueryResetFeaturesEXT: > ------------------------------------------ > hostQueryReset = true > > VkPhysicalDevicePrivateDataFeaturesEXT: > --------------------------------------- > privateData = true > > VkPhysicalDeviceScalarBlockLayoutFeaturesEXT: > --------------------------------------------- > scalarBlockLayout = true > > VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT: > ------------------------------------------------ > texelBufferAlignment = true > > VkPhysicalDeviceTimelineSemaphoreFeaturesKHR: > --------------------------------------------- > timelineSemaphore = true > > VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR: > ------------------------------------------------------- > uniformBufferStandardLayout = true > > > GPU1: > VkPhysicalDeviceProperties: > --------------------------- > apiVersion = 1.3.274 (4206866) > driverVersion = 0.0.1 (1) > vendorID = 0x10005 > deviceID = 0x0000 > deviceType = PHYSICAL_DEVICE_TYPE_CPU > deviceName = llvmpipe (LLVM 17.0.6, 128 bits) > pipelineCacheUUID = 32342e30-2e38-2d31-2b70-316161616161 > > VkPhysicalDeviceLimits: > ----------------------- > maxImageDimension1D = 16384 > maxImageDimension2D = 16384 > maxImageDimension3D = 4096 > maxImageDimensionCube = 32768 > maxImageArrayLayers = 2048 > maxTexelBufferElements = 134217728 > maxUniformBufferRange = 65536 > maxStorageBufferRange = 134217728 > maxPushConstantsSize = 256 > maxMemoryAllocationCount = 4294967295 > maxSamplerAllocationCount = 32768 > bufferImageGranularity = 0x00000040 > sparseAddressSpaceSize = 0x00000000 > maxBoundDescriptorSets = 8 > maxPerStageDescriptorSamplers = 1000000 > maxPerStageDescriptorUniformBuffers = 1000000 > maxPerStageDescriptorStorageBuffers = 1000000 > maxPerStageDescriptorSampledImages = 1000000 > maxPerStageDescriptorStorageImages = 1000000 > maxPerStageDescriptorInputAttachments = 1000000 > maxPerStageResources = 1000000 > maxDescriptorSetSamplers = 1000000 > maxDescriptorSetUniformBuffers = 1000000 > maxDescriptorSetUniformBuffersDynamic = 1000000 > maxDescriptorSetStorageBuffers = 1000000 > maxDescriptorSetStorageBuffersDynamic = 1000000 > maxDescriptorSetSampledImages = 1000000 > maxDescriptorSetStorageImages = 1000000 > maxDescriptorSetInputAttachments = 1000000 > maxVertexInputAttributes = 32 > maxVertexInputBindings = 32 > maxVertexInputAttributeOffset = 2047 > maxVertexInputBindingStride = 2048 > maxVertexOutputComponents = 128 > maxTessellationGenerationLevel = 64 > maxTessellationPatchSize = 32 > maxTessellationControlPerVertexInputComponents = 128 > maxTessellationControlPerVertexOutputComponents = 128 > maxTessellationControlPerPatchOutputComponents = 128 > maxTessellationControlTotalOutputComponents = 4096 > maxTessellationEvaluationInputComponents = 128 > maxTessellationEvaluationOutputComponents = 128 > maxGeometryShaderInvocations = 32 > maxGeometryInputComponents = 64 > maxGeometryOutputComponents = 128 > maxGeometryOutputVertices = 1024 > maxGeometryTotalOutputComponents = 1024 > maxFragmentInputComponents = 128 > maxFragmentOutputAttachments = 8 > maxFragmentDualSrcAttachments = 2 > maxFragmentCombinedOutputResources = 104 > maxComputeSharedMemorySize = 32768 > maxComputeWorkGroupCount: count = 3 > 65535 > 65535 > 65535 > maxComputeWorkGroupInvocations = 1024 > maxComputeWorkGroupSize: count = 3 > 1024 > 1024 > 1024 > subPixelPrecisionBits = 8 > subTexelPrecisionBits = 8 > mipmapPrecisionBits = 4 > maxDrawIndexedIndexValue = 4294967295 > maxDrawIndirectCount = 4294967295 > maxSamplerLodBias = 16 > maxSamplerAnisotropy = 16 > maxViewports = 16 > maxViewportDimensions: count = 2 > 16384 > 16384 > viewportBoundsRange: count = 2 > -32768 > 32768 > viewportSubPixelBits = 0 > minMemoryMapAlignment = 64 > minTexelBufferOffsetAlignment = 0x00000010 > minUniformBufferOffsetAlignment = 0x00000010 > minStorageBufferOffsetAlignment = 0x00000010 > minTexelOffset = -32 > maxTexelOffset = 31 > minTexelGatherOffset = -32 > maxTexelGatherOffset = 31 > minInterpolationOffset = -2 > maxInterpolationOffset = 2 > subPixelInterpolationOffsetBits = 8 > maxFramebufferWidth = 16384 > maxFramebufferHeight = 16384 > maxFramebufferLayers = 2048 > framebufferColorSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > framebufferDepthSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > framebufferStencilSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > framebufferNoAttachmentsSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > maxColorAttachments = 8 > sampledImageColorSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > sampledImageIntegerSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > sampledImageDepthSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > sampledImageStencilSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > storageImageSampleCounts: count = 2 > SAMPLE_COUNT_1_BIT > SAMPLE_COUNT_4_BIT > maxSampleMaskWords = 1 > timestampComputeAndGraphics = true > timestampPeriod = 1 > maxClipDistances = 8 > maxCullDistances = 8 > maxCombinedClipAndCullDistances = 8 > discreteQueuePriorities = 2 > pointSizeRange: count = 2 > 0 > 255 > lineWidthRange: count = 2 > 1 > 255 > pointSizeGranularity = 0.125 > lineWidthGranularity = 0.0078125 > strictLines = true > standardSampleLocations = true > optimalBufferCopyOffsetAlignment = 0x00000080 > optimalBufferCopyRowPitchAlignment = 0x00000080 > nonCoherentAtomSize = 0x00000040 > > VkPhysicalDeviceSparseProperties: > --------------------------------- > residencyStandard2DBlockShape = false > residencyStandard2DMultisampleBlockShape = false > residencyStandard3DBlockShape = false > residencyAlignedMipSize = false > residencyNonResidentStrict = false > > VkPhysicalDeviceCustomBorderColorPropertiesEXT: > ----------------------------------------------- > maxCustomBorderColorSamplers = 32768 > > VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT: > -------------------------------------------------------- > combinedImageSamplerDensityMapDescriptorSize = 0 > > VkPhysicalDeviceDescriptorBufferPropertiesEXT: > ---------------------------------------------- > combinedImageSamplerDescriptorSingleArray = true > bufferlessPushDescriptors = true > allowSamplerImageViewPostSubmitCreation = false > descriptorBufferOffsetAlignment = 0x00000004 > maxDescriptorBufferBindings = 8 > maxResourceDescriptorBufferBindings = 8 > maxSamplerDescriptorBufferBindings = 8 > maxEmbeddedImmutableSamplerBindings = 8 > maxEmbeddedImmutableSamplers = 2032 > bufferCaptureReplayDescriptorDataSize = 0 > imageCaptureReplayDescriptorDataSize = 0 > imageViewCaptureReplayDescriptorDataSize = 0 > samplerCaptureReplayDescriptorDataSize = 0 > accelerationStructureCaptureReplayDescriptorDataSize = 0 > samplerDescriptorSize = 256 > combinedImageSamplerDescriptorSize = 256 > sampledImageDescriptorSize = 256 > storageImageDescriptorSize = 256 > uniformTexelBufferDescriptorSize = 256 > robustUniformTexelBufferDescriptorSize = 256 > storageTexelBufferDescriptorSize = 256 > robustStorageTexelBufferDescriptorSize = 256 > uniformBufferDescriptorSize = 256 > robustUniformBufferDescriptorSize = 256 > storageBufferDescriptorSize = 256 > robustStorageBufferDescriptorSize = 256 > inputAttachmentDescriptorSize = 256 > accelerationStructureDescriptorSize = 0 > maxSamplerDescriptorBufferRange = 0x08000000 > maxResourceDescriptorBufferRange = 0x10000000 > samplerDescriptorBufferAddressSpaceSize = 0x08000000 > resourceDescriptorBufferAddressSpaceSize = 0x08000000 > descriptorBufferAddressSpaceSize = 0x08000000 > > VkPhysicalDeviceExtendedDynamicState3PropertiesEXT: > --------------------------------------------------- > dynamicPrimitiveTopologyUnrestricted = true > > VkPhysicalDeviceExternalMemoryHostPropertiesEXT: > ------------------------------------------------ > minImportedHostPointerAlignment = 0x00001000 > > VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT: > ----------------------------------------------------- > graphicsPipelineLibraryFastLinking = true > graphicsPipelineLibraryIndependentInterpolationDecoration = true > > VkPhysicalDeviceLineRasterizationPropertiesKHR: > ----------------------------------------------- > lineSubPixelPrecisionBits = 8 > > VkPhysicalDeviceMaintenance5PropertiesKHR: > ------------------------------------------ > earlyFragmentMultisampleCoverageAfterSampleCounting = true > earlyFragmentSampleMaskTestBeforeSampleCounting = false > depthStencilSwizzleOneSupport = false > polygonModePointSize = true > nonStrictSinglePixelWideLinesUseParallelogram = false > nonStrictWideLinesUseParallelogram = false > > VkPhysicalDeviceMaintenance6PropertiesKHR: > ------------------------------------------ > blockTexelViewCompatibleMultipleLayers = true > maxCombinedImageSamplerDescriptorCount = 3 > fragmentShadingRateClampCombinerInputs = false > > VkPhysicalDeviceMeshShaderPropertiesEXT: > ---------------------------------------- > maxTaskWorkGroupTotalCount = 4194304 > maxTaskWorkGroupCount: count = 3 > 65536 > 65536 > 65536 > maxTaskWorkGroupInvocations = 1024 > maxTaskWorkGroupSize: count = 3 > 1024 > 1024 > 1024 > maxTaskPayloadSize = 16384 > maxTaskSharedMemorySize = 32768 > maxTaskPayloadAndSharedMemorySize = 32768 > maxMeshWorkGroupTotalCount = 4194304 > maxMeshWorkGroupCount: count = 3 > 65536 > 65536 > 65536 > maxMeshWorkGroupInvocations = 1024 > maxMeshWorkGroupSize: count = 3 > 1024 > 1024 > 1024 > maxMeshSharedMemorySize = 28672 > maxMeshPayloadAndSharedMemorySize = 45056 > maxMeshOutputMemorySize = 32768 > maxMeshPayloadAndOutputMemorySize = 49152 > maxMeshOutputComponents = 128 > maxMeshOutputVertices = 256 > maxMeshOutputPrimitives = 256 > maxMeshOutputLayers = 8 > maxMeshMultiviewViewCount = 0 > meshOutputPerVertexGranularity = 1 > meshOutputPerPrimitiveGranularity = 1 > maxPreferredTaskWorkGroupInvocations = 64 > maxPreferredMeshWorkGroupInvocations = 128 > prefersLocalInvocationVertexOutput = true > prefersLocalInvocationPrimitiveOutput = true > prefersCompactVertexOutput = true > prefersCompactPrimitiveOutput = false > > VkPhysicalDeviceMultiDrawPropertiesEXT: > --------------------------------------- > maxMultiDrawCount = 2048 > > VkPhysicalDeviceNestedCommandBufferPropertiesEXT: > ------------------------------------------------- > maxCommandBufferNestingLevel = 4294967295 > > VkPhysicalDeviceProvokingVertexPropertiesEXT: > --------------------------------------------- > provokingVertexModePerPipeline = true > transformFeedbackPreservesTriangleFanProvokingVertex = true > > VkPhysicalDevicePushDescriptorPropertiesKHR: > -------------------------------------------- > maxPushDescriptors = 32 > > VkPhysicalDeviceRobustness2PropertiesEXT: > ----------------------------------------- > robustStorageBufferAccessSizeAlignment = 0x00000001 > robustUniformBufferAccessSizeAlignment = 0x00000001 > > VkPhysicalDeviceShaderObjectPropertiesEXT: > ------------------------------------------ > shaderBinaryUUID = 32342e30-2e38-2d31-2b70-316161616161 > shaderBinaryVersion = 1 > > VkPhysicalDeviceTransformFeedbackPropertiesEXT: > ----------------------------------------------- > maxTransformFeedbackStreams = 4 > maxTransformFeedbackBuffers = 4 > maxTransformFeedbackBufferSize = 0xffffffff > maxTransformFeedbackStreamDataSize = 512 > maxTransformFeedbackBufferDataSize = 512 > maxTransformFeedbackBufferDataStride = 512 > transformFeedbackQueries = true > transformFeedbackStreamsLinesTriangles = false > transformFeedbackRasterizationStreamSelect = false > transformFeedbackDraw = true > > VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT: > ---------------------------------------------------- > maxVertexAttribDivisor = 4294967295 > > VkPhysicalDeviceVulkan11Properties: > ----------------------------------- > deviceUUID = 6d657361-3234-2e30-2e38-2d312b703100 > driverUUID = 6c6c766d-7069-7065-5555-494400000000 > deviceNodeMask = 0 > deviceLUIDValid = false > subgroupSize = 4 > subgroupSupportedStages: count = 4 > SHADER_STAGE_FRAGMENT_BIT > SHADER_STAGE_COMPUTE_BIT > SHADER_STAGE_TASK_BIT_EXT > SHADER_STAGE_MESH_BIT_EXT > subgroupSupportedOperations: count = 7 > SUBGROUP_FEATURE_BASIC_BIT > SUBGROUP_FEATURE_VOTE_BIT > SUBGROUP_FEATURE_ARITHMETIC_BIT > SUBGROUP_FEATURE_BALLOT_BIT > SUBGROUP_FEATURE_SHUFFLE_BIT > SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT > SUBGROUP_FEATURE_QUAD_BIT > subgroupQuadOperationsInAllStages = false > pointClippingBehavior = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES > maxMultiviewViewCount = 6 > maxMultiviewInstanceIndex = 2147483647 > protectedNoFault = false > maxPerSetDescriptors = 1000000 > maxMemoryAllocationSize = 0x80000000 > > VkPhysicalDeviceVulkan12Properties: > ----------------------------------- > driverID = DRIVER_ID_MESA_LLVMPIPE > driverName = llvmpipe > driverInfo = Mesa 24.0.8-1+p1 (LLVM 17.0.6) > conformanceVersion: > major = 1 > minor = 3 > subminor = 1 > patch = 1 > 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 = false > shaderRoundingModeRTZFloat64 = false > maxUpdateAfterBindDescriptorsInAllPools = 4294967295 > shaderUniformBufferArrayNonUniformIndexingNative = true > shaderSampledImageArrayNonUniformIndexingNative = true > shaderStorageBufferArrayNonUniformIndexingNative = true > shaderStorageImageArrayNonUniformIndexingNative = true > shaderInputAttachmentArrayNonUniformIndexingNative = true > robustBufferAccessUpdateAfterBind = true > quadDivergentImplicitLod = true > maxPerStageDescriptorUpdateAfterBindSamplers = 1000000 > maxPerStageDescriptorUpdateAfterBindUniformBuffers = 1000000 > maxPerStageDescriptorUpdateAfterBindStorageBuffers = 1000000 > maxPerStageDescriptorUpdateAfterBindSampledImages = 1000000 > maxPerStageDescriptorUpdateAfterBindStorageImages = 1000000 > maxPerStageDescriptorUpdateAfterBindInputAttachments = 1000000 > maxPerStageUpdateAfterBindResources = 1000000 > maxDescriptorSetUpdateAfterBindSamplers = 1000000 > maxDescriptorSetUpdateAfterBindUniformBuffers = 1000000 > maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 1000000 > maxDescriptorSetUpdateAfterBindStorageBuffers = 1000000 > maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 1000000 > maxDescriptorSetUpdateAfterBindSampledImages = 1000000 > maxDescriptorSetUpdateAfterBindStorageImages = 1000000 > maxDescriptorSetUpdateAfterBindInputAttachments = 1000000 > supportedDepthResolveModes: count = 2 > RESOLVE_MODE_SAMPLE_ZERO_BIT > RESOLVE_MODE_AVERAGE_BIT > supportedStencilResolveModes: count = 1 > RESOLVE_MODE_SAMPLE_ZERO_BIT > independentResolveNone = false > independentResolve = false > filterMinmaxSingleComponentFormats = true > filterMinmaxImageComponentMapping = true > maxTimelineSemaphoreValueDifference = 18446744073709551615 > framebufferIntegerColorSampleCounts: count = 1 > SAMPLE_COUNT_1_BIT > > VkPhysicalDeviceVulkan13Properties: > ----------------------------------- > minSubgroupSize = 4 > maxSubgroupSize = 4 > maxComputeWorkgroupSubgroups = 32 > requiredSubgroupSizeStages: count = 2 > SHADER_STAGE_FRAGMENT_BIT > SHADER_STAGE_COMPUTE_BIT > maxInlineUniformBlockSize = 4096 > maxPerStageDescriptorInlineUniformBlocks = 8 > maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 8 > maxDescriptorSetInlineUniformBlocks = 8 > maxDescriptorSetUpdateAfterBindInlineUniformBlocks = 8 > maxInlineUniformTotalSize = 262144 > integerDotProduct8BitUnsignedAccelerated = false > integerDotProduct8BitSignedAccelerated = false > integerDotProduct8BitMixedSignednessAccelerated = false > integerDotProduct4x8BitPackedUnsignedAccelerated = false > integerDotProduct4x8BitPackedSignedAccelerated = false > integerDotProduct4x8BitPackedMixedSignednessAccelerated = false > integerDotProduct16BitUnsignedAccelerated = false > integerDotProduct16BitSignedAccelerated = false > integerDotProduct16BitMixedSignednessAccelerated = false > integerDotProduct32BitUnsignedAccelerated = false > integerDotProduct32BitSignedAccelerated = false > integerDotProduct32BitMixedSignednessAccelerated = false > integerDotProduct64BitUnsignedAccelerated = false > integerDotProduct64BitSignedAccelerated = false > integerDotProduct64BitMixedSignednessAccelerated = false > integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = false > integerDotProductAccumulatingSaturating8BitSignedAccelerated = false > integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = false > integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = false > integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = false > integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = false > integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = false > integerDotProductAccumulatingSaturating16BitSignedAccelerated = false > integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = false > integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = false > integerDotProductAccumulatingSaturating32BitSignedAccelerated = false > integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = false > integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = false > integerDotProductAccumulatingSaturating64BitSignedAccelerated = false > integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = false > storageTexelBufferOffsetAlignmentBytes = 0x00000010 > storageTexelBufferOffsetSingleTexelAlignment = true > uniformTexelBufferOffsetAlignmentBytes = 0x00000010 > uniformTexelBufferOffsetSingleTexelAlignment = true > maxBufferSize = 0xffffffff > > VkPhysicalDeviceHostImageCopyPropertiesEXT: > ------------------------------------------- > copySrcLayoutCount = 23 > pCopySrcLayouts: count = 23 > IMAGE_LAYOUT_GENERAL > IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL > IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL > IMAGE_LAYOUT_PREINITIALIZED > IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_PRESENT_SRC_KHR > IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR > IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR > IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR > IMAGE_LAYOUT_SHARED_PRESENT_KHR > IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT > IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR > copyDstLayoutCount = 23 > pCopyDstLayouts: count = 23 > IMAGE_LAYOUT_GENERAL > IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL > IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL > IMAGE_LAYOUT_PREINITIALIZED > IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_READ_ONLY_OPTIMAL > IMAGE_LAYOUT_ATTACHMENT_OPTIMAL > IMAGE_LAYOUT_PRESENT_SRC_KHR > IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR > IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR > IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR > IMAGE_LAYOUT_SHARED_PRESENT_KHR > IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT > IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR > optimalTilingLayoutUUID = 32342e30-2e38-2d31-2b70-316161616161 > identicalMemoryTypeRequirements = false > > Device Extensions: count = 124 > VK_AMDX_shader_enqueue : extension revision 1 > VK_ARM_rasterization_order_attachment_access : extension revision 1 > VK_EXT_4444_formats : extension revision 1 > VK_EXT_attachment_feedback_loop_dynamic_state : extension revision 1 > VK_EXT_attachment_feedback_loop_layout : extension revision 2 > VK_EXT_border_color_swizzle : extension revision 1 > VK_EXT_calibrated_timestamps : extension revision 2 > VK_EXT_color_write_enable : extension revision 1 > VK_EXT_conditional_rendering : extension revision 2 > 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_buffer : extension revision 1 > VK_EXT_descriptor_indexing : extension revision 2 > VK_EXT_dynamic_rendering_unused_attachments : extension revision 1 > VK_EXT_extended_dynamic_state : extension revision 1 > VK_EXT_extended_dynamic_state2 : extension revision 1 > VK_EXT_extended_dynamic_state3 : extension revision 2 > VK_EXT_external_memory_host : extension revision 1 > VK_EXT_graphics_pipeline_library : extension revision 1 > VK_EXT_host_image_copy : extension revision 1 > VK_EXT_host_query_reset : extension revision 1 > VK_EXT_image_2d_view_of_3d : extension revision 1 > VK_EXT_image_robustness : extension revision 1 > VK_EXT_image_sliced_view_of_3d : 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_memory_priority : extension revision 1 > VK_EXT_mesh_shader : extension revision 1 > VK_EXT_multi_draw : extension revision 1 > VK_EXT_multisampled_render_to_single_sampled : extension revision 1 > VK_EXT_mutable_descriptor_type : extension revision 1 > VK_EXT_nested_command_buffer : extension revision 1 > VK_EXT_non_seamless_cube_map : extension revision 1 > VK_EXT_pageable_device_local_memory : 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_primitives_generated_query : extension revision 1 > VK_EXT_private_data : extension revision 1 > VK_EXT_provoking_vertex : extension revision 1 > VK_EXT_rasterization_order_attachment_access : extension revision 1 > VK_EXT_robustness2 : 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_atomic_float2 : extension revision 1 > VK_EXT_shader_demote_to_helper_invocation : extension revision 1 > VK_EXT_shader_object : 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_texel_buffer_alignment : 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_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_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_memory : extension revision 1 > VK_KHR_external_memory_fd : extension revision 1 > VK_KHR_external_semaphore : extension revision 1 > VK_KHR_format_feature_flags2 : extension revision 2 > VK_KHR_get_memory_requirements2 : extension revision 1 > VK_KHR_image_format_list : extension revision 1 > VK_KHR_imageless_framebuffer : extension revision 1 > VK_KHR_incremental_present : extension revision 2 > VK_KHR_maintenance1 : extension revision 2 > VK_KHR_maintenance2 : extension revision 1 > VK_KHR_maintenance3 : extension revision 1 > VK_KHR_maintenance4 : extension revision 2 > VK_KHR_maintenance5 : extension revision 1 > VK_KHR_maintenance6 : extension revision 1 > VK_KHR_map_memory2 : extension revision 1 > VK_KHR_multiview : extension revision 1 > VK_KHR_pipeline_library : 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_zero_initialize_workgroup_memory : extension revision 1 > VK_NV_device_generated_commands : extension revision 3 > > VkQueueFamilyProperties: > ======================== > queueProperties[0]: > ------------------- > minImageTransferGranularity = (1,1,1) > queueCount = 1 > queueFlags = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT > timestampValidBits = 64 > present support = false > > VkPhysicalDeviceMemoryProperties: > ================================= > memoryHeaps: count = 1 > memoryHeaps[0]: > size = 3505938432 (0xd0f86000) (3.27 GiB) > budget = 3505938432 (0xd0f86000) (3.27 GiB) > usage = 522092544 (0x1f1e8000) (497.91 MiB) > flags: count = 1 > MEMORY_HEAP_DEVICE_LOCAL_BIT > memoryTypes: count = 1 > memoryTypes[0]: > heapIndex = 0 > propertyFlags = 0x000f: count = 4 > MEMORY_PROPERTY_DEVICE_LOCAL_BIT > MEMORY_PROPERTY_HOST_VISIBLE_BIT > MEMORY_PROPERTY_HOST_COHERENT_BIT > MEMORY_PROPERTY_HOST_CACHED_BIT > usable for: > IMAGE_TILING_OPTIMAL: > 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 > (non-sparse) > IMAGE_TILING_LINEAR: > color images > (non-sparse) > > 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 = false > 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 = false > shaderResourceMinLod = false > sparseBinding = false > sparseResidencyBuffer = false > sparseResidencyImage2D = false > sparseResidencyImage3D = false > sparseResidency2Samples = false > sparseResidency4Samples = false > sparseResidency8Samples = false > sparseResidency16Samples = false > sparseResidencyAliased = false > variableMultisampleRate = false > inheritedQueries = false > > VkPhysicalDevice4444FormatsFeaturesEXT: > --------------------------------------- > formatA4R4G4B4 = true > formatA4B4G4R4 = true > > VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT: > -------------------------------------------------------------- > attachmentFeedbackLoopDynamicState = true > > VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT: > -------------------------------------------------------- > attachmentFeedbackLoopLayout = true > > VkPhysicalDeviceBorderColorSwizzleFeaturesEXT: > ---------------------------------------------- > borderColorSwizzle = true > borderColorSwizzleFromImage = true > > VkPhysicalDeviceColorWriteEnableFeaturesEXT: > -------------------------------------------- > colorWriteEnable = true > > VkPhysicalDeviceConditionalRenderingFeaturesEXT: > ------------------------------------------------ > conditionalRendering = true > inheritedConditionalRendering = false > > VkPhysicalDeviceCustomBorderColorFeaturesEXT: > --------------------------------------------- > customBorderColors = true > customBorderColorWithoutFormat = true > > VkPhysicalDeviceDepthClipControlFeaturesEXT: > -------------------------------------------- > depthClipControl = true > > VkPhysicalDeviceDepthClipEnableFeaturesEXT: > ------------------------------------------- > depthClipEnable = true > > VkPhysicalDeviceDescriptorBufferFeaturesEXT: > -------------------------------------------- > descriptorBuffer = true > descriptorBufferCaptureReplay = false > descriptorBufferImageLayoutIgnored = true > descriptorBufferPushDescriptors = true > > VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT: > ------------------------------------------------------------- > dynamicRenderingUnusedAttachments = true > > VkPhysicalDeviceExtendedDynamicState2FeaturesEXT: > ------------------------------------------------- > extendedDynamicState2 = true > extendedDynamicState2LogicOp = true > extendedDynamicState2PatchControlPoints = true > > VkPhysicalDeviceExtendedDynamicState3FeaturesEXT: > ------------------------------------------------- > extendedDynamicState3TessellationDomainOrigin = true > extendedDynamicState3DepthClampEnable = true > extendedDynamicState3PolygonMode = true > extendedDynamicState3RasterizationSamples = true > extendedDynamicState3SampleMask = true > extendedDynamicState3AlphaToCoverageEnable = true > extendedDynamicState3AlphaToOneEnable = true > extendedDynamicState3LogicOpEnable = true > extendedDynamicState3ColorBlendEnable = true > extendedDynamicState3ColorBlendEquation = true > extendedDynamicState3ColorWriteMask = true > extendedDynamicState3RasterizationStream = false > extendedDynamicState3ConservativeRasterizationMode = false > extendedDynamicState3ExtraPrimitiveOverestimationSize = false > extendedDynamicState3DepthClipEnable = true > extendedDynamicState3SampleLocationsEnable = false > extendedDynamicState3ColorBlendAdvanced = false > extendedDynamicState3ProvokingVertexMode = true > extendedDynamicState3LineRasterizationMode = true > extendedDynamicState3LineStippleEnable = true > extendedDynamicState3DepthClipNegativeOneToOne = true > extendedDynamicState3ViewportWScalingEnable = false > extendedDynamicState3ViewportSwizzle = false > extendedDynamicState3CoverageToColorEnable = false > extendedDynamicState3CoverageToColorLocation = false > extendedDynamicState3CoverageModulationMode = false > extendedDynamicState3CoverageModulationTableEnable = false > extendedDynamicState3CoverageModulationTable = false > extendedDynamicState3CoverageReductionMode = false > extendedDynamicState3RepresentativeFragmentTestEnable = false > extendedDynamicState3ShadingRateImageEnable = false > > VkPhysicalDeviceExtendedDynamicStateFeaturesEXT: > ------------------------------------------------ > extendedDynamicState = true > > VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT: > --------------------------------------------------- > graphicsPipelineLibrary = true > > VkPhysicalDeviceHostImageCopyFeaturesEXT: > ----------------------------------------- > hostImageCopy = true > > VkPhysicalDeviceImage2DViewOf3DFeaturesEXT: > ------------------------------------------- > image2DViewOf3D = true > sampler2DViewOf3D = true > > VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT: > ----------------------------------------------- > imageSlicedViewOf3D = true > > VkPhysicalDeviceIndexTypeUint8FeaturesKHR: > ------------------------------------------ > indexTypeUint8 = true > > VkPhysicalDeviceLineRasterizationFeaturesKHR: > --------------------------------------------- > rectangularLines = true > bresenhamLines = true > smoothLines = true > stippledRectangularLines = true > stippledBresenhamLines = true > stippledSmoothLines = true > > VkPhysicalDeviceMaintenance5FeaturesKHR: > ---------------------------------------- > maintenance5 = true > > VkPhysicalDeviceMaintenance6FeaturesKHR: > ---------------------------------------- > maintenance6 = true > > VkPhysicalDeviceMemoryPriorityFeaturesEXT: > ------------------------------------------ > memoryPriority = true > > VkPhysicalDeviceMeshShaderFeaturesEXT: > -------------------------------------- > taskShader = true > meshShader = true > multiviewMeshShader = false > primitiveFragmentShadingRateMeshShader = false > meshShaderQueries = true > > VkPhysicalDeviceMultiDrawFeaturesEXT: > ------------------------------------- > multiDraw = true > > VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT: > ------------------------------------------------------------- > multisampledRenderToSingleSampled = true > > VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT: > ------------------------------------------------- > mutableDescriptorType = true > > VkPhysicalDeviceNestedCommandBufferFeaturesEXT: > ----------------------------------------------- > nestedCommandBuffer = true > nestedCommandBufferRendering = true > nestedCommandBufferSimultaneousUse = true > > VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT: > ---------------------------------------------- > nonSeamlessCubeMap = true > > VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT: > ----------------------------------------------------- > pageableDeviceLocalMemory = true > > VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT: > -------------------------------------------------------- > primitiveTopologyListRestart = true > primitiveTopologyPatchListRestart = true > > VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT: > ---------------------------------------------------- > primitivesGeneratedQuery = true > primitivesGeneratedQueryWithRasterizerDiscard = true > primitivesGeneratedQueryWithNonZeroStreams = true > > VkPhysicalDeviceProvokingVertexFeaturesEXT: > ------------------------------------------- > provokingVertexLast = true > transformFeedbackPreservesProvokingVertex = true > > VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT: > -------------------------------------------------------------- > rasterizationOrderColorAttachmentAccess = true > rasterizationOrderDepthAttachmentAccess = true > rasterizationOrderStencilAttachmentAccess = true > > VkPhysicalDeviceRobustness2FeaturesEXT: > --------------------------------------- > robustBufferAccess2 = true > robustImageAccess2 = true > nullDescriptor = true > > VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT: > ---------------------------------------------- > shaderBufferFloat16Atomics = false > shaderBufferFloat16AtomicAdd = false > shaderBufferFloat16AtomicMinMax = false > shaderBufferFloat32AtomicMinMax = true > shaderBufferFloat64AtomicMinMax = false > shaderSharedFloat16Atomics = false > shaderSharedFloat16AtomicAdd = false > shaderSharedFloat16AtomicMinMax = false > shaderSharedFloat32AtomicMinMax = true > shaderSharedFloat64AtomicMinMax = false > shaderImageFloat32AtomicMinMax = true > sparseImageFloat32AtomicMinMax = false > > VkPhysicalDeviceShaderAtomicFloatFeaturesEXT: > --------------------------------------------- > shaderBufferFloat32Atomics = true > shaderBufferFloat32AtomicAdd = true > shaderBufferFloat64Atomics = false > shaderBufferFloat64AtomicAdd = false > shaderSharedFloat32Atomics = true > shaderSharedFloat32AtomicAdd = true > shaderSharedFloat64Atomics = false > shaderSharedFloat64AtomicAdd = false > shaderImageFloat32Atomics = true > shaderImageFloat32AtomicAdd = true > sparseImageFloat32Atomics = false > sparseImageFloat32AtomicAdd = false > > VkPhysicalDeviceShaderClockFeaturesKHR: > --------------------------------------- > shaderSubgroupClock = true > shaderDeviceClock = true > > VkPhysicalDeviceShaderObjectFeaturesEXT: > ---------------------------------------- > shaderObject = true > > VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT: > ------------------------------------------------ > texelBufferAlignment = true > > VkPhysicalDeviceTransformFeedbackFeaturesEXT: > --------------------------------------------- > transformFeedback = true > geometryStreams = true > > VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR: > -------------------------------------------------- > 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 = true > 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 = true > 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 = false > bufferDeviceAddressMultiDevice = false > 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 > > VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT: > ------------------------------------------------- > ycbcr2plane444Formats = true > > VkPhysicalDeviceYcbcrImageArraysFeaturesEXT: > -------------------------------------------- > ycbcrImageArrays = true > > > -- > 2.45.1.288.g0e0cd299f1-goog >