panvk_faux123_ace_v0.36.0 vs Mali-G610 MC2
On Mali-G610 (GameForce Ace, Infinix GT 20 Pro, Infinix NOTE Edge, Nothing Phone (2a) Plus, Vivo V27, Xiaomi 13T). The first driver named is compared against the second, which is the baseline.
StockMali-G610 MC2
vsCustompanvk_faux123_ace_v0.36.0
Graphics system version (Vulkan)1.3.305 to 1.4.363
Optional features (extensions)155 to 185+43 -13
Features that pass their check (validated)39 to 5011 pass only on panvk_faux123_ace_v0.36.0 0 pass only on Mali-G610 MC2
Speed test scenes (benchmark)no shared scenes
Games each driver could run (an estimate from its feature list): green likely, yellow maybe, orange limited, red no
StockDX92002+DX102006+DX112009+DX122015+Switch
CustomDX92002+DX102006+DX112009+DX122015+Switch
Mali-G610 MC2 details panvk_faux123_ace_v0.36.0 details
Feature checks that differ (29)
| Feature | Stock | Custom | Change |
|---|---|---|---|
| colorWriteEnable | unsupported | pass | gained |
| depthClipControl | unsupported | pass | gained |
| extendedDynamicState2LogicOp | unsupported | pass | gained |
| extendedDynamicState3ColorBlendEnable | unsupported | pass | gained |
| extendedDynamicState3ColorBlendEquation | unsupported | pass | gained |
| extendedDynamicState3ColorWriteMask | unsupported | pass | gained |
| extendedDynamicState3LogicOpEnable | unsupported | pass | gained |
| robustBufferAccess2 | unsupported | pass | gained |
| robustImageAccess2 | unsupported | pass | gained |
| multiViewport | unsupported | pass | gained |
| textureCompressionBC | unsupported | pass | gained |
| depthBiasControl | unsupported | untested | changed |
| depthBiasExact | unsupported | untested | changed |
| extendedDynamicState3AlphaToCoverageEnable | unsupported | untested | changed |
| extendedDynamicState3AlphaToOneEnable | unsupported | untested | changed |
| extendedDynamicState3ProvokingVertexMode | untested | unsupported | changed |
| extendedDynamicState3RasterizationSamples | unsupported | untested | changed |
| extendedDynamicState3TessellationDomainOrigin | untested | unsupported | changed |
| geometryStreams | unsupported | untested | changed |
| alphaToOne | unsupported | untested | changed |
| depthBounds | unsupported | untested | changed |
| fillModeNonSolid | unsupported | untested | changed |
| inheritedQueries | untested | unsupported | changed |
| pipelineStatisticsQuery | unsupported | untested | changed |
| shaderClipDistance | unsupported | untested | changed |
| shaderCullDistance | unsupported | untested | changed |
| shaderTessellationAndGeometryPointSize | unsupported | untested | changed |
| variableMultisampleRate | unsupported | untested | changed |
| vertexPipelineStoresAndAtomics | unsupported | untested | changed |
Speed test scenes (benchmark)
The two drivers were not measured on the same set of device models. Frame times from different devices do not compare drivers, so read these numbers with that in mind.
| Scene | Stock ms | Custom ms | Difference | Starts | GPU clock, MHz | Picture vs stock |
|---|---|---|---|---|---|---|
| compute_nbody | n/a | 19.00 | only one side | ? vs 3 of 3 | ? vs 883 | not checked |
| hdr_2160p | n/a | 57.63 | only one side | ? vs ? | ? vs ? | not checked |
| oit_linked_lists | n/a | 19.72 | only one side | ? vs 3 of 3 | ? vs 1000 | not checked |
| pipeline_barriers | n/a | 10.20 | only one side | ? vs 3 of 3 | ? vs 1000 | not checked |
| subpasses | n/a | 19.31 | only one side | ? vs 3 of 3 | ? vs 900 | not checked |
Technical differences (Vulkan)
Extensions only in panvk_faux123_ace_v0.36.0 (43)
- VK_EXT_attachment_feedback_loop_dynamic_state
- VK_EXT_attachment_feedback_loop_layout
- VK_EXT_buffer_device_address
- VK_EXT_color_write_enable
- VK_EXT_conditional_rendering
- VK_EXT_depth_bias_control
- VK_EXT_depth_clamp_control
- VK_EXT_depth_clip_control
- VK_EXT_hdr_metadata
- VK_EXT_map_memory_placed
- VK_EXT_memory_budget
- VK_EXT_memory_priority
- VK_EXT_multi_draw
- VK_EXT_nested_command_buffer
- VK_EXT_pageable_device_local_memory
- VK_EXT_physical_device_drm
- VK_EXT_present_timing
- VK_EXT_shader_atomic_float
- VK_EXT_shader_module_identifier
- VK_EXT_shader_stencil_export
- VK_EXT_shader_uniform_buffer_unsized_array
- VK_EXT_vertex_attribute_divisor
- VK_EXT_ycbcr_2plane_444_formats
- VK_EXT_ycbcr_image_arrays
- VK_EXT_zero_initialize_device_memory
- VK_GOOGLE_hlsl_functionality1
- VK_KHR_copy_memory_indirect
- VK_KHR_internally_synchronized_queues
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- VK_KHR_present_id
- VK_KHR_present_id2
- VK_KHR_present_wait
- VK_KHR_present_wait2
- VK_KHR_shader_clock
- VK_KHR_shader_constant_data
- VK_KHR_shader_fma
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_untyped_pointers
- VK_KHR_swapchain_maintenance1
- VK_KHR_unified_image_layouts
- VK_KHR_workgroup_memory_explicit_layout
- VK_VALVE_mutable_descriptor_type
Extensions only in Mali-G610 MC2 (13)
- VK_ANDROID_external_format_resolve
- VK_EXT_descriptor_buffer
- VK_EXT_device_fault
- VK_EXT_external_memory_host
- VK_EXT_fragment_density_map
- VK_EXT_fragment_density_map2
- VK_EXT_frame_boundary
- VK_EXT_image_compression_control_swapchain
- VK_EXT_pipeline_protected_access
- VK_EXT_subpass_merge_feedback
- VK_KHR_deferred_host_operations
- VK_KHR_pipeline_binary
- VK_KHR_shared_presentable_image
Core features that differ (17)
| protectedMemory | pass to unsupported |
| bresenhamLines | unsupported to pass |
| dynamicRenderingLocalRead | unsupported to pass |
| globalPriorityQuery | unsupported to pass |
| hostImageCopy | unsupported to pass |
| indexTypeUint8 | unsupported to pass |
| maintenance5 | unsupported to pass |
| maintenance6 | unsupported to pass |
| pipelineRobustness | unsupported to pass |
| pushDescriptor | unsupported to pass |
| rectangularLines | unsupported to pass |
| shaderExpectAssume | unsupported to pass |
| shaderFloatControls2 | unsupported to pass |
| shaderSubgroupRotate | unsupported to pass |
| shaderSubgroupRotateClustered | unsupported to pass |
| vertexAttributeInstanceRateDivisor | unsupported to pass |
| vertexAttributeInstanceRateZeroDivisor | unsupported to pass |
Limits that differ (51)
| Limit | Stock | Custom |
|---|---|---|
| maxImageDimension1D | 16384 | 65536 |
| maxImageDimension2D | 16384 | 65536 |
| maxImageDimension3D | 16384 | 65536 |
| maxImageDimensionCube | 16384 | 65536 |
| maxImageArrayLayers | 4096 | 65536 |
| maxTexelBufferElements | 268435456 | 134217728 |
| maxUniformBufferRange | 2147483648 | 1048576 |
| maxStorageBufferRange | 2147483648 | 4294967295 |
| maxMemoryAllocationCount | 16384 | 4294967295 |
| bufferImageGranularity | 1 | 64 |
| sparseAddressSpaceSize | 0 | 140737454800896 |
| maxPerStageDescriptorSamplers | 8388608 | 1048576 |
| maxPerStageDescriptorUniformBuffers | 8388608 | 1048576 |
| maxPerStageDescriptorStorageBuffers | 8388608 | 1048576 |
| maxPerStageDescriptorSampledImages | 8388608 | 1048576 |
| maxPerStageDescriptorStorageImages | 8388608 | 1048576 |
| maxPerStageResources | 8388608 | 5242889 |
| maxDescriptorSetSamplers | 8388608 | 1048576 |
| maxDescriptorSetUniformBuffers | 8388608 | 1048576 |
| maxDescriptorSetUniformBuffersDynamic | 32 | 16 |
| maxDescriptorSetStorageBuffers | 8388608 | 1048576 |
| maxDescriptorSetStorageBuffersDynamic | 32 | 8 |
| maxDescriptorSetSampledImages | 8388608 | 1048576 |
| maxDescriptorSetStorageImages | 8388608 | 1048576 |
| maxVertexInputAttributes | 32 | 16 |
| maxVertexInputBindings | 32 | 16 |
| maxVertexInputAttributeOffset | 2047 | 4294967295 |
| maxVertexInputBindingStride | 2048 | 65535 |
| maxGeometryShaderInvocations | 32 | 64 |
| maxGeometryInputComponents | 128 | 64 |
| maxGeometryTotalOutputComponents | 2048 | 1024 |
| maxFragmentCombinedOutputResources | 16777224 | 4360 |
| maxComputeWorkGroupCount | 4294967295, 4294967295, 4294967295 | 65535, 65535, 65535 |
| maxSamplerLodBias | 126 | 127.996 |
| maxViewports | 1 | 16 |
| maxViewportDimensions | 16384, 16384 | 32768, 32768 |
| viewportBoundsRange | -32768, 32767 | -65536, 65535 |
| minMemoryMapAlignment | 64 | 4096 |
| minTexelBufferOffsetAlignment | 64 | 16 |
| minStorageBufferOffsetAlignment | 64 | 4 |
| maxInterpolationOffset | 0.4375 | 0.5 |
| subPixelInterpolationOffsetBits | 4 | 8 |
| maxFramebufferWidth | 16384 | 32768 |
| maxFramebufferHeight | 16384 | 32768 |
| timestampPeriod | 76.9231 | 41.6667 |
| maxClipDistances | 0 | 8 |
| maxCullDistances | 0 | 8 |
| maxCombinedClipAndCullDistances | 0 | 8 |
| pointSizeRange | 1, 1024 | 0.125, 4095.94 |
| lineWidthRange | 1, 4095.94 | 0, 7.99219 |
| lineWidthGranularity | 0.0625 | 0.0078125 |
Formats supported by only one driver (21 gained, 10 lost)
- A2R10G10B10_SNORM_PACK32
- BC1_RGBA_SRGB_BLOCK
- BC1_RGBA_UNORM_BLOCK
- BC1_RGB_SRGB_BLOCK
- BC1_RGB_UNORM_BLOCK
- BC2_SRGB_BLOCK
- BC2_UNORM_BLOCK
- BC3_SRGB_BLOCK
- BC3_UNORM_BLOCK
- BC4_SNORM_BLOCK
- BC4_UNORM_BLOCK
- BC5_SNORM_BLOCK
- BC5_UNORM_BLOCK
- BC6H_SFLOAT_BLOCK
- BC6H_UFLOAT_BLOCK
- BC7_SRGB_BLOCK
- BC7_UNORM_BLOCK
- G16_B16R16_2PLANE_420_UNORM
- G16_B16R16_2PLANE_422_UNORM
- G16_B16R16_2PLANE_444_UNORM
- G8_B8R8_2PLANE_444_UNORM
- B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
- B5G5R5A1_UNORM_PACK16
- B8G8R8G8_422_UNORM
- B8G8R8_SNORM
- G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
- G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
- G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
- G8B8G8R8_422_UNORM
- R4G4_UNORM_PACK8
- R5G5B5A1_UNORM_PACK16