Mali-G68 MC4 vs Mali-G68 MC4
On Mali-G68 (Infinix ZERO 5G 2023, LENOVO TB370FU, realme 10 Pro+ 5G, Samsung Galaxy A25 5G). The first driver named is compared against the second, which is the baseline.
StockMali-G68 MC4
vsCustomMali-G68 MC4
Graphics system version (Vulkan)1.1.177 to 1.3.278
Optional features (extensions)68 to 137+69 -0
Features that pass their check (validated)28 to 379 pass only on Mali-G68 MC4 0 pass only on Mali-G68 MC4
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-G68 MC4 details Mali-G68 MC4 details
Feature checks that differ (21)
| Feature | Stock | Mali-G68 MC4 | Change |
|---|---|---|---|
| borderColorSwizzle | unsupported | pass | gained |
| extendedDynamicState | unsupported | pass | gained |
| extendedDynamicState2 | unsupported | pass | gained |
| extendedDynamicState3DepthClampEnable | unsupported | pass | gained |
| vertexInputDynamicState | unsupported | pass | gained |
| shaderBufferInt64Atomics | unsupported | pass | gained |
| timelineSemaphore | fail | pass | gained |
| push.max_combined_image_samplers | unsupported | pass | gained |
| push.max_uniform_buffers | unsupported | pass | gained |
| borderColorSwizzleFromImage | unsupported | untested | changed |
| extendedDynamicState2PatchControlPoints | unsupported | untested | changed |
| extendedDynamicState3DepthClipEnable | unsupported | untested | changed |
| extendedDynamicState3LineRasterizationMode | unsupported | untested | changed |
| extendedDynamicState3ProvokingVertexMode | unsupported | untested | changed |
| extendedDynamicState3SampleMask | unsupported | untested | changed |
| extendedDynamicState3TessellationDomainOrigin | unsupported | untested | changed |
| shaderSharedInt64Atomics | unsupported | untested | changed |
| dualSrcBlend | unsupported | untested | changed |
| logicOp | unsupported | untested | changed |
| shaderInt64 | unsupported | untested | changed |
| wideLines | 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 | Mali-G68 MC4 ms | Difference | Starts | GPU clock, MHz | Picture vs stock |
|---|---|---|---|---|---|---|
| compute_nbody | n/a | n/a | only one side | ? vs 3 of 3 | ? vs ? | not checked |
| hdr_2160p | n/a | 75.30 | only one side | ? vs 3 of 3 | ? vs ? | not checked |
| oit_linked_lists | n/a | 26.63 | only one side | ? vs 3 of 3 | ? vs ? | not checked |
| pipeline_barriers | n/a | 15.92 | only one side | ? vs 3 of 3 | ? vs ? | not checked |
| subpasses | n/a | n/a | only one side | ? vs 3 of 3 | ? vs ? | not checked |
Technical differences (Vulkan)
Extensions only in Mali-G68 MC4 (69)
- VK_ANDROID_external_format_resolve
- VK_ARM_rasterization_order_attachment_access
- VK_ARM_shader_core_builtins
- VK_ARM_shader_core_properties
- VK_EXT_border_color_swizzle
- VK_EXT_debug_marker
- VK_EXT_depth_clamp_zero_one
- VK_EXT_depth_clip_enable
- VK_EXT_device_address_binding_report
- VK_EXT_device_fault
- VK_EXT_dynamic_rendering_unused_attachments
- VK_EXT_extended_dynamic_state
- VK_EXT_extended_dynamic_state2
- VK_EXT_extended_dynamic_state3
- VK_EXT_external_memory_acquire_unmodified
- VK_EXT_frame_boundary
- VK_EXT_global_priority_query
- VK_EXT_image_2d_view_of_3d
- VK_EXT_image_compression_control
- VK_EXT_image_compression_control_swapchain
- VK_EXT_image_sliced_view_of_3d
- VK_EXT_legacy_dithering
- VK_EXT_load_store_op_none
- VK_EXT_multisampled_render_to_single_sampled
- VK_EXT_pipeline_creation_cache_control
- VK_EXT_pipeline_creation_feedback
- VK_EXT_pipeline_protected_access
- VK_EXT_pipeline_robustness
- VK_EXT_primitive_topology_list_restart
- VK_EXT_primitives_generated_query
- VK_EXT_private_data
- VK_EXT_rasterization_order_attachment_access
- VK_EXT_rgba10x6_formats
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_shader_image_atomic_int64
- VK_EXT_shader_tile_image
- VK_EXT_subpass_merge_feedback
- VK_EXT_swapchain_maintenance1
- VK_EXT_texel_buffer_alignment
- VK_EXT_tooling_info
- VK_EXT_vertex_input_dynamic_state
- VK_GOOGLE_decorate_string
- VK_GOOGLE_user_type
- VK_KHR_calibrated_timestamps
- VK_KHR_copy_commands2
- VK_KHR_dynamic_rendering
- VK_KHR_dynamic_rendering_local_read
- VK_KHR_format_feature_flags2
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_maintenance4
- VK_KHR_maintenance5
- VK_KHR_maintenance6
- VK_KHR_map_memory2
- VK_KHR_push_descriptor
- VK_KHR_shader_atomic_int64
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float_controls2
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_maximal_reconvergence
- VK_KHR_shader_quad_control
- VK_KHR_shader_subgroup_rotate
- VK_KHR_shader_subgroup_uniform_control_flow
- VK_KHR_shader_terminate_invocation
- VK_KHR_synchronization2
- VK_KHR_vertex_attribute_divisor
- VK_KHR_zero_initialize_workgroup_memory
Extensions only in Mali-G68 MC4 (0)
- None
Core features that differ (67)
| multiview | unsupported to pass |
| protectedMemory | unsupported to pass |
| samplerYcbcrConversion | unsupported to pass |
| shaderDrawParameters | unsupported to pass |
| storageBuffer16BitAccess | unsupported to pass |
| storageInputOutput16 | unsupported to pass |
| storagePushConstant16 | unsupported to pass |
| uniformAndStorageBuffer16BitAccess | unsupported to pass |
| variablePointers | unsupported to pass |
| variablePointersStorageBuffer | unsupported to pass |
| bufferDeviceAddress | unsupported to pass |
| descriptorBindingPartiallyBound | unsupported to pass |
| descriptorBindingSampledImageUpdateAfterBind | unsupported to pass |
| descriptorBindingStorageBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingStorageImageUpdateAfterBind | unsupported to pass |
| descriptorBindingStorageTexelBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingUniformBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingUniformTexelBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingUpdateUnusedWhilePending | unsupported to pass |
| descriptorBindingVariableDescriptorCount | unsupported to pass |
| descriptorIndexing | unsupported to pass |
| hostQueryReset | unsupported to pass |
| imagelessFramebuffer | unsupported to pass |
| runtimeDescriptorArray | unsupported to pass |
| samplerMirrorClampToEdge | unsupported to pass |
| scalarBlockLayout | unsupported to pass |
| separateDepthStencilLayouts | unsupported to pass |
| shaderBufferInt64Atomics | unsupported to pass |
| shaderFloat16 | unsupported to pass |
| shaderInputAttachmentArrayDynamicIndexing | unsupported to pass |
| shaderInputAttachmentArrayNonUniformIndexing | unsupported to pass |
| shaderInt8 | unsupported to pass |
| shaderOutputViewportIndex | unsupported to pass |
| shaderSampledImageArrayNonUniformIndexing | unsupported to pass |
| shaderSharedInt64Atomics | unsupported to pass |
| shaderStorageBufferArrayNonUniformIndexing | unsupported to pass |
| shaderStorageImageArrayNonUniformIndexing | unsupported to pass |
| shaderStorageTexelBufferArrayDynamicIndexing | unsupported to pass |
| shaderStorageTexelBufferArrayNonUniformIndexing | unsupported to pass |
| shaderSubgroupExtendedTypes | unsupported to pass |
| shaderUniformBufferArrayNonUniformIndexing | unsupported to pass |
| shaderUniformTexelBufferArrayDynamicIndexing | unsupported to pass |
| shaderUniformTexelBufferArrayNonUniformIndexing | unsupported to pass |
| storageBuffer8BitAccess | unsupported to pass |
| storagePushConstant8 | unsupported to pass |
| subgroupBroadcastDynamicId | unsupported to pass |
| timelineSemaphore | unsupported to pass |
| uniformAndStorageBuffer8BitAccess | unsupported to pass |
| uniformBufferStandardLayout | unsupported to pass |
| vulkanMemoryModel | unsupported to pass |
| vulkanMemoryModelAvailabilityVisibilityChains | unsupported to pass |
| vulkanMemoryModelDeviceScope | unsupported to pass |
| computeFullSubgroups | unsupported to pass |
| descriptorBindingInlineUniformBlockUpdateAfterBind | unsupported to pass |
| dynamicRendering | unsupported to pass |
| inlineUniformBlock | unsupported to pass |
| maintenance4 | unsupported to pass |
| pipelineCreationCacheControl | unsupported to pass |
| privateData | unsupported to pass |
| robustImageAccess | unsupported to pass |
| shaderDemoteToHelperInvocation | unsupported to pass |
| shaderIntegerDotProduct | unsupported to pass |
| shaderTerminateInvocation | unsupported to pass |
| shaderZeroInitializeWorkgroupMemory | unsupported to pass |
| subgroupSizeControl | unsupported to pass |
| synchronization2 | unsupported to pass |
| textureCompressionASTC_HDR | unsupported to pass |
Limits that differ (14)
| Limit | Stock | Mali-G68 MC4 |
|---|---|---|
| maxUniformBufferRange | 65536 | 2147483648 |
| maxStorageBufferRange | 268435456 | 2147483648 |
| maxMemoryAllocationCount | 4294967295 | 16384 |
| bufferImageGranularity | 4096 | 1 |
| maxBoundDescriptorSets | 4 | 7 |
| maxPerStageDescriptorUniformBuffers | 36 | 500000 |
| maxDescriptorSetUniformBuffers | 216 | 500000 |
| maxGeometryInputComponents | 64 | 128 |
| maxGeometryTotalOutputComponents | 1024 | 2048 |
| maxFragmentDualSrcAttachments | 0 | 8 |
| maxSamplerLodBias | 255 | 126 |
| maxInterpolationOffset | 0.5 | 0.4375 |
| lineWidthRange | 1, 1 | 1, 4095.94 |
| lineWidthGranularity | 0 | 0.0625 |
Formats supported by only one driver (14 gained, 0 lost)
- A1B5G5R5_UNORM_PACK16
- A2R10G10B10_SSCALED_PACK32
- A2R10G10B10_USCALED_PACK32
- A8_UNORM
- B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
- B8G8R8A8_SSCALED
- B8G8R8A8_USCALED
- B8G8R8_SSCALED
- B8G8R8_USCALED
- G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
- G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
- G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
- R64_SINT
- R64_UINT
- None