turnip_faux123_v1.2.0 vs Qualcomm Technologies Inc. Adreno Vulkan Driver
On Adreno (TM) 830 (AYANEO Pocket FIT Elite, HONOR AAK-AN00, HONOR Magic V5, nubia NX789J, OnePlus 13, OnePlus 13, OnePlus 13s, POCO F8 Pro, realme GT 7 Pro, Samsung Galaxy S25, Samsung Galaxy S25 Ultra, Samsung Galaxy S25 Ultra, Samsung Galaxy S25 Ultra, Samsung Galaxy S25+, Xiaomi 15, Xiaomi 15, Xiaomi 15 Ultra, ZTE NP05J). The first driver named is compared against the second, which is the baseline.
- compute_nbody_2x56% slower
- oit_linked_lists59% slower
- pipeline_barriers_2160p53% slower
Small areas of the picture differ from the stock driver in 2 scenes (pipeline_barriers: 1698 of 2304 cells, pipeline_barriers_2160p: 1038 of 2304 cells). The picture matches overall, so this is a local rendering fault, not a different scene.
Not on equal terms: the GPU clock differed during 2 of these scenes (for example compute_nbody_2x: stock at 94% of the device's maximum, custom at 100%). Part of the frame-time difference comes from the clock the device chose, not from the driver.
Qualcomm Technologies Inc. Adreno Vulkan Driver details turnip_faux123_v1.2.0 details
Feature checks that differ (42)
| Feature | Stock | Custom | Change |
|---|---|---|---|
| extendedDynamicState3ColorBlendEnable | unsupported | pass | gained |
| extendedDynamicState3ColorBlendEquation | unsupported | pass | gained |
| extendedDynamicState3ColorWriteMask | unsupported | pass | gained |
| extendedDynamicState3DepthClampEnable | unsupported | pass | gained |
| extendedDynamicState3LogicOpEnable | unsupported | pass | gained |
| extendedDynamicState3PolygonMode | unsupported | pass | gained |
| depthClamp | untested | pass | gained |
| largePoints | untested | pass | gained |
| compat.helper_loop_terminator | untested | pass | gained |
| compat.nested_map | untested | pass | gained |
| core.blend_advertised_formats | untested | pass | gained |
| core.compute_big_stack | untested | pass | gained |
| core.copy_wide_row_length | fail | pass | gained |
| core.host_coherent_readback | untested | pass | gained |
| core.mrt_partial_kill | untested | pass | gained |
| core.ubo_update_buffer | untested | pass | gained |
| core.ubo_written_after_record | untested | pass | gained |
| core.varying_subset | untested | pass | gained |
| mem.image_padding | untested | pass | gained |
| perf.fb_local_barrier_large_draws | untested | pass | gained |
| perf.fb_local_barrier_overdraw | untested | pass | gained |
| stage.geometry_max_output | untested | pass | gained |
| stage.geometry_point_size | untested | pass | gained |
| stress.scratch_per_batch | untested | pass | gained |
| sync.first_submit_clear_then_compute | untested | pass | gained |
| extendedDynamicState3AlphaToCoverageEnable | unsupported | untested | changed |
| extendedDynamicState3AlphaToOneEnable | unsupported | untested | changed |
| extendedDynamicState3ConservativeRasterizationMode | unsupported | untested | changed |
| extendedDynamicState3DepthClipEnable | unsupported | untested | changed |
| extendedDynamicState3DepthClipNegativeOneToOne | unsupported | untested | changed |
| extendedDynamicState3ExtraPrimitiveOverestimationSize | unsupported | untested | changed |
| extendedDynamicState3LineRasterizationMode | unsupported | untested | changed |
| extendedDynamicState3ProvokingVertexMode | unsupported | untested | changed |
| extendedDynamicState3RasterizationSamples | unsupported | untested | changed |
| extendedDynamicState3RasterizationStream | unsupported | untested | changed |
| extendedDynamicState3SampleLocationsEnable | unsupported | untested | changed |
| extendedDynamicState3SampleMask | unsupported | untested | changed |
| extendedDynamicState3TessellationDomainOrigin | unsupported | untested | changed |
| shaderResourceMinLod | unsupported | untested | changed |
| shaderResourceResidency | unsupported | untested | changed |
| sparseResidency16Samples | untested | unsupported | changed |
| sparseResidencyAliased | unsupported | untested | changed |
Speed test scenes (benchmark)
The two drivers were not measured on the same set of device models. Frame times from different devices do not compare drivers, so read these numbers with that in mind.
| Scene | Stock ms | Custom ms | Difference | Starts | GPU clock, MHz | Picture vs stock |
|---|---|---|---|---|---|---|
| compute_nbody | n/a | n/a | too light, see compute_nbody_2x | 3 of 3 vs 3 of 3 | 611 vs 525 not comparable | no large difference no small difference |
| compute_nbody_2x | 8.22 | 18.83 | 56% slower | 3 of 3 vs 3 of 3 | 1133 vs 525 not comparable | no large difference no small difference |
| hdr_2160p | n/a | 16.15 | only one side | 3 of 3 vs 3 of 3 | 1200 vs 525 | no large difference no small difference |
| oit_linked_lists | 15.57 | 37.78 | 59% slower | 3 of 3 vs 3 of 3 | 1200 vs 511 | no large difference no small difference |
| pipeline_barriers | 2.39 | n/a | too light, see pipeline_barriers_2160p | 3 of 3 vs 3 of 3 | 726 vs 494 not comparable | no large difference differs in 1698 small areas |
| pipeline_barriers_2160p | 5.43 | 11.52 | 53% slower | 3 of 3 vs 3 of 3 | 1039 vs 511 not comparable | no large difference differs in 1038 small areas |
| subpasses | 4.38 | n/a | only one side | 3 of 3 vs 3 of 3 | 607 vs 525 not comparable | not checked |
| subpasses_2160p | n/a | 20.27 | only one side | 3 of 3 vs 3 of 3 | 1167 vs 525 | not checked |
Technical differences (Vulkan)
Extensions only in turnip_faux123_v1.2.0 (31)
- VK_AMD_buffer_marker
- VK_ARM_rasterization_order_attachment_access
- VK_EXT_attachment_feedback_loop_dynamic_state
- VK_EXT_attachment_feedback_loop_layout
- VK_EXT_custom_resolve
- VK_EXT_debug_marker
- VK_EXT_depth_clamp_control
- VK_EXT_dynamic_rendering_unused_attachments
- VK_EXT_extended_dynamic_state3
- VK_EXT_external_memory_dma_buf
- VK_EXT_graphics_pipeline_library
- VK_EXT_host_image_copy
- VK_EXT_image_drm_format_modifier
- VK_EXT_legacy_dithering
- VK_EXT_legacy_vertex_attributes
- VK_EXT_map_memory_placed
- VK_EXT_memory_budget
- VK_EXT_nested_command_buffer
- VK_EXT_non_seamless_cube_map
- VK_EXT_primitive_restart_index
- VK_EXT_shader_replicated_composites
- VK_EXT_shader_uniform_buffer_unsized_array
- VK_EXT_zero_initialize_device_memory
- VK_GOOGLE_decorate_string
- VK_GOOGLE_hlsl_functionality1
- VK_KHR_compute_shader_derivatives
- VK_KHR_maintenance7
- VK_KHR_pipeline_library
- VK_KHR_shader_relaxed_extended_instruction
- VK_NV_compute_shader_derivatives
- VK_VALVE_mutable_descriptor_type
Extensions only in Qualcomm Technologies Inc. Adreno Vulkan Driver (29)
- VK_ANDROID_external_format_resolve
- VK_EXT_astc_decode_mode
- VK_EXT_blend_operation_advanced
- VK_EXT_depth_range_unrestricted
- VK_EXT_device_fault
- VK_EXT_external_memory_acquire_unmodified
- VK_EXT_fragment_density_map
- VK_EXT_fragment_density_map2
- VK_EXT_image_compression_control_swapchain
- VK_EXT_pipeline_protected_access
- VK_EXT_present_mode_fifo_latest_ready
- VK_EXT_present_timing
- VK_KHR_present_id
- VK_KHR_present_id2
- VK_KHR_present_wait2
- VK_KHR_ray_tracing_position_fetch
- VK_KHR_shader_maximal_reconvergence
- VK_KHR_shader_quad_control
- VK_KHR_shared_presentable_image
- VK_KHR_swapchain_maintenance1
- VK_NV_optical_flow
- VK_QCOM_filter_cubic_weights
- VK_QCOM_fragment_density_map_offset
- VK_QCOM_image_processing2
- VK_QCOM_render_pass_store_ops
- VK_QCOM_render_pass_transform
- VK_QCOM_rotated_copy_commands
- VK_QCOM_tile_properties
- VK_QCOM_ycbcr_degamma
Core features that differ (20)
| multiviewGeometryShader | unsupported to pass |
| protectedMemory | pass to unsupported |
| shaderInputAttachmentArrayDynamicIndexing | pass to unsupported |
| shaderInputAttachmentArrayNonUniformIndexing | pass to unsupported |
| bresenhamLines | unsupported to pass |
| dynamicRenderingLocalRead | unsupported to pass |
| globalPriorityQuery | unsupported to pass |
| hostImageCopy | unsupported to pass |
| indexTypeUint8 | unsupported to pass |
| maintenance5 | unsupported to pass |
| maintenance6 | unsupported to pass |
| pipelineRobustness | unsupported to pass |
| pushDescriptor | unsupported to pass |
| rectangularLines | unsupported to pass |
| shaderExpectAssume | unsupported to pass |
| shaderFloatControls2 | unsupported to pass |
| shaderSubgroupRotate | unsupported to pass |
| shaderSubgroupRotateClustered | unsupported to pass |
| vertexAttributeInstanceRateDivisor | unsupported to pass |
| vertexAttributeInstanceRateZeroDivisor | unsupported to pass |
Limits that differ (20)
| Limit | Stock | Custom |
|---|---|---|
| maxTexelBufferElements | 134217728 | 536870911 |
| bufferImageGranularity | 1 | 64 |
| sparseAddressSpaceSize | 562949953421311 | 274877906944 |
| maxPerStageResources | 50331648 | 16777216 |
| maxDescriptorSetUniformBuffersDynamic | 32 | 16 |
| maxDescriptorSetStorageBuffersDynamic | 16 | 8 |
| maxVertexInputAttributeOffset | 4096 | 4095 |
| maxGeometryInputComponents | 128 | 64 |
| maxGeometryOutputVertices | 1024 | 256 |
| maxGeometryTotalOutputComponents | 131072 | 1024 |
| maxFragmentInputComponents | 112 | 128 |
| minMemoryMapAlignment | 64 | 4096 |
| minUniformBufferOffsetAlignment | 256 | 64 |
| minStorageBufferOffsetAlignment | 64 | 4 |
| maxFramebufferLayers | 2048 | 1024 |
| discreteQueuePriorities | 3 | 2 |
| pointSizeRange | 1, 4095 | 1, 4092 |
| optimalBufferCopyOffsetAlignment | 64 | 128 |
| optimalBufferCopyRowPitchAlignment | 64 | 128 |
| nonCoherentAtomSize | 1 | 64 |
Formats supported by only one driver (5 gained, 1 lost)
- B8G8R8A8_SSCALED
- B8G8R8A8_USCALED
- B8G8R8_SINT
- B8G8R8_SNORM
- B8G8R8_UINT
- G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16