PanVK-Droid.0.3.5 vs panvk_faux123_v1.0.2
On Mali-G52 (CHUWI HiPad-Air, 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). The first driver named is compared against the second, which is the baseline.
Stockpanvk_faux123_v1.0.2
vsCustomPanVK-Droid.0.3.5
Graphics system version (Vulkan)1.3.363 to 1.3.278
Optional features (extensions)159 to 131+18 -46
Features that pass their check (validated)39 to 346 pass only on PanVK-Droid.0.3.5 11 pass only on panvk_faux123_v1.0.2
Speed test scenes (benchmark)3 faster 0 slower22% faster overall (geometric mean)
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
- compute_nbody28% faster
- pipeline_barriers25% faster
- subpasses14% faster
Small areas of the picture differ from the stock driver in 1 scene (pipeline_barriers: 1326 of 2304 cells). The picture matches overall, so this is a local rendering fault, not a different scene.
Did not start every time: hdr_2160p (stock 0 of 3, custom 3 of 3).
panvk_faux123_v1.0.2 details PanVK-Droid.0.3.5 details
Feature checks that differ (28)
| Feature | panvk_faux123_v1.0.2 | PanVK-Droid.0.3.5 | Change |
|---|---|---|---|
| colorWriteEnable | pass | unsupported | lost |
| depthClipControl | pass | unsupported | lost |
| extendedDynamicState2LogicOp | pass | unsupported | lost |
| extendedDynamicState3ColorBlendEnable | pass | unsupported | lost |
| extendedDynamicState3ColorBlendEquation | pass | unsupported | lost |
| extendedDynamicState3ColorWriteMask | pass | unsupported | lost |
| extendedDynamicState3DepthClampEnable | pass | unsupported | lost |
| extendedDynamicState3LogicOpEnable | pass | unsupported | lost |
| textureCompressionBC | pass | unsupported | lost |
| push.max_combined_image_samplers | pass | unsupported | lost |
| push.max_uniform_buffers | pass | unsupported | lost |
| transformFeedback | unsupported | pass | gained |
| shaderBufferInt64Atomics | unsupported | pass | gained |
| geometryShader | unsupported | pass | gained |
| occlusionQueryPrecise | fail | pass | gained |
| tessellationShader | unsupported | pass | gained |
| limit.uniform_buffer_range | fail | pass | gained |
| customBorderColorWithoutFormat | unsupported | untested | changed |
| depthBiasControl | untested | unsupported | changed |
| depthBiasExact | untested | unsupported | changed |
| extendedDynamicState2PatchControlPoints | unsupported | untested | changed |
| extendedDynamicState3AlphaToCoverageEnable | untested | unsupported | changed |
| extendedDynamicState3DepthClipEnable | untested | unsupported | changed |
| extendedDynamicState3ProvokingVertexMode | unsupported | untested | changed |
| extendedDynamicState3RasterizationSamples | untested | unsupported | changed |
| extendedDynamicState3TessellationDomainOrigin | unsupported | untested | changed |
| shaderSharedInt64Atomics | unsupported | untested | changed |
| depthClamp | untested | unsupported | changed |
Speed test scenes (benchmark)
| Scene | panvk_faux123_v1.0.2 ms | PanVK-Droid.0.3.5 ms | Difference | Starts | GPU clock, MHz | Picture vs stock |
|---|---|---|---|---|---|---|
| compute_nbody | 103.48 | 80.79 | 28% faster | 3 of 3 vs 3 of 3 | ? vs ? | no large difference no small difference |
| hdr_2160p | n/a | 173.86 | only one side | 0 of 3 vs 3 of 3 | ? vs ? | not checked |
| oit_linked_lists | n/a | n/a | only one side | 3 of 3 vs 3 of 3 | ? vs ? | no large difference no small difference |
| pipeline_barriers | 82.97 | 66.50 | 25% faster | 3 of 3 vs 3 of 3 | ? vs ? | no large difference differs in 1326 small areas |
| subpasses | 145.89 | 127.93 | 14% faster | 3 of 3 vs 3 of 3 | ? vs ? | not checked |
Technical differences (Vulkan)
Extensions only in PanVK-Droid.0.3.5 (18)
- VK_ANDROID_external_format_resolve
- VK_ARM_rasterization_order_attachment_access
- VK_EXT_device_fault
- VK_EXT_frame_boundary
- VK_EXT_image_compression_control_swapchain
- VK_EXT_pipeline_protected_access
- VK_EXT_primitives_generated_query
- VK_EXT_rasterization_order_attachment_access
- VK_EXT_rgba10x6_formats
- VK_EXT_shader_image_atomic_int64
- VK_EXT_shader_tile_image
- VK_EXT_subpass_merge_feedback
- VK_EXT_transform_feedback
- VK_KHR_shader_atomic_int64
- VK_KHR_shader_maximal_reconvergence
- VK_KHR_shader_quad_control
- VK_KHR_shader_subgroup_uniform_control_flow
- VK_KHR_shared_presentable_image
Extensions only in panvk_faux123_v1.0.2 (46)
- VK_ARM_scheduling_controls
- VK_EXT_attachment_feedback_loop_dynamic_state
- VK_EXT_attachment_feedback_loop_layout
- VK_EXT_buffer_device_address
- VK_EXT_color_write_enable
- 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_graphics_pipeline_library
- VK_EXT_hdr_metadata
- VK_EXT_host_image_copy
- VK_EXT_image_view_min_lod
- VK_EXT_map_memory_placed
- VK_EXT_memory_budget
- VK_EXT_non_seamless_cube_map
- VK_EXT_physical_device_drm
- VK_EXT_present_timing
- VK_EXT_shader_atomic_float
- VK_EXT_shader_module_identifier
- VK_EXT_shader_replicated_composites
- VK_EXT_shader_stencil_export
- VK_EXT_shader_uniform_buffer_unsized_array
- VK_EXT_vertex_attribute_divisor
- VK_EXT_zero_initialize_device_memory
- VK_GOOGLE_hlsl_functionality1
- VK_KHR_internally_synchronized_queues
- VK_KHR_maintenance7
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- VK_KHR_pipeline_executable_properties
- VK_KHR_pipeline_library
- VK_KHR_present_id
- VK_KHR_present_id2
- VK_KHR_present_wait
- VK_KHR_present_wait2
- VK_KHR_push_descriptor
- VK_KHR_shader_clock
- VK_KHR_shader_constant_data
- VK_KHR_shader_fma
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_swapchain_maintenance1
- VK_KHR_swapchain_mutable_format
- VK_KHR_unified_image_layouts
- VK_KHR_workgroup_memory_explicit_layout
Core features that differ (16)
| descriptorBindingVariableDescriptorCount | pass to unsupported |
| runtimeDescriptorArray | pass to unsupported |
| shaderBufferInt64Atomics | unsupported to pass |
| shaderFloat16 | unsupported to pass |
| shaderInputAttachmentArrayDynamicIndexing | pass to unsupported |
| shaderInputAttachmentArrayNonUniformIndexing | pass to unsupported |
| shaderOutputViewportIndex | unsupported to pass |
| shaderSampledImageArrayNonUniformIndexing | pass to unsupported |
| shaderSharedInt64Atomics | unsupported to pass |
| shaderStorageBufferArrayNonUniformIndexing | pass to unsupported |
| shaderStorageImageArrayNonUniformIndexing | pass to unsupported |
| shaderStorageTexelBufferArrayDynamicIndexing | pass to unsupported |
| shaderStorageTexelBufferArrayNonUniformIndexing | pass to unsupported |
| shaderUniformBufferArrayNonUniformIndexing | pass to unsupported |
| shaderUniformTexelBufferArrayDynamicIndexing | pass to unsupported |
| shaderUniformTexelBufferArrayNonUniformIndexing | pass to unsupported |
Limits that differ (53)
| Limit | panvk_faux123_v1.0.2 | PanVK-Droid.0.3.5 |
|---|---|---|
| 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 |
| bufferImageGranularity | 64 | 1 |
| sparseAddressSpaceSize | 17146314752 | 0 |
| maxPerStageDescriptorUniformBuffers | 223 | 241 |
| maxPerStageDescriptorStorageBuffers | 64 | 35 |
| maxPerStageDescriptorStorageImages | 32 | 21 |
| maxPerStageResources | 712 | 570 |
| maxDescriptorSetSamplers | 65535 | 768 |
| maxDescriptorSetUniformBuffers | 223 | 1446 |
| maxDescriptorSetUniformBuffersDynamic | 16 | 32 |
| maxDescriptorSetStorageBuffers | 4096 | 210 |
| maxDescriptorSetStorageBuffersDynamic | 8 | 32 |
| maxDescriptorSetSampledImages | 65535 | 1536 |
| maxDescriptorSetStorageImages | 256 | 126 |
| maxVertexInputAttributes | 16 | 32 |
| maxVertexInputBindings | 16 | 32 |
| maxVertexInputAttributeOffset | 4294967295 | 2047 |
| maxVertexInputBindingStride | 65535 | 2048 |
| maxTessellationGenerationLevel | 0 | 64 |
| maxTessellationPatchSize | 0 | 32 |
| maxTessellationControlPerVertexInputComponents | 0 | 128 |
| maxTessellationControlPerVertexOutputComponents | 0 | 128 |
| maxTessellationControlPerPatchOutputComponents | 0 | 120 |
| maxTessellationControlTotalOutputComponents | 0 | 4096 |
| maxTessellationEvaluationInputComponents | 0 | 128 |
| maxTessellationEvaluationOutputComponents | 0 | 128 |
| maxGeometryShaderInvocations | 0 | 32 |
| maxGeometryInputComponents | 0 | 128 |
| maxGeometryOutputComponents | 0 | 128 |
| maxGeometryOutputVertices | 0 | 256 |
| maxGeometryTotalOutputComponents | 0 | 2048 |
| maxFragmentCombinedOutputResources | 4360 | 64 |
| maxComputeWorkGroupCount | 65535, 65535, 65535 | 4294967295, 4294967295, 4294967295 |
| maxSamplerLodBias | 127.996 | 126 |
| minMemoryMapAlignment | 4096 | 64 |
| minTexelBufferOffsetAlignment | 16 | 64 |
| minStorageBufferOffsetAlignment | 16 | 64 |
| maxInterpolationOffset | 0.5 | 0.4375 |
| subPixelInterpolationOffsetBits | 8 | 4 |
| framebufferNoAttachmentsSampleCounts | 5 | 29 |
| timestampComputeAndGraphics | 0 | 1 |
| timestampPeriod | 0 | 76.9231 |
| pointSizeRange | 0.125, 4095.94 | 1, 1024 |
| lineWidthRange | 0, 7.99219 | 1, 4095.94 |
| lineWidthGranularity | 0.0078125 | 0.0625 |
Formats supported by only one driver (12 gained, 21 lost)
- B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
- B5G5R5A1_UNORM_PACK16
- B8G8R8G8_422_UNORM
- B8G8R8_SNORM
- G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
- G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
- G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
- G8B8G8R8_422_UNORM
- R4G4_UNORM_PACK8
- R5G5B5A1_UNORM_PACK16
- R64_SINT
- R64_UINT
- A2R10G10B10_SNORM_PACK32
- 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