Mali-G77 vs Mali-G77 MC9
Mali-G77 (Infinix GT 10 Pro, motorola edge 40, Redmi K40 Gaming, Redmi Note 10 Pro, Retroid Pocket 4 Pro, Samsung Galaxy Note20 Ultra, Samsung Galaxy S20 Ultra 5G). 最初に挙げたドライバーを、2番目のドライバー(ベースライン)と比べています。
純正Mali-G77 MC9
vsカスタムMali-G77
グラフィックスのシステムバージョン(Vulkan)1.3.278 → 1.1.213
追加機能(拡張機能)136 → 81+1 -56
チェックに成功した機能(検証済み)37 → 28Mali-G77でのみ成功 0 Mali-G77 MC9でのみ成功 9
速度テストのシーン(ベンチマーク)共通のシーンなし
各ドライバーが動かせそうなゲーム(機能リストからの目安): 緑は動く見込み、黄は動くかも、橙は厳しい、赤は動かない
純正DX92002+DX102006+DX112009+DX122015+Switch
カスタムDX92002+DX102006+DX112009+DX122015+Switch
結果が異なる機能チェック(21)
| 機能 | 純正 | Mali-G77 | 変化 |
|---|---|---|---|
| borderColorSwizzle | 成功 | 非対応 | 欠落 |
| extendedDynamicState | 成功 | 非対応 | 欠落 |
| extendedDynamicState2 | 成功 | 非対応 | 欠落 |
| extendedDynamicState3DepthClampEnable | 成功 | 非対応 | 欠落 |
| vertexInputDynamicState | 成功 | 非対応 | 欠落 |
| shaderBufferInt64Atomics | 成功 | 非対応 | 欠落 |
| timelineSemaphore | 成功 | 失敗 | 欠落 |
| push.max_combined_image_samplers | 成功 | 非対応 | 欠落 |
| push.max_uniform_buffers | 成功 | 非対応 | 欠落 |
| borderColorSwizzleFromImage | 未テスト | 非対応 | 変更あり |
| extendedDynamicState2PatchControlPoints | 未テスト | 非対応 | 変更あり |
| extendedDynamicState3DepthClipEnable | 未テスト | 非対応 | 変更あり |
| extendedDynamicState3LineRasterizationMode | 未テスト | 非対応 | 変更あり |
| extendedDynamicState3ProvokingVertexMode | 未テスト | 非対応 | 変更あり |
| extendedDynamicState3SampleMask | 未テスト | 非対応 | 変更あり |
| extendedDynamicState3TessellationDomainOrigin | 未テスト | 非対応 | 変更あり |
| shaderSharedInt64Atomics | 未テスト | 非対応 | 変更あり |
| dualSrcBlend | 未テスト | 非対応 | 変更あり |
| logicOp | 未テスト | 非対応 | 変更あり |
| shaderInt64 | 未テスト | 非対応 | 変更あり |
| wideLines | 未テスト | 非対応 | 変更あり |
速度テストのシーン(ベンチマーク)
2つのドライバーは同じ機種の組み合わせで測定されていません。異なるデバイスのフレームタイムではドライバーを比較できないので、その点を踏まえて数値を見てください。
| シーン | 純正 ms | Mali-G77 ms | 差 | 起動 | GPUクロック(MHz) | 純正との映像比較 |
|---|---|---|---|---|---|---|
| compute_nbody | n/a | 16.77 | 片方のみ | ? vs 3中3 | ? vs 800 | 未チェック |
| hdr_2160p | n/a | 40.58 | 片方のみ | ? vs 3中3 | ? vs 800 | 未チェック |
| oit_linked_lists | n/a | 25.34 | 片方のみ | ? vs 3中3 | ? vs 800 | 未チェック |
| pipeline_barriers | n/a | 8.36 | 片方のみ | ? vs 3中3 | ? vs 800 | 未チェック |
| subpasses | n/a | 15.04 | 片方のみ | ? vs 3中3 | ? vs 800 | 未チェック |
技術的な違い(Vulkan)
Mali-G77だけにある拡張機能(1)
- VK_EXT_calibrated_timestamps
Mali-G77 MC9だけにある拡張機能(56)
- VK_ANDROID_external_format_resolve
- 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_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_frame_boundary
- VK_EXT_image_2d_view_of_3d
- VK_EXT_image_compression_control_swapchain
- VK_EXT_image_sliced_view_of_3d
- VK_EXT_legacy_dithering
- VK_EXT_multisampled_render_to_single_sampled
- VK_EXT_pipeline_protected_access
- VK_EXT_pipeline_robustness
- VK_EXT_private_data
- VK_EXT_rasterization_order_attachment_access
- VK_EXT_shader_image_atomic_int64
- VK_EXT_shader_tile_image
- VK_EXT_subpass_merge_feedback
- VK_EXT_swapchain_maintenance1
- VK_EXT_vertex_input_dynamic_state
- VK_GOOGLE_decorate_string
- VK_GOOGLE_user_type
- 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
差があるコア機能(67)
| multiview | 成功 → 非対応 |
| protectedMemory | 成功 → 非対応 |
| samplerYcbcrConversion | 成功 → 非対応 |
| shaderDrawParameters | 成功 → 非対応 |
| storageBuffer16BitAccess | 成功 → 非対応 |
| storageInputOutput16 | 成功 → 非対応 |
| storagePushConstant16 | 成功 → 非対応 |
| uniformAndStorageBuffer16BitAccess | 成功 → 非対応 |
| variablePointers | 成功 → 非対応 |
| variablePointersStorageBuffer | 成功 → 非対応 |
| bufferDeviceAddress | 成功 → 非対応 |
| descriptorBindingPartiallyBound | 成功 → 非対応 |
| descriptorBindingSampledImageUpdateAfterBind | 成功 → 非対応 |
| descriptorBindingStorageBufferUpdateAfterBind | 成功 → 非対応 |
| descriptorBindingStorageImageUpdateAfterBind | 成功 → 非対応 |
| descriptorBindingStorageTexelBufferUpdateAfterBind | 成功 → 非対応 |
| descriptorBindingUniformBufferUpdateAfterBind | 成功 → 非対応 |
| descriptorBindingUniformTexelBufferUpdateAfterBind | 成功 → 非対応 |
| descriptorBindingUpdateUnusedWhilePending | 成功 → 非対応 |
| descriptorBindingVariableDescriptorCount | 成功 → 非対応 |
| descriptorIndexing | 成功 → 非対応 |
| hostQueryReset | 成功 → 非対応 |
| imagelessFramebuffer | 成功 → 非対応 |
| runtimeDescriptorArray | 成功 → 非対応 |
| samplerMirrorClampToEdge | 成功 → 非対応 |
| scalarBlockLayout | 成功 → 非対応 |
| separateDepthStencilLayouts | 成功 → 非対応 |
| shaderBufferInt64Atomics | 成功 → 非対応 |
| shaderFloat16 | 成功 → 非対応 |
| shaderInputAttachmentArrayDynamicIndexing | 成功 → 非対応 |
| shaderInputAttachmentArrayNonUniformIndexing | 成功 → 非対応 |
| shaderInt8 | 成功 → 非対応 |
| shaderOutputViewportIndex | 成功 → 非対応 |
| 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 | 成功 → 非対応 |
差がある制限(12)
| 上限 | 純正 | Mali-G77 |
|---|---|---|
| maxUniformBufferRange | 2147483648 | 65536 |
| maxStorageBufferRange | 2147483648 | 268435456 |
| maxMemoryAllocationCount | 16384 | 4294967295 |
| maxPerStageDescriptorUniformBuffers | 500000 | 36 |
| maxDescriptorSetUniformBuffers | 500000 | 216 |
| maxFragmentDualSrcAttachments | 8 | 0 |
| maxSamplerLodBias | 126 | 255 |
| maxInterpolationOffset | 0.4375 | 0.5 |
| timestampComputeAndGraphics | 0 | 1 |
| timestampPeriod | 0 | 38.4615 |
| lineWidthRange | 1, 4095.94 | 1, 1 |
| lineWidthGranularity | 0.0625 | 0 |
片方のドライバーだけが対応するフォーマット(追加0、欠落8)
- なし
- A1B5G5R5_UNORM_PACK16
- A8_UNORM
- B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
- G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
- G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
- G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
- R64_SINT
- R64_UINT