malisx2-0.3.1-8cdb0f68cd vs panvk-g76-armsx2-v9
On Mali-G52 (CHUWI HiPad-Air, HONOR X5c, HONOR X5c, Infinix HOT 60i, Oppo A18, Oppo A38, realme RMX3710, Redmi 12, Redmi 12C, Redmi 14C, Redmi 15C, Samsung Galaxy A32, TECNO POVA 3, TECNO SPARK 10 Pro, TECNO SPARK 20, Vivo Y03, Xiaomi 24040RN64Y, Xiaomi 24049RN28L). The first driver named is compared against the second, which is the baseline.
Stockpanvk-g76-armsx2-v9
vsCustommalisx2-0.3.1-8cdb0f68cd
Graphics system version (Vulkan)1.3.354 to 1.1.366
Optional features (extensions)160 to 19+1 -142
Features that pass their check (validated)39 to 243 pass only on malisx2-0.3.1-8cdb0f68cd 18 pass only on panvk-g76-armsx2-v9
Speed test scenes (benchmark)1 faster 0 slower 1 even10% faster overall (geometric mean)
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
- compute_nbody2% faster
- pipeline_barriers19% faster
Small areas of the picture differ from the stock driver in 1 scene (pipeline_barriers: 1470 of 2304 cells). The picture matches overall, so this is a local rendering fault, not a different scene.
Did not start every time: subpasses (stock 3 of 3, custom 0 of 3).
panvk-g76-armsx2-v9 details malisx2-0.3.1-8cdb0f68cd details
Feature checks that differ (39)
| Feature | panvk-g76-armsx2-v9 | malisx2-0.3.1-8cdb0f68cd | Change |
|---|---|---|---|
| borderColorSwizzle | pass | unsupported | lost |
| colorWriteEnable | pass | unsupported | lost |
| customBorderColors | pass | unsupported | lost |
| depthClipControl | pass | unsupported | lost |
| extendedDynamicState | pass | unsupported | lost |
| extendedDynamicState2 | pass | unsupported | lost |
| extendedDynamicState2LogicOp | pass | unsupported | lost |
| extendedDynamicState3ColorBlendEnable | pass | unsupported | lost |
| extendedDynamicState3ColorBlendEquation | pass | unsupported | lost |
| extendedDynamicState3ColorWriteMask | pass | unsupported | lost |
| extendedDynamicState3DepthClampEnable | pass | unsupported | lost |
| extendedDynamicState3LogicOpEnable | pass | unsupported | lost |
| inlineUniformBlock | pass | unsupported | lost |
| vertexInputDynamicState | pass | unsupported | lost |
| drawIndirectFirstInstance | pass | unsupported | lost |
| multiViewport | pass | unsupported | lost |
| core.msaa_resolve | pass | unsupported | lost |
| stress.multi_draw_indirect_large | pass | unsupported | lost |
| occlusionQueryPrecise | fail | pass | gained |
| limit.uniform_buffer_range | fail | pass | gained |
| push.max_combined_image_samplers | crash | pass | gained |
| borderColorSwizzleFromImage | untested | unsupported | changed |
| depthBiasControl | untested | unsupported | changed |
| depthBiasExact | untested | unsupported | changed |
| extendedDynamicState3AlphaToCoverageEnable | untested | unsupported | changed |
| extendedDynamicState3DepthClipEnable | untested | unsupported | changed |
| extendedDynamicState3LineRasterizationMode | untested | unsupported | changed |
| extendedDynamicState3RasterizationSamples | untested | unsupported | changed |
| extendedDynamicState3SampleMask | untested | unsupported | changed |
| descriptorBindingInlineUniformBlockUpdateAfterBind | untested | unsupported | changed |
| fillModeNonSolid | untested | unsupported | changed |
| geometryShader | crash | unsupported | changed |
| logicOp | untested | unsupported | changed |
| multiDrawIndirect | fail | unsupported | changed |
| shaderCullDistance | untested | unsupported | changed |
| shaderInt64 | untested | unsupported | changed |
| shaderTessellationAndGeometryPointSize | untested | unsupported | changed |
| tessellationShader | fail | unsupported | changed |
| wideLines | untested | unsupported | changed |
Speed test scenes (benchmark)
| Scene | panvk-g76-armsx2-v9 ms | malisx2-0.3.1-8cdb0f68cd ms | Difference | Starts | GPU clock, MHz | Picture vs stock |
|---|---|---|---|---|---|---|
| compute_nbody | 104.92 | 103.02 | 2% faster | 3 of 3 vs 3 of 3 | ? vs ? | no large difference no small difference |
| oit_linked_lists | n/a | 72.62 | only one side | 3 of 3 vs 3 of 3 | ? vs ? | no large difference no small difference |
| pipeline_barriers | 102.56 | 85.93 | 19% faster | 3 of 3 vs 3 of 3 | ? vs ? | no large difference differs in 1470 small areas |
| subpasses | 165.26 | n/a | only one side | 3 of 3 vs 0 of 3 | ? vs ? | not checked |
Technical differences (Vulkan)
Extensions only in malisx2-0.3.1-8cdb0f68cd (1)
- VK_EXT_device_fault
Extensions only in panvk-g76-armsx2-v9 (142)
- VK_ANDROID_external_memory_android_hardware_buffer
- VK_ARM_scheduling_controls
- VK_ARM_shader_core_builtins
- VK_ARM_shader_core_properties
- VK_EXT_4444_formats
- VK_EXT_attachment_feedback_loop_dynamic_state
- VK_EXT_attachment_feedback_loop_layout
- VK_EXT_border_color_swizzle
- VK_EXT_buffer_device_address
- VK_EXT_calibrated_timestamps
- VK_EXT_color_write_enable
- VK_EXT_custom_border_color
- VK_EXT_debug_marker
- VK_EXT_depth_bias_control
- VK_EXT_depth_clamp_control
- VK_EXT_depth_clamp_zero_one
- VK_EXT_depth_clip_control
- VK_EXT_depth_clip_enable
- VK_EXT_device_address_binding_report
- VK_EXT_device_memory_report
- 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_external_memory_dma_buf
- VK_EXT_global_priority
- VK_EXT_global_priority_query
- VK_EXT_graphics_pipeline_library
- VK_EXT_hdr_metadata
- VK_EXT_host_image_copy
- VK_EXT_host_query_reset
- VK_EXT_image_2d_view_of_3d
- VK_EXT_image_drm_format_modifier
- VK_EXT_image_robustness
- VK_EXT_image_sliced_view_of_3d
- VK_EXT_image_view_min_lod
- VK_EXT_index_type_uint8
- VK_EXT_inline_uniform_block
- VK_EXT_legacy_dithering
- VK_EXT_load_store_op_none
- VK_EXT_map_memory_placed
- VK_EXT_multisampled_render_to_single_sampled
- VK_EXT_non_seamless_cube_map
- VK_EXT_physical_device_drm
- VK_EXT_pipeline_creation_cache_control
- VK_EXT_pipeline_creation_feedback
- VK_EXT_pipeline_robustness
- VK_EXT_present_timing
- VK_EXT_primitive_topology_list_restart
- VK_EXT_private_data
- VK_EXT_queue_family_foreign
- VK_EXT_scalar_block_layout
- VK_EXT_separate_stencil_usage
- VK_EXT_shader_atomic_float
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_shader_module_identifier
- VK_EXT_shader_replicated_composites
- VK_EXT_shader_stencil_export
- VK_EXT_shader_subgroup_ballot
- VK_EXT_shader_subgroup_vote
- VK_EXT_shader_uniform_buffer_unsized_array
- VK_EXT_subgroup_size_control
- VK_EXT_texel_buffer_alignment
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_tooling_info
- VK_EXT_vertex_attribute_divisor
- VK_EXT_vertex_input_dynamic_state
- VK_EXT_zero_initialize_device_memory
- VK_GOOGLE_decorate_string
- VK_GOOGLE_hlsl_functionality1
- VK_GOOGLE_user_type
- VK_KHR_16bit_storage
- VK_KHR_8bit_storage
- VK_KHR_bind_memory2
- VK_KHR_buffer_device_address
- VK_KHR_calibrated_timestamps
- VK_KHR_copy_commands2
- VK_KHR_dedicated_allocation
- VK_KHR_depth_clamp_zero_one
- VK_KHR_descriptor_update_template
- VK_KHR_device_group
- VK_KHR_dynamic_rendering_local_read
- VK_KHR_external_fence
- VK_KHR_external_memory
- VK_KHR_external_memory_fd
- VK_KHR_external_semaphore
- VK_KHR_format_feature_flags2
- VK_KHR_get_memory_requirements2
- VK_KHR_global_priority
- VK_KHR_image_format_list
- VK_KHR_imageless_framebuffer
- VK_KHR_index_type_uint8
- VK_KHR_internally_synchronized_queues
- VK_KHR_load_store_op_none
- VK_KHR_maintenance1
- VK_KHR_maintenance2
- VK_KHR_maintenance3
- VK_KHR_maintenance4
- VK_KHR_maintenance5
- VK_KHR_maintenance6
- VK_KHR_maintenance7
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- VK_KHR_map_memory2
- VK_KHR_multiview
- VK_KHR_pipeline_binary
- VK_KHR_pipeline_executable_properties
- VK_KHR_pipeline_library
- VK_KHR_present_id
- VK_KHR_present_id2
- VK_KHR_present_wait
- VK_KHR_present_wait2
- VK_KHR_relaxed_block_layout
- VK_KHR_sampler_mirror_clamp_to_edge
- VK_KHR_sampler_ycbcr_conversion
- VK_KHR_separate_depth_stencil_layouts
- VK_KHR_shader_clock
- VK_KHR_shader_draw_parameters
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float16_int8
- VK_KHR_shader_float_controls
- VK_KHR_shader_float_controls2
- VK_KHR_shader_fma
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_subgroup_extended_types
- VK_KHR_shader_subgroup_rotate
- VK_KHR_shader_terminate_invocation
- VK_KHR_spirv_1_4
- VK_KHR_storage_buffer_storage_class
- VK_KHR_swapchain_maintenance1
- VK_KHR_swapchain_mutable_format
- VK_KHR_synchronization2
- VK_KHR_unified_image_layouts
- VK_KHR_uniform_buffer_standard_layout
- VK_KHR_variable_pointers
- VK_KHR_vertex_attribute_divisor
- VK_KHR_vulkan_memory_model
- VK_KHR_workgroup_memory_explicit_layout
- VK_KHR_zero_initialize_workgroup_memory
Core features that differ (62)
| multiview | pass to unsupported |
| samplerYcbcrConversion | pass to unsupported |
| shaderDrawParameters | pass to unsupported |
| storageBuffer16BitAccess | pass to unsupported |
| storageInputOutput16 | pass to unsupported |
| storagePushConstant16 | pass to unsupported |
| uniformAndStorageBuffer16BitAccess | pass to unsupported |
| variablePointers | pass to unsupported |
| variablePointersStorageBuffer | pass to unsupported |
| bufferDeviceAddress | pass to unsupported |
| descriptorBindingPartiallyBound | pass to unsupported |
| descriptorBindingSampledImageUpdateAfterBind | pass to unsupported |
| descriptorBindingStorageBufferUpdateAfterBind | pass to unsupported |
| descriptorBindingStorageImageUpdateAfterBind | pass to unsupported |
| descriptorBindingStorageTexelBufferUpdateAfterBind | pass to unsupported |
| descriptorBindingUniformBufferUpdateAfterBind | pass to unsupported |
| descriptorBindingUniformTexelBufferUpdateAfterBind | pass to unsupported |
| descriptorBindingUpdateUnusedWhilePending | pass to unsupported |
| descriptorBindingVariableDescriptorCount | pass to unsupported |
| descriptorIndexing | pass to unsupported |
| hostQueryReset | pass to unsupported |
| imagelessFramebuffer | pass to unsupported |
| runtimeDescriptorArray | pass to unsupported |
| samplerMirrorClampToEdge | pass to unsupported |
| scalarBlockLayout | pass to unsupported |
| separateDepthStencilLayouts | pass to unsupported |
| shaderInputAttachmentArrayDynamicIndexing | pass to unsupported |
| shaderInputAttachmentArrayNonUniformIndexing | pass to unsupported |
| shaderInt8 | pass to unsupported |
| shaderSampledImageArrayNonUniformIndexing | pass to unsupported |
| shaderStorageBufferArrayNonUniformIndexing | pass to unsupported |
| shaderStorageImageArrayNonUniformIndexing | pass to unsupported |
| shaderStorageTexelBufferArrayDynamicIndexing | pass to unsupported |
| shaderStorageTexelBufferArrayNonUniformIndexing | pass to unsupported |
| shaderSubgroupExtendedTypes | pass to unsupported |
| shaderUniformBufferArrayNonUniformIndexing | pass to unsupported |
| shaderUniformTexelBufferArrayDynamicIndexing | pass to unsupported |
| shaderUniformTexelBufferArrayNonUniformIndexing | pass to unsupported |
| storageBuffer8BitAccess | pass to unsupported |
| storagePushConstant8 | pass to unsupported |
| subgroupBroadcastDynamicId | pass to unsupported |
| timelineSemaphore | pass to unsupported |
| uniformAndStorageBuffer8BitAccess | pass to unsupported |
| uniformBufferStandardLayout | pass to unsupported |
| vulkanMemoryModel | pass to unsupported |
| vulkanMemoryModelAvailabilityVisibilityChains | pass to unsupported |
| vulkanMemoryModelDeviceScope | pass to unsupported |
| computeFullSubgroups | pass to unsupported |
| descriptorBindingInlineUniformBlockUpdateAfterBind | pass to unsupported |
| dynamicRendering | pass to unsupported |
| inlineUniformBlock | pass to unsupported |
| maintenance4 | pass to unsupported |
| pipelineCreationCacheControl | pass to unsupported |
| privateData | pass to unsupported |
| robustImageAccess | pass to unsupported |
| shaderDemoteToHelperInvocation | pass to unsupported |
| shaderIntegerDotProduct | pass to unsupported |
| shaderTerminateInvocation | pass to unsupported |
| shaderZeroInitializeWorkgroupMemory | pass to unsupported |
| subgroupSizeControl | pass to unsupported |
| synchronization2 | pass to unsupported |
| textureCompressionASTC_HDR | pass to unsupported |
Limits that differ (50)
| Limit | panvk-g76-armsx2-v9 | malisx2-0.3.1-8cdb0f68cd |
|---|---|---|
| maxImageDimension1D | 65536 | 16384 |
| maxImageDimension2D | 65536 | 16384 |
| maxImageDimension3D | 65536 | 16384 |
| maxImageDimensionCube | 65536 | 16384 |
| maxImageArrayLayers | 65536 | 4096 |
| maxTexelBufferElements | 134217728 | 268435456 |
| maxUniformBufferRange | 1048576 | 65536 |
| maxStorageBufferRange | 4294967295 | 2147483648 |
| maxMemoryAllocationCount | 4294967295 | 16384 |
| maxSamplerAllocationCount | 4294967295 | 4000 |
| bufferImageGranularity | 64 | 1 |
| maxBoundDescriptorSets | 4 | 7 |
| maxPerStageDescriptorSampledImages | 256 | 208 |
| maxPerStageResources | 712 | 664 |
| maxTessellationGenerationLevel | 64 | 0 |
| maxTessellationPatchSize | 32 | 0 |
| maxTessellationControlPerVertexInputComponents | 128 | 0 |
| maxTessellationControlPerVertexOutputComponents | 128 | 0 |
| maxTessellationControlPerPatchOutputComponents | 120 | 0 |
| maxTessellationControlTotalOutputComponents | 4096 | 0 |
| maxTessellationEvaluationInputComponents | 128 | 0 |
| maxTessellationEvaluationOutputComponents | 128 | 0 |
| maxGeometryShaderInvocations | 32 | 0 |
| maxGeometryInputComponents | 64 | 0 |
| maxGeometryOutputComponents | 64 | 0 |
| maxGeometryOutputVertices | 256 | 0 |
| maxGeometryTotalOutputComponents | 1024 | 0 |
| maxFragmentDualSrcAttachments | 8 | 1 |
| maxDrawIndirectCount | 4294967295 | 1 |
| maxSamplerLodBias | 127.996 | 126 |
| maxViewports | 16 | 1 |
| minMemoryMapAlignment | 4096 | 64 |
| minTexelBufferOffsetAlignment | 16 | 64 |
| minStorageBufferOffsetAlignment | 16 | 64 |
| subPixelInterpolationOffsetBits | 8 | 4 |
| framebufferColorSampleCounts | 5 | 1 |
| framebufferDepthSampleCounts | 5 | 1 |
| framebufferStencilSampleCounts | 5 | 1 |
| framebufferNoAttachmentsSampleCounts | 5 | 1 |
| sampledImageColorSampleCounts | 5 | 1 |
| sampledImageIntegerSampleCounts | 5 | 1 |
| sampledImageDepthSampleCounts | 5 | 1 |
| sampledImageStencilSampleCounts | 5 | 1 |
| timestampComputeAndGraphics | 0 | 1 |
| timestampPeriod | 0 | 76.9231 |
| maxClipDistances | 0 | 8 |
| maxCombinedClipAndCullDistances | 0 | 8 |
| pointSizeRange | 0.125, 4095.94 | 1, 1024 |
| lineWidthRange | 0, 7.99219 | 1, 1 |
| lineWidthGranularity | 0.0078125 | 0 |
Formats supported by only one driver (2 gained, 34 lost)
- R10X6G10X6_UNORM_2PACK16
- R10X6_UNORM_PACK16
- A1B5G5R5_UNORM_PACK16
- A4B4G4R4_UNORM_PACK16
- A4R4G4B4_UNORM_PACK16
- A8_UNORM
- ASTC_10x10_SFLOAT_BLOCK
- ASTC_10x5_SFLOAT_BLOCK
- ASTC_10x6_SFLOAT_BLOCK
- ASTC_10x8_SFLOAT_BLOCK
- ASTC_12x10_SFLOAT_BLOCK
- ASTC_12x12_SFLOAT_BLOCK
- ASTC_4x4_SFLOAT_BLOCK
- ASTC_5x4_SFLOAT_BLOCK
- ASTC_5x5_SFLOAT_BLOCK
- ASTC_6x5_SFLOAT_BLOCK
- ASTC_6x6_SFLOAT_BLOCK
- ASTC_8x5_SFLOAT_BLOCK
- ASTC_8x6_SFLOAT_BLOCK
- ASTC_8x8_SFLOAT_BLOCK
- 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
- G16_B16R16_2PLANE_420_UNORM
- G16_B16R16_2PLANE_422_UNORM
- G16_B16R16_2PLANE_444_UNORM
- G8_B8R8_2PLANE_420_UNORM
- G8_B8R8_2PLANE_422_UNORM
- G8_B8R8_2PLANE_444_UNORM
- G8_B8_R8_3PLANE_420_UNORM
- G8_B8_R8_3PLANE_422_UNORM