panvk_faux123_rp4pro_v0.13.0 vs Mali-G77 MC9
On Mali-G77 (Infinix GT 10 Pro, Redmi K40 Gaming, Redmi Note 10 Pro, Retroid Pocket 4 Pro, Samsung Galaxy Note20 Ultra, Samsung Galaxy S20 Ultra 5G). The first driver named is compared against the second, which is the baseline.
StockMali-G77 MC9
vsCustompanvk_faux123_rp4pro_v0.13.0
Graphics system version (Vulkan)1.1.177 to 1.3.354
Optional features (extensions)68 to 165+101 -4
Features that pass their check (validated)28 to 4419 pass only on panvk_faux123_rp4pro_v0.13.0 3 pass only on Mali-G77 MC9
Speed test scenes (benchmark)no shared scenes
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
Mali-G77 MC9 details panvk_faux123_rp4pro_v0.13.0 details
Feature checks that differ (37)
| Feature | Stock | Custom | Change |
|---|---|---|---|
| transformFeedback | pass | unsupported | lost |
| geometryShader | pass | unsupported | lost |
| tessellationShader | pass | unsupported | lost |
| borderColorSwizzle | unsupported | pass | gained |
| colorWriteEnable | unsupported | pass | gained |
| depthClipControl | unsupported | pass | gained |
| extendedDynamicState | unsupported | pass | gained |
| extendedDynamicState2 | unsupported | pass | gained |
| extendedDynamicState2LogicOp | unsupported | pass | gained |
| extendedDynamicState3ColorBlendEnable | unsupported | pass | gained |
| extendedDynamicState3ColorBlendEquation | unsupported | pass | gained |
| extendedDynamicState3ColorWriteMask | unsupported | pass | gained |
| extendedDynamicState3DepthClampEnable | unsupported | pass | gained |
| extendedDynamicState3LogicOpEnable | unsupported | pass | gained |
| vertexInputDynamicState | unsupported | pass | gained |
| shaderBufferInt64Atomics | unsupported | pass | gained |
| timelineSemaphore | fail | pass | gained |
| multiDrawIndirect | unsupported | pass | gained |
| textureCompressionBC | unsupported | pass | gained |
| push.max_combined_image_samplers | unsupported | pass | gained |
| push.max_uniform_buffers | unsupported | pass | gained |
| stress.multi_draw_indirect_large | unsupported | pass | gained |
| borderColorSwizzleFromImage | unsupported | untested | changed |
| depthBiasControl | unsupported | untested | changed |
| depthBiasExact | unsupported | untested | changed |
| extendedDynamicState3AlphaToCoverageEnable | unsupported | untested | changed |
| extendedDynamicState3DepthClipEnable | unsupported | untested | changed |
| extendedDynamicState3LineRasterizationMode | unsupported | untested | changed |
| extendedDynamicState3RasterizationSamples | unsupported | untested | changed |
| extendedDynamicState3SampleMask | unsupported | untested | changed |
| nullDescriptor | unsupported | untested | changed |
| shaderSharedInt64Atomics | unsupported | untested | changed |
| dualSrcBlend | unsupported | untested | changed |
| fillModeNonSolid | unsupported | untested | changed |
| logicOp | unsupported | untested | changed |
| shaderInt64 | unsupported | untested | changed |
| wideLines | unsupported | untested | changed |
Speed test scenes (benchmark)
Neither driver has a valid speed test (benchmark report) yet.
Technical differences (Vulkan)
Extensions only in panvk_faux123_rp4pro_v0.13.0 (101)
- 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_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
Extensions only in Mali-G77 MC9 (4)
- VK_EXT_fragment_density_map
- VK_EXT_fragment_density_map2
- VK_EXT_transform_feedback
- VK_KHR_shared_presentable_image
Core features that differ (65)
| multiview | unsupported to pass |
| samplerYcbcrConversion | unsupported to pass |
| shaderDrawParameters | unsupported to pass |
| storageBuffer16BitAccess | unsupported to pass |
| storageInputOutput16 | unsupported to pass |
| storagePushConstant16 | unsupported to pass |
| uniformAndStorageBuffer16BitAccess | unsupported to pass |
| variablePointers | unsupported to pass |
| variablePointersStorageBuffer | unsupported to pass |
| bufferDeviceAddress | unsupported to pass |
| descriptorBindingPartiallyBound | unsupported to pass |
| descriptorBindingSampledImageUpdateAfterBind | unsupported to pass |
| descriptorBindingStorageBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingStorageImageUpdateAfterBind | unsupported to pass |
| descriptorBindingStorageTexelBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingUniformBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingUniformTexelBufferUpdateAfterBind | unsupported to pass |
| descriptorBindingUpdateUnusedWhilePending | unsupported to pass |
| descriptorBindingVariableDescriptorCount | unsupported to pass |
| descriptorIndexing | unsupported to pass |
| drawIndirectCount | unsupported to pass |
| hostQueryReset | unsupported to pass |
| imagelessFramebuffer | unsupported to pass |
| runtimeDescriptorArray | unsupported to pass |
| samplerMirrorClampToEdge | unsupported to pass |
| scalarBlockLayout | unsupported to pass |
| separateDepthStencilLayouts | unsupported to pass |
| shaderBufferInt64Atomics | unsupported to pass |
| shaderInputAttachmentArrayDynamicIndexing | unsupported to pass |
| shaderInputAttachmentArrayNonUniformIndexing | unsupported to pass |
| shaderInt8 | unsupported to pass |
| shaderSampledImageArrayNonUniformIndexing | unsupported to pass |
| shaderSharedInt64Atomics | unsupported to pass |
| shaderStorageBufferArrayNonUniformIndexing | unsupported to pass |
| shaderStorageImageArrayNonUniformIndexing | unsupported to pass |
| shaderStorageTexelBufferArrayDynamicIndexing | unsupported to pass |
| shaderStorageTexelBufferArrayNonUniformIndexing | unsupported to pass |
| shaderSubgroupExtendedTypes | unsupported to pass |
| shaderUniformBufferArrayNonUniformIndexing | unsupported to pass |
| shaderUniformTexelBufferArrayDynamicIndexing | unsupported to pass |
| shaderUniformTexelBufferArrayNonUniformIndexing | unsupported to pass |
| storageBuffer8BitAccess | unsupported to pass |
| storagePushConstant8 | unsupported to pass |
| subgroupBroadcastDynamicId | unsupported to pass |
| timelineSemaphore | unsupported to pass |
| uniformAndStorageBuffer8BitAccess | unsupported to pass |
| uniformBufferStandardLayout | unsupported to pass |
| vulkanMemoryModel | unsupported to pass |
| vulkanMemoryModelAvailabilityVisibilityChains | unsupported to pass |
| vulkanMemoryModelDeviceScope | unsupported to pass |
| computeFullSubgroups | unsupported to pass |
| descriptorBindingInlineUniformBlockUpdateAfterBind | unsupported to pass |
| dynamicRendering | unsupported to pass |
| inlineUniformBlock | unsupported to pass |
| maintenance4 | unsupported to pass |
| pipelineCreationCacheControl | unsupported to pass |
| privateData | unsupported to pass |
| robustImageAccess | unsupported to pass |
| shaderDemoteToHelperInvocation | unsupported to pass |
| shaderIntegerDotProduct | unsupported to pass |
| shaderTerminateInvocation | unsupported to pass |
| shaderZeroInitializeWorkgroupMemory | unsupported to pass |
| subgroupSizeControl | unsupported to pass |
| synchronization2 | unsupported to pass |
| textureCompressionASTC_HDR | unsupported to pass |
Limits that differ (55)
| Limit | Stock | Custom |
|---|---|---|
| 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 |
| 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 | 128 | 0 |
| maxGeometryOutputVertices | 256 | 0 |
| maxGeometryTotalOutputComponents | 1024 | 0 |
| maxFragmentDualSrcAttachments | 0 | 8 |
| maxFragmentCombinedOutputResources | 1000008 | 4360 |
| maxComputeWorkGroupCount | 4294967295, 4294967295, 4294967295 | 65535, 65535, 65535 |
| maxDrawIndirectCount | 1 | 65535 |
| maxSamplerLodBias | 255 | 127.996 |
| minMemoryMapAlignment | 64 | 4096 |
| minTexelBufferOffsetAlignment | 64 | 16 |
| minStorageBufferOffsetAlignment | 64 | 16 |
| subPixelInterpolationOffsetBits | 4 | 8 |
| framebufferNoAttachmentsSampleCounts | 29 | 13 |
| timestampComputeAndGraphics | 1 | 0 |
| timestampPeriod | 76.9231 | 0 |
| pointSizeRange | 1, 1024 | 0.125, 4095.94 |
| lineWidthRange | 1, 1 | 0, 7.99219 |
| lineWidthGranularity | 0 | 0.0078125 |
Formats supported by only one driver (31 gained, 6 lost)
- A1B5G5R5_UNORM_PACK16
- A2R10G10B10_SNORM_PACK32
- A2R10G10B10_SSCALED_PACK32
- A2R10G10B10_USCALED_PACK32
- A8_UNORM
- B8G8R8A8_SSCALED
- B8G8R8A8_USCALED
- B8G8R8_SSCALED
- B8G8R8_USCALED
- 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
- 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_444_UNORM
- R64_SINT
- R64_UINT
- B5G5R5A1_UNORM_PACK16
- B8G8R8G8_422_UNORM
- B8G8R8_SNORM
- G8B8G8R8_422_UNORM
- R4G4_UNORM_PACK8
- R5G5B5A1_UNORM_PACK16