panvk_faux123_rg556_v0.16.0 对比 Mali-G68 MC4
在 Mali-G68 上 (Infinix ZERO 5G 2023, LENOVO TB370FU, realme 10 Pro+ 5G, realme P1 5G, Samsung Galaxy A16 5G, Samsung Galaxy A16 5G, Samsung Galaxy A17 5G, Samsung Galaxy A25 5G, Samsung Galaxy A26 5G, Samsung Galaxy A33 5G, Samsung Galaxy A54 5G, vivo V2202). 先列出的驱动与后一个对比,后一个是基准。
原厂Mali-G68 MC4
对比第三方panvk_faux123_rg556_v0.16.0
图形系统版本(Vulkan)1.1.177 → 1.3.354
可选功能(扩展)69 → 168+102 -3
通过检测的功能(已验证)45 → 4820 个仅在 panvk_faux123_rg556_v0.16.0 上通过 17 个仅在 Mali-G68 MC4 上通过
跑分测试场景(基准测试)没有共同场景
各驱动能跑的游戏(根据功能列表估算):绿色基本能跑,黄色可能能跑,橙色问题较多,红色跑不了
原厂DX92002+DX102006+DX112009+DX122015+Switch
第三方DX92002+DX102006+DX112009+DX122015+Switch
Mali-G68 MC4 详情 panvk_faux123_rg556_v0.16.0 详情
结果不同的功能检测(60)
| 功能 | 原厂 | 第三方 | 变化 |
|---|---|---|---|
| depthClamp | 通过 | 未检测 | 减少 |
| largePoints | 通过 | 未检测 | 减少 |
| compat.helper_loop_terminator | 通过 | 未检测 | 减少 |
| compat.nested_map | 通过 | 未检测 | 减少 |
| core.blend_advertised_formats | 通过 | 未检测 | 减少 |
| core.compute_big_stack | 通过 | 未检测 | 减少 |
| core.host_coherent_readback | 通过 | 未检测 | 减少 |
| core.mrt_partial_kill | 通过 | 未检测 | 减少 |
| core.ubo_update_buffer | 通过 | 未检测 | 减少 |
| core.ubo_written_after_record | 通过 | 未检测 | 减少 |
| core.varying_subset | 通过 | 未检测 | 减少 |
| mem.image_padding | 通过 | 未检测 | 减少 |
| perf.fb_local_barrier_large_draws | 通过 | 未检测 | 减少 |
| perf.fb_local_barrier_overdraw | 通过 | 未检测 | 减少 |
| stage.geometry_max_output | 通过 | 未检测 | 减少 |
| stress.scratch_per_batch | 通过 | 未检测 | 减少 |
| sync.first_submit_clear_then_compute | 通过 | 未检测 | 减少 |
| borderColorSwizzle | 不支持 | 通过 | 新增 |
| colorWriteEnable | 不支持 | 通过 | 新增 |
| depthClipControl | 不支持 | 通过 | 新增 |
| extendedDynamicState | 不支持 | 通过 | 新增 |
| extendedDynamicState2 | 不支持 | 通过 | 新增 |
| extendedDynamicState2LogicOp | 不支持 | 通过 | 新增 |
| extendedDynamicState3ColorBlendEnable | 不支持 | 通过 | 新增 |
| extendedDynamicState3ColorBlendEquation | 不支持 | 通过 | 新增 |
| extendedDynamicState3ColorWriteMask | 不支持 | 通过 | 新增 |
| extendedDynamicState3DepthClampEnable | 不支持 | 通过 | 新增 |
| extendedDynamicState3LogicOpEnable | 不支持 | 通过 | 新增 |
| robustBufferAccess2 | 不支持 | 通过 | 新增 |
| vertexInputDynamicState | 不支持 | 通过 | 新增 |
| shaderBufferInt64Atomics | 不支持 | 通过 | 新增 |
| timelineSemaphore | 失败 | 通过 | 新增 |
| multiDrawIndirect | 不支持 | 通过 | 新增 |
| multiViewport | 不支持 | 通过 | 新增 |
| push.max_combined_image_samplers | 不支持 | 通过 | 新增 |
| push.max_uniform_buffers | 不支持 | 通过 | 新增 |
| stress.multi_draw_indirect_large | 不支持 | 通过 | 新增 |
| borderColorSwizzleFromImage | 不支持 | 未检测 | 有变化 |
| depthBiasControl | 不支持 | 未检测 | 有变化 |
| depthBiasExact | 不支持 | 未检测 | 有变化 |
| extendedDynamicState3AlphaToCoverageEnable | 不支持 | 未检测 | 有变化 |
| extendedDynamicState3DepthClipEnable | 不支持 | 未检测 | 有变化 |
| extendedDynamicState3LineRasterizationMode | 不支持 | 未检测 | 有变化 |
| extendedDynamicState3RasterizationSamples | 不支持 | 未检测 | 有变化 |
| extendedDynamicState3SampleMask | 不支持 | 未检测 | 有变化 |
| nullDescriptor | 不支持 | 未检测 | 有变化 |
| geometryStreams | 不支持 | 未检测 | 有变化 |
| shaderSharedInt64Atomics | 不支持 | 未检测 | 有变化 |
| dualSrcBlend | 不支持 | 未检测 | 有变化 |
| fillModeNonSolid | 不支持 | 未检测 | 有变化 |
| logicOp | 不支持 | 未检测 | 有变化 |
| pipelineStatisticsQuery | 不支持 | 未检测 | 有变化 |
| shaderClipDistance | 不支持 | 未检测 | 有变化 |
| shaderCullDistance | 不支持 | 未检测 | 有变化 |
| shaderInt64 | 不支持 | 未检测 | 有变化 |
| shaderTessellationAndGeometryPointSize | 不支持 | 未检测 | 有变化 |
| variableMultisampleRate | 不支持 | 未检测 | 有变化 |
| vertexPipelineStoresAndAtomics | 不支持 | 未检测 | 有变化 |
| wideLines | 不支持 | 未检测 | 有变化 |
| stage.geometry_point_size | 不支持 | 未检测 | 有变化 |
跑分测试场景(基准测试)
两个驱动都还没有有效的跑分测试(基准测试报告)。
技术差异(Vulkan)
仅 panvk_faux123_rg556_v0.16.0 有的扩展(102)
- VK_ARM_scheduling_controls
- VK_ARM_shader_core_builtins
- VK_ARM_shader_core_properties
- 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_color_write_enable
- 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_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_global_priority_query
- VK_EXT_graphics_pipeline_library
- VK_EXT_hdr_metadata
- VK_EXT_host_image_copy
- VK_EXT_image_2d_view_of_3d
- VK_EXT_image_sliced_view_of_3d
- VK_EXT_image_view_min_lod
- VK_EXT_legacy_dithering
- VK_EXT_load_store_op_none
- VK_EXT_map_memory_placed
- VK_EXT_memory_budget
- VK_EXT_multisampled_render_to_single_sampled
- VK_EXT_mutable_descriptor_type
- 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_robustness2
- VK_EXT_shader_atomic_float
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_shader_image_atomic_int64
- VK_EXT_shader_module_identifier
- VK_EXT_shader_replicated_composites
- VK_EXT_shader_stencil_export
- VK_EXT_shader_tile_image
- VK_EXT_shader_uniform_buffer_unsized_array
- VK_EXT_texel_buffer_alignment
- 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_calibrated_timestamps
- VK_KHR_compute_shader_derivatives
- VK_KHR_copy_commands2
- VK_KHR_depth_clamp_zero_one
- VK_KHR_draw_indirect_count
- 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_internally_synchronized_queues
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_maintenance4
- VK_KHR_maintenance5
- VK_KHR_maintenance6
- VK_KHR_maintenance7
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- VK_KHR_map_memory2
- VK_KHR_pipeline_binary
- VK_KHR_pipeline_executable_properties
- VK_KHR_pipeline_library
- VK_KHR_push_descriptor
- VK_KHR_robustness2
- VK_KHR_shader_atomic_int64
- VK_KHR_shader_clock
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float_controls2
- VK_KHR_shader_fma
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_maximal_reconvergence
- VK_KHR_shader_quad_control
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_subgroup_rotate
- VK_KHR_shader_subgroup_uniform_control_flow
- VK_KHR_shader_terminate_invocation
- VK_KHR_shader_untyped_pointers
- VK_KHR_swapchain_mutable_format
- VK_KHR_synchronization2
- VK_KHR_unified_image_layouts
- VK_KHR_vertex_attribute_divisor
- VK_KHR_workgroup_memory_explicit_layout
- VK_KHR_zero_initialize_workgroup_memory
- VK_VALVE_mutable_descriptor_type
仅 Mali-G68 MC4 有的扩展(3)
- VK_EXT_fragment_density_map
- VK_EXT_fragment_density_map2
- VK_KHR_shared_presentable_image
不同的核心功能(65)
| multiview | 不支持 → 通过 |
| samplerYcbcrConversion | 不支持 → 通过 |
| shaderDrawParameters | 不支持 → 通过 |
| storageBuffer16BitAccess | 不支持 → 通过 |
| storageInputOutput16 | 不支持 → 通过 |
| storagePushConstant16 | 不支持 → 通过 |
| uniformAndStorageBuffer16BitAccess | 不支持 → 通过 |
| variablePointers | 不支持 → 通过 |
| variablePointersStorageBuffer | 不支持 → 通过 |
| bufferDeviceAddress | 不支持 → 通过 |
| descriptorBindingPartiallyBound | 不支持 → 通过 |
| descriptorBindingSampledImageUpdateAfterBind | 不支持 → 通过 |
| descriptorBindingStorageBufferUpdateAfterBind | 不支持 → 通过 |
| descriptorBindingStorageImageUpdateAfterBind | 不支持 → 通过 |
| descriptorBindingStorageTexelBufferUpdateAfterBind | 不支持 → 通过 |
| descriptorBindingUniformBufferUpdateAfterBind | 不支持 → 通过 |
| descriptorBindingUniformTexelBufferUpdateAfterBind | 不支持 → 通过 |
| descriptorBindingUpdateUnusedWhilePending | 不支持 → 通过 |
| descriptorBindingVariableDescriptorCount | 不支持 → 通过 |
| descriptorIndexing | 不支持 → 通过 |
| drawIndirectCount | 不支持 → 通过 |
| hostQueryReset | 不支持 → 通过 |
| imagelessFramebuffer | 不支持 → 通过 |
| runtimeDescriptorArray | 不支持 → 通过 |
| samplerMirrorClampToEdge | 不支持 → 通过 |
| scalarBlockLayout | 不支持 → 通过 |
| separateDepthStencilLayouts | 不支持 → 通过 |
| shaderBufferInt64Atomics | 不支持 → 通过 |
| shaderInputAttachmentArrayDynamicIndexing | 不支持 → 通过 |
| shaderInputAttachmentArrayNonUniformIndexing | 不支持 → 通过 |
| shaderInt8 | 不支持 → 通过 |
| shaderSampledImageArrayNonUniformIndexing | 不支持 → 通过 |
| shaderSharedInt64Atomics | 不支持 → 通过 |
| 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 | 不支持 → 通过 |
不同的限制(48)
| 限制 | 原厂 | 第三方 |
|---|---|---|
| maxImageDimension1D | 16384 | 65536 |
| maxImageDimension2D | 16384 | 65536 |
| maxImageDimension3D | 16384 | 65536 |
| maxImageDimensionCube | 16384 | 65536 |
| maxImageArrayLayers | 4096 | 65536 |
| maxTexelBufferElements | 268435456 | 134217728 |
| maxUniformBufferRange | 65536 | 1048576 |
| maxStorageBufferRange | 268435456 | 4294967295 |
| bufferImageGranularity | 4096 | 64 |
| maxBoundDescriptorSets | 4 | 7 |
| maxPerStageDescriptorSamplers | 500000 | 1048576 |
| maxPerStageDescriptorUniformBuffers | 36 | 1048576 |
| maxPerStageDescriptorStorageBuffers | 500000 | 1048576 |
| maxPerStageDescriptorSampledImages | 500000 | 1048576 |
| maxPerStageDescriptorStorageImages | 500000 | 1048576 |
| maxPerStageResources | 500000 | 5242889 |
| maxDescriptorSetSamplers | 500000 | 1048576 |
| maxDescriptorSetUniformBuffers | 216 | 1048576 |
| maxDescriptorSetUniformBuffersDynamic | 32 | 16 |
| maxDescriptorSetStorageBuffers | 500000 | 1048576 |
| maxDescriptorSetStorageBuffersDynamic | 32 | 8 |
| maxDescriptorSetSampledImages | 500000 | 1048576 |
| maxDescriptorSetStorageImages | 500000 | 1048576 |
| maxVertexInputAttributes | 32 | 16 |
| maxVertexInputBindings | 32 | 16 |
| maxVertexInputAttributeOffset | 2047 | 4294967295 |
| maxVertexInputBindingStride | 2048 | 65535 |
| maxGeometryInputComponents | 64 | 128 |
| maxGeometryOutputVertices | 256 | 1024 |
| maxFragmentDualSrcAttachments | 0 | 8 |
| maxFragmentCombinedOutputResources | 1000008 | 4360 |
| maxComputeWorkGroupCount | 4294967295, 4294967295, 4294967295 | 65535, 65535, 65535 |
| maxDrawIndirectCount | 1 | 65535 |
| maxSamplerLodBias | 255 | 127.996 |
| maxViewports | 1 | 16 |
| minMemoryMapAlignment | 64 | 4096 |
| minTexelBufferOffsetAlignment | 64 | 16 |
| minStorageBufferOffsetAlignment | 64 | 16 |
| subPixelInterpolationOffsetBits | 4 | 8 |
| framebufferNoAttachmentsSampleCounts | 29 | 13 |
| timestampComputeAndGraphics | 1 | 0 |
| timestampPeriod | 76.9231 | 0 |
| maxClipDistances | 0 | 8 |
| maxCullDistances | 0 | 8 |
| maxCombinedClipAndCullDistances | 0 | 8 |
| pointSizeRange | 1, 1024 | 0.125, 4095.94 |
| lineWidthRange | 1, 1 | 0, 7.99219 |
| lineWidthGranularity | 0 | 0.0078125 |
只有一个驱动支持的格式(多了 15 种,少了 6 种)
- A1B5G5R5_UNORM_PACK16
- A2R10G10B10_SNORM_PACK32
- A2R10G10B10_SSCALED_PACK32
- A2R10G10B10_USCALED_PACK32
- A8_UNORM
- B8G8R8A8_SSCALED
- B8G8R8A8_USCALED
- B8G8R8_SSCALED
- B8G8R8_USCALED
- G16_B16R16_2PLANE_420_UNORM
- G16_B16R16_2PLANE_422_UNORM
- G16_B16R16_2PLANE_444_UNORM
- G8_B8R8_2PLANE_444_UNORM
- R64_SINT
- R64_UINT
- B5G5R5A1_UNORM_PACK16
- B8G8R8G8_422_UNORM
- B8G8R8_SNORM
- G8B8G8R8_422_UNORM
- R4G4_UNORM_PACK8
- R5G5B5A1_UNORM_PACK16