Message ID | 20240530083513.4135052-1-wenst@chromium.org (mailing list archive) |
---|---|
Headers | show |
Series | powervr: MT8173 GPU support | expand |
On Thu, May 30, 2024 at 4:35 PM Chen-Yu Tsai <wenst@chromium.org> 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@imgtec.com/ > [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@imgtec.com/ > > 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 >
On Fri, May 31, 2024 at 6:23 AM Frank Binns <Frank.Binns@imgtec.com> wrote: > > Hi ChenYu, > > On Fri, 2024-05-31 at 12:00 +0800, Chen-Yu Tsai wrote: > > On Thu, May 30, 2024 at 4:35 PM Chen-Yu Tsai <wenst@chromium.org> wrote: > > > Hi everyone, > > > > > > This series enables the PowerVR GPU found in the MT8173 SoC, found in > > > some Chromebooks. > > Thank you for the patches, I'm really happy to see these! > > > > > > > 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! > > No problem :) > > I've not dug into the display mode issue, but I'm wondering if it happens > because there isn't a mode flagged as the preferred mode. > > > > > 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.) > > The unknown commands are related to the GPU locking up, presumably because bad > jobs are being submitted, likely due to missing bits of support for the > Series6XT GPUs in the Vulkan driver / compiler. The unknown commands are the > firmware notifying the host that the GPU has been reset. The GPU resets would > explain the flickering you're seeing. For what it's worth the GX6250 on my Renesas board appears to behave the same way. I Used a different branch, but applied the patches to support the BVNC. I then tweaked it for my Renesas hardware. I ran vkd3d-gears, and I get several frames before it glitched out and reappeared. adam > > Thanks > Frank > > > > > > > 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@imgtec.com/ > > > [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@imgtec.com/ > > > > > > 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 > > >