panvk_faux123_rg556_v0.16.0 vs 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). 最初に挙げたドライバーを、2番目のドライバー(ベースライン)と比べています。
純正Mali-G68 MC4
vsカスタムpanvk_faux123_rg556_v0.16.0
グラフィックスのシステムバージョン(Vulkan)1.1.177 → 1.3.354
追加機能(拡張機能)69 → 168+102 -3
チェックに成功した機能(検証済み)45 → 48panvk_faux123_rg556_v0.16.0でのみ成功 20 Mali-G68 MC4でのみ成功 17
速度テストのシーン(ベンチマーク)共通のシーンなし
各ドライバーが動かせそうなゲーム(機能リストからの目安): 緑は動く見込み、黄は動くかも、橙は厳しい、赤は動かない
純正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