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.
- hdr_2160p32% slower
- oit_linked_lists43% slower
- pipeline_barriers_2160p35% slower
- subpasses_2160p39% slower
Small areas of the picture differ from the stock driver in 2 scenes (pipeline_barriers: 1432 of 2304 cells, pipeline_barriers_2160p: 1291 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 1 of these scenes (for example hdr_2160p: stock at 90% 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 | 8.51 | n/a | only one side | 3 of 3 vs 3 of 3 | 432 vs 525 not comparable | no large difference no small difference |
| compute_nbody_2x | n/a | 17.79 | only one side | ? vs 3 of 3 | ? vs 525 | not checked |
| hdr_2160p | 11.03 | 16.11 | 32% slower | 3 of 3 vs 3 of 3 | 750 vs 525 not comparable | no large difference no small difference |
| oit_linked_lists | 21.66 | 37.78 | 43% slower | 3 of 3 vs 3 of 3 | 832 vs 511 | no large difference no small difference |
| pipeline_barriers | 2.38 | n/a | too light, see pipeline_barriers_2160p | 3 of 3 vs 3 of 3 | 832 vs 494 not comparable | no large difference differs in 1432 small areas |
| pipeline_barriers_2160p | 7.52 | 11.52 | 35% slower | 3 of 3 vs 3 of 3 | 816 vs 511 | no large difference differs in 1291 small areas |
| subpasses | 3.12 | n/a | too light, see subpasses_2160p | 3 of 3 vs 3 of 3 | 832 vs 525 | not checked |
| subpasses_2160p | 12.01 | 19.84 | 39% slower | 3 of 3 vs 3 of 3 | 832 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 (23)
- 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_KHR_ray_tracing_position_fetch
- VK_KHR_shader_maximal_reconvergence
- VK_KHR_shader_quad_control
- VK_KHR_shared_presentable_image
- 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