malisx2-0.2.3-b85d5f7f36 对比 Panvk-Mali-G57-3.0
在 Mali-G52 MC2 上 (HONOR X5c, HONOR X5c, Infinix HOT 60i, Oppo A18, Oppo A38, realme RMX3710, Redmi 12, Redmi 12C, Redmi 14C, Redmi 15C, TECNO POVA 3, TECNO SPARK 20, Xiaomi 24049RN28L). 先列出的驱动与后一个对比,后一个是基准。
原厂Panvk-Mali-G57-3.0
对比第三方malisx2-0.2.3-b85d5f7f36
图形系统版本(Vulkan)1.3.354 → 1.1.363
可选功能(扩展)140 → 15+3 -128
通过检测的功能(已验证)39 → 221 个仅在 malisx2-0.2.3-b85d5f7f36 上通过 18 个仅在 Panvk-Mali-G57-3.0 上通过
跑分测试场景(基准测试)2 个更快 1 个更慢总体慢 2%(几何平均)
各驱动能跑的游戏(根据功能列表估算):绿色基本能跑,黄色可能能跑,橙色问题较多,红色跑不了
原厂DX92002+DX102006+DX112009+DX122015+Switch
第三方DX92002+DX102006+DX112009+DX122015+Switch
- compute_nbody慢 15%
- oit_linked_lists快 5%
- pipeline_barriers快 5%
1 个场景的画面有局部区域与原厂驱动不同 (pipeline_barriers:2304 个格子中有 1824 个). 整体画面是一致的,所以这是局部渲染故障,而不是画了另一个场景。
没有每次都能启动: compute_nbody (原厂 2 / 3, 第三方 3 / 3), hdr_2160p (原厂 0 / 3, 第三方 0 / 3), subpasses (原厂 3 / 3, 第三方 0 / 3).
Panvk-Mali-G57-3.0 详情 malisx2-0.2.3-b85d5f7f36 详情
结果不同的功能检测(35)
| 功能 | Panvk-Mali-G57-3.0 | malisx2-0.2.3-b85d5f7f36 | 变化 |
|---|---|---|---|
| borderColorSwizzle | 通过 | 不支持 | 减少 |
| colorWriteEnable | 通过 | 不支持 | 减少 |
| customBorderColors | 通过 | 不支持 | 减少 |
| depthClipControl | 通过 | 不支持 | 减少 |
| extendedDynamicState | 通过 | 不支持 | 减少 |
| extendedDynamicState2 | 通过 | 不支持 | 减少 |
| extendedDynamicState2LogicOp | 通过 | 不支持 | 减少 |
| extendedDynamicState3ColorBlendEnable | 通过 | 不支持 | 减少 |
| extendedDynamicState3ColorBlendEquation | 通过 | 不支持 | 减少 |
| extendedDynamicState3ColorWriteMask | 通过 | 不支持 | 减少 |
| extendedDynamicState3DepthClampEnable | 通过 | 不支持 | 减少 |
| extendedDynamicState3LogicOpEnable | 通过 | 不支持 | 减少 |
| inlineUniformBlock | 通过 | 不支持 | 减少 |
| vertexInputDynamicState | 通过 | 不支持 | 减少 |
| timelineSemaphore | 通过 | 不支持 | 减少 |
| drawIndirectFirstInstance | 通过 | 不支持 | 减少 |
| textureCompressionBC | 通过 | 不支持 | 减少 |
| core.msaa_resolve | 通过 | 失败 | 减少 |
| limit.uniform_buffer_range | 失败 | 通过 | 新增 |
| borderColorSwizzleFromImage | 未检测 | 不支持 | 有变化 |
| depthBiasControl | 未检测 | 不支持 | 有变化 |
| depthBiasExact | 未检测 | 不支持 | 有变化 |
| extendedDynamicState3AlphaToCoverageEnable | 未检测 | 不支持 | 有变化 |
| extendedDynamicState3DepthClipEnable | 未检测 | 不支持 | 有变化 |
| extendedDynamicState3LineRasterizationMode | 未检测 | 不支持 | 有变化 |
| extendedDynamicState3RasterizationSamples | 未检测 | 不支持 | 有变化 |
| extendedDynamicState3SampleMask | 未检测 | 不支持 | 有变化 |
| descriptorBindingInlineUniformBlockUpdateAfterBind | 未检测 | 不支持 | 有变化 |
| fillModeNonSolid | 未检测 | 不支持 | 有变化 |
| geometryShader | 失败 | 不支持 | 有变化 |
| logicOp | 未检测 | 不支持 | 有变化 |
| multiViewport | 未检测 | 不支持 | 有变化 |
| shaderCullDistance | 未检测 | 不支持 | 有变化 |
| shaderInt64 | 未检测 | 不支持 | 有变化 |
| wideLines | 未检测 | 不支持 | 有变化 |
跑分测试场景(基准测试)
两个驱动不是在同一批设备型号上测的。不同设备的帧时间不能用来比较驱动,看这些数据时请记住这一点。
| 场景 | Panvk-Mali-G57-3.0 ms | malisx2-0.2.3-b85d5f7f36 ms | 差异 | 启动次数 | GPU 频率,MHz | 画面对比原厂 |
|---|---|---|---|---|---|---|
| compute_nbody | 87.85 | 103.07 | 慢 15% | 2 / 3 对比 3 / 3 | ? 对比 ? | 没有明显差异 没有细微差异 |
| hdr_2160p | 149.04 | n/a | 仅一侧有 | 0 / 3 对比 0 / 3 | ? 对比 ? | 未检测 |
| oit_linked_lists | 77.01 | 73.68 | 快 5% | 3 / 3 对比 3 / 3 | ? 对比 ? | 没有明显差异 没有细微差异 |
| pipeline_barriers | 91.08 | 86.77 | 快 5% | 3 / 3 对比 3 / 3 | ? 对比 ? | 没有明显差异 有 1824 处小区域不同 |
| subpasses | 140.70 | n/a | 仅一侧有 | 3 / 3 对比 0 / 3 | ? 对比 ? | 未检测 |
技术差异(Vulkan)
仅 malisx2-0.2.3-b85d5f7f36 有的扩展(3)
- VK_ARM_rasterization_order_attachment_access
- VK_EXT_device_fault
- VK_EXT_rasterization_order_attachment_access
仅 Panvk-Mali-G57-3.0 有的扩展(128)
- 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_external_memory_host
- VK_EXT_global_priority
- VK_EXT_global_priority_query
- 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_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_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_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_create_renderpass2
- VK_KHR_dedicated_allocation
- VK_KHR_depth_stencil_resolve
- VK_KHR_descriptor_update_template
- VK_KHR_device_group
- VK_KHR_dynamic_rendering
- 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_load_store_op_none
- VK_KHR_maintenance1
- VK_KHR_maintenance2
- VK_KHR_maintenance3
- VK_KHR_maintenance4
- VK_KHR_maintenance5
- VK_KHR_maintenance6
- VK_KHR_map_memory2
- VK_KHR_multiview
- VK_KHR_pipeline_executable_properties
- VK_KHR_pipeline_library
- 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_integer_dot_product
- VK_KHR_shader_non_semantic_info
- 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_synchronization2
- VK_KHR_timeline_semaphore
- 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
不同的核心功能(53)
| multiview | 通过 → 不支持 |
| samplerYcbcrConversion | 通过 → 不支持 |
| shaderDrawParameters | 通过 → 不支持 |
| storageBuffer16BitAccess | 通过 → 不支持 |
| storageInputOutput16 | 通过 → 不支持 |
| storagePushConstant16 | 通过 → 不支持 |
| uniformAndStorageBuffer16BitAccess | 通过 → 不支持 |
| variablePointers | 通过 → 不支持 |
| variablePointersStorageBuffer | 通过 → 不支持 |
| bufferDeviceAddress | 通过 → 不支持 |
| descriptorBindingVariableDescriptorCount | 通过 → 不支持 |
| hostQueryReset | 通过 → 不支持 |
| imagelessFramebuffer | 通过 → 不支持 |
| runtimeDescriptorArray | 通过 → 不支持 |
| samplerMirrorClampToEdge | 通过 → 不支持 |
| scalarBlockLayout | 通过 → 不支持 |
| separateDepthStencilLayouts | 通过 → 不支持 |
| shaderInputAttachmentArrayDynamicIndexing | 通过 → 不支持 |
| shaderInputAttachmentArrayNonUniformIndexing | 通过 → 不支持 |
| shaderInt8 | 通过 → 不支持 |
| shaderSampledImageArrayNonUniformIndexing | 通过 → 不支持 |
| shaderStorageBufferArrayNonUniformIndexing | 通过 → 不支持 |
| shaderStorageImageArrayNonUniformIndexing | 通过 → 不支持 |
| shaderStorageTexelBufferArrayDynamicIndexing | 通过 → 不支持 |
| shaderStorageTexelBufferArrayNonUniformIndexing | 通过 → 不支持 |
| shaderSubgroupExtendedTypes | 通过 → 不支持 |
| shaderUniformBufferArrayNonUniformIndexing | 通过 → 不支持 |
| shaderUniformTexelBufferArrayDynamicIndexing | 通过 → 不支持 |
| shaderUniformTexelBufferArrayNonUniformIndexing | 通过 → 不支持 |
| storageBuffer8BitAccess | 通过 → 不支持 |
| storagePushConstant8 | 通过 → 不支持 |
| subgroupBroadcastDynamicId | 通过 → 不支持 |
| timelineSemaphore | 通过 → 不支持 |
| uniformAndStorageBuffer8BitAccess | 通过 → 不支持 |
| uniformBufferStandardLayout | 通过 → 不支持 |
| vulkanMemoryModel | 通过 → 不支持 |
| vulkanMemoryModelAvailabilityVisibilityChains | 通过 → 不支持 |
| vulkanMemoryModelDeviceScope | 通过 → 不支持 |
| computeFullSubgroups | 通过 → 不支持 |
| descriptorBindingInlineUniformBlockUpdateAfterBind | 通过 → 不支持 |
| dynamicRendering | 通过 → 不支持 |
| inlineUniformBlock | 通过 → 不支持 |
| maintenance4 | 通过 → 不支持 |
| pipelineCreationCacheControl | 通过 → 不支持 |
| privateData | 通过 → 不支持 |
| robustImageAccess | 通过 → 不支持 |
| shaderDemoteToHelperInvocation | 通过 → 不支持 |
| shaderIntegerDotProduct | 通过 → 不支持 |
| shaderTerminateInvocation | 通过 → 不支持 |
| shaderZeroInitializeWorkgroupMemory | 通过 → 不支持 |
| subgroupSizeControl | 通过 → 不支持 |
| synchronization2 | 通过 → 不支持 |
| textureCompressionASTC_HDR | 通过 → 不支持 |
不同的限制(35)
| 限制 | Panvk-Mali-G57-3.0 | malisx2-0.2.3-b85d5f7f36 |
|---|---|---|
| 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 |
| maxFragmentDualSrcAttachments | 8 | 1 |
| maxSamplerLodBias | 127.996 | 126 |
| minMemoryMapAlignment | 4096 | 64 |
| minTexelBufferOffsetAlignment | 16 | 64 |
| minStorageBufferOffsetAlignment | 16 | 64 |
| subPixelInterpolationOffsetBits | 8 | 4 |
| framebufferColorSampleCounts | 5 | 29 |
| framebufferDepthSampleCounts | 5 | 29 |
| framebufferStencilSampleCounts | 5 | 29 |
| framebufferNoAttachmentsSampleCounts | 5 | 29 |
| sampledImageColorSampleCounts | 5 | 29 |
| sampledImageIntegerSampleCounts | 5 | 29 |
| sampledImageDepthSampleCounts | 5 | 29 |
| sampledImageStencilSampleCounts | 5 | 29 |
| 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 |
只有一个驱动支持的格式(多了 2 种,少了 34 种)
- 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
- 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_420_UNORM
- G8_B8R8_2PLANE_422_UNORM
- G8_B8R8_2PLANE_444_UNORM
- G8_B8_R8_3PLANE_420_UNORM
- G8_B8_R8_3PLANE_422_UNORM