Turnip-Rutabaga-v3 vs Qualcomm Technologies Inc. Adreno Vulkan Driver
On Adreno (TM) 610 (HONOR Pad X8a, HONOR X8c, POCO M7, Redmi Note 11, Redmi Note 12, Redmi Note 13, Samsung Galaxy A05s, Xiaomi 220333QAG). The first driver named is compared against the second, which is the baseline.
- oit_linked_lists10% faster
- pipeline_barriers98% faster
- subpasses89% faster
Small areas of the picture differ from the stock driver in 1 scene (pipeline_barriers: 1538 of 2304 cells). The picture matches overall, so this is a local rendering fault, not a different scene.
Did not start every time: compute_nbody (stock 3 of 3, custom 0 of 3), hdr_2160p (stock 0 of 3, custom 3 of 3).
Qualcomm Technologies Inc. Adreno Vulkan Driver details Turnip-Rutabaga-v3 details
Feature checks that differ (46)
| Feature | Stock | Custom | Change |
|---|---|---|---|
| core.compute_udiv | pass | fail | lost |
| borderColorSwizzle | unsupported | pass | gained |
| colorWriteEnable | unsupported | pass | gained |
| customBorderColors | 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 |
| extendedDynamicState3PolygonMode | unsupported | pass | gained |
| inlineUniformBlock | unsupported | pass | gained |
| robustBufferAccess2 | unsupported | pass | gained |
| robustImageAccess2 | unsupported | pass | gained |
| transformFeedback | unsupported | pass | gained |
| vertexInputDynamicState | unsupported | pass | gained |
| timelineSemaphore | unsupported | pass | gained |
| textureCompressionBC | unsupported | pass | gained |
| limit.color_attachments | fail | pass | gained |
| borderColorSwizzleFromImage | unsupported | untested | changed |
| customBorderColorWithoutFormat | unsupported | untested | changed |
| extendedDynamicState2PatchControlPoints | unsupported | untested | changed |
| extendedDynamicState3AlphaToCoverageEnable | unsupported | untested | changed |
| extendedDynamicState3AlphaToOneEnable | unsupported | untested | changed |
| extendedDynamicState3DepthClipEnable | unsupported | untested | changed |
| extendedDynamicState3DepthClipNegativeOneToOne | unsupported | untested | changed |
| extendedDynamicState3LineRasterizationMode | unsupported | untested | changed |
| extendedDynamicState3ProvokingVertexMode | unsupported | untested | changed |
| extendedDynamicState3RasterizationSamples | unsupported | untested | changed |
| extendedDynamicState3RasterizationStream | unsupported | untested | changed |
| extendedDynamicState3SampleMask | unsupported | untested | changed |
| extendedDynamicState3TessellationDomainOrigin | unsupported | untested | changed |
| descriptorBindingInlineUniformBlockUpdateAfterBind | unsupported | untested | changed |
| nullDescriptor | unsupported | untested | changed |
| logicOp | unsupported | untested | changed |
| shaderInt64 | unsupported | untested | changed |
| shaderResourceMinLod | unsupported | untested | changed |
| shaderResourceResidency | unsupported | untested | changed |
| shaderTessellationAndGeometryPointSize | unsupported | untested | changed |
| sparseBinding | unsupported | untested | changed |
| sparseResidencyAliased | unsupported | untested | changed |
| sparseResidencyBuffer | unsupported | untested | changed |
| variableMultisampleRate | 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 | 93.82 | n/a | only one side | 3 of 3 vs 0 of 3 | ? vs ? | not checked |
| hdr_2160p | n/a | 317.11 | only one side | 0 of 3 vs 3 of 3 | ? vs 1068 | not checked |
| oit_linked_lists | 103.92 | 94.48 | 10% faster | 3 of 3 vs 3 of 3 | ? vs 1115 | no large difference no small difference |
| pipeline_barriers | 83.44 | 42.19 | 98% faster | 3 of 3 vs 3 of 3 | ? vs 1115 | no large difference differs in 1538 small areas |
| subpasses | 155.84 | 82.30 | 89% faster | 3 of 3 vs 3 of 3 | ? vs 1115 | not checked |
Technical differences (Vulkan)
Extensions only in Turnip-Rutabaga-v3 (98)
- VK_AMD_buffer_marker
- VK_ARM_rasterization_order_attachment_access
- VK_EXT_4444_formats
- VK_EXT_attachment_feedback_loop_dynamic_state
- VK_EXT_attachment_feedback_loop_layout
- VK_EXT_border_color_swizzle
- VK_EXT_color_write_enable
- VK_EXT_conditional_rendering
- VK_EXT_custom_border_color
- VK_EXT_custom_resolve
- VK_EXT_debug_marker
- VK_EXT_depth_clamp_control
- VK_EXT_depth_clamp_zero_one
- VK_EXT_depth_clip_control
- VK_EXT_depth_clip_enable
- VK_EXT_depth_range_unrestricted
- VK_EXT_descriptor_buffer
- VK_EXT_descriptor_indexing
- 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_dma_buf
- VK_EXT_fragment_density_map
- VK_EXT_fragment_density_map_offset
- VK_EXT_frame_boundary
- VK_EXT_graphics_pipeline_library
- VK_EXT_host_image_copy
- VK_EXT_image_2d_view_of_3d
- VK_EXT_image_compression_control
- VK_EXT_image_drm_format_modifier
- VK_EXT_image_robustness
- VK_EXT_image_view_min_lod
- VK_EXT_inline_uniform_block
- VK_EXT_legacy_dithering
- VK_EXT_legacy_vertex_attributes
- VK_EXT_load_store_op_none
- VK_EXT_map_memory_placed
- VK_EXT_memory_budget
- VK_EXT_multi_draw
- VK_EXT_multisampled_render_to_single_sampled
- VK_EXT_mutable_descriptor_type
- VK_EXT_nested_command_buffer
- VK_EXT_non_seamless_cube_map
- VK_EXT_pipeline_robustness
- VK_EXT_primitive_restart_index
- VK_EXT_primitive_topology_list_restart
- VK_EXT_primitives_generated_query
- VK_EXT_private_data
- VK_EXT_provoking_vertex
- VK_EXT_rasterization_order_attachment_access
- VK_EXT_robustness2
- VK_EXT_shader_atomic_float
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_shader_module_identifier
- VK_EXT_shader_replicated_composites
- VK_EXT_shader_stencil_export
- VK_EXT_shader_uniform_buffer_unsized_array
- VK_EXT_swapchain_maintenance1
- VK_EXT_texel_buffer_alignment
- VK_EXT_tooling_info
- VK_EXT_transform_feedback
- VK_EXT_vertex_input_dynamic_state
- VK_EXT_zero_initialize_device_memory
- VK_GOOGLE_decorate_string
- VK_GOOGLE_hlsl_functionality1
- VK_KHR_compute_shader_derivatives
- VK_KHR_cooperative_matrix
- VK_KHR_copy_commands2
- VK_KHR_deferred_host_operations
- VK_KHR_depth_stencil_resolve
- VK_KHR_dynamic_rendering
- VK_KHR_dynamic_rendering_local_read
- VK_KHR_format_feature_flags2
- VK_KHR_imageless_framebuffer
- VK_KHR_index_type_uint8
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_map_memory2
- VK_KHR_pipeline_executable_properties
- VK_KHR_pipeline_library
- VK_KHR_shader_clock
- VK_KHR_shader_expect_assume
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_subgroup_rotate
- VK_KHR_shader_terminate_invocation
- VK_KHR_synchronization2
- VK_KHR_timeline_semaphore
- VK_KHR_vertex_attribute_divisor
- VK_KHR_workgroup_memory_explicit_layout
- VK_KHR_zero_initialize_workgroup_memory
- VK_NV_compute_shader_derivatives
- VK_QCOM_fragment_density_map_offset
- VK_QCOM_multiview_per_view_render_areas
- VK_VALVE_mutable_descriptor_type
Extensions only in Qualcomm Technologies Inc. Adreno Vulkan Driver (7)
- VK_EXT_global_priority
- VK_EXT_subgroup_size_control
- VK_KHR_multiview
- VK_KHR_shader_subgroup_extended_types
- VK_KHR_shared_presentable_image
- VK_KHR_spirv_1_4
- VK_QCOM_render_pass_store_ops
Core features that differ (0)
| None |
Limits that differ (33)
| Limit | Stock | Custom |
|---|---|---|
| maxStorageBufferRange | 536870912 | 134217728 |
| maxPushConstantsSize | 128 | 256 |
| maxMemoryAllocationCount | 4096 | 4294967295 |
| maxSamplerAllocationCount | 4000 | 65536 |
| bufferImageGranularity | 1 | 64 |
| sparseAddressSpaceSize | 0 | 274877906944 |
| maxPerStageDescriptorSamplers | 524288 | 16777216 |
| maxPerStageDescriptorUniformBuffers | 524288 | 16777216 |
| maxPerStageDescriptorStorageBuffers | 524288 | 16777216 |
| maxPerStageDescriptorSampledImages | 524288 | 16777216 |
| maxPerStageDescriptorStorageImages | 524288 | 16777216 |
| maxPerStageResources | 1572864 | 16777216 |
| maxDescriptorSetSamplers | 524288 | 16777216 |
| maxDescriptorSetUniformBuffers | 524288 | 16777216 |
| maxDescriptorSetUniformBuffersDynamic | 32 | 16 |
| maxDescriptorSetStorageBuffers | 524288 | 16777216 |
| maxDescriptorSetStorageBuffersDynamic | 16 | 8 |
| maxDescriptorSetSampledImages | 524288 | 16777216 |
| maxDescriptorSetStorageImages | 524288 | 16777216 |
| maxVertexInputAttributeOffset | 4096 | 4095 |
| maxGeometryInputComponents | 128 | 64 |
| maxGeometryOutputVertices | 1024 | 256 |
| maxGeometryTotalOutputComponents | 131072 | 1024 |
| maxFragmentInputComponents | 112 | 128 |
| maxFragmentCombinedOutputResources | 72 | 33554440 |
| maxComputeWorkGroupSize | 1024, 1024, 64 | 1024, 1024, 1024 |
| minMemoryMapAlignment | 64 | 4096 |
| minStorageBufferOffsetAlignment | 64 | 4 |
| maxFramebufferLayers | 2048 | 1024 |
| discreteQueuePriorities | 3 | 2 |
| optimalBufferCopyOffsetAlignment | 64 | 128 |
| optimalBufferCopyRowPitchAlignment | 64 | 128 |
| nonCoherentAtomSize | 1 | 64 |
Formats supported by only one driver (48 gained, 0 lost)
- A2B10G10R10_SSCALED_PACK32
- A2B10G10R10_USCALED_PACK32
- A2R10G10B10_SSCALED_PACK32
- A2R10G10B10_USCALED_PACK32
- A4B4G4R4_UNORM_PACK16
- A4R4G4B4_UNORM_PACK16
- A8B8G8R8_SSCALED_PACK32
- A8B8G8R8_USCALED_PACK32
- B8G8R8A8_SINT
- B8G8R8A8_SNORM
- B8G8R8A8_SSCALED
- B8G8R8A8_UINT
- B8G8R8A8_USCALED
- B8G8R8_SINT
- B8G8R8_SNORM
- B8G8R8_UINT
- 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
- R16G16B16A16_SSCALED
- R16G16B16A16_USCALED
- R16G16B16_SSCALED
- R16G16B16_USCALED
- R16G16_SSCALED
- R16G16_USCALED
- R16_SSCALED
- R16_USCALED
- R8G8B8A8_SSCALED
- R8G8B8A8_USCALED
- R8G8B8_SSCALED
- R8G8B8_USCALED
- R8G8_SSCALED
- R8G8_USCALED
- R8_SSCALED
- R8_USCALED
- None