Turnip-24.1.0.adpkg_R18.a6xx vs Qualcomm Technologies Inc. Adreno Vulkan Driver
Adreno (TM) 618 (Redmi Note 10 Pro, Redmi Note 10 Pro). 最初に挙げたドライバーを、2番目のドライバー(ベースライン)と比べています。
純正Qualcomm Technologies Inc. Adreno Vulkan Driver
vsカスタムTurnip-24.1.0.adpkg_R18.a6xx
グラフィックスのシステムバージョン(Vulkan)1.1.128 → 1.3.280
追加機能(拡張機能)56 → 110+60 -6
チェックに成功した機能(検証済み)27 → 48Turnip-24.1.0.adpkg_R18.a6xxでのみ成功 22 Qualcomm Technologies Inc. Adreno Vulkan Driverでのみ成功 1
速度テストのシーン(ベンチマーク)共通のシーンなし
各ドライバーが動かせそうなゲーム(機能リストからの目安): 緑は動く見込み、黄は動くかも、橙は厳しい、赤は動かない
純正DX92002+DX102006+DX112009+DX122015+Switch
カスタムDX92002+DX102006+DX112009+DX122015+Switch
Qualcomm Technologies Inc. Adreno Vulkan Driverの詳細 Turnip-24.1.0.adpkg_R18.a6xxの詳細
結果が異なる機能チェック(43)
| 機能 | 純正 | カスタム | 変化 |
|---|---|---|---|
| core.compute_udiv | 成功 | 失敗 | 欠落 |
| borderColorSwizzle | 非対応 | 成功 | 追加 |
| colorWriteEnable | 非対応 | 成功 | 追加 |
| customBorderColors | 非対応 | 成功 | 追加 |
| depthClipControl | 非対応 | 成功 | 追加 |
| extendedDynamicState | 非対応 | 成功 | 追加 |
| extendedDynamicState2 | 非対応 | 成功 | 追加 |
| extendedDynamicState2LogicOp | 非対応 | 成功 | 追加 |
| extendedDynamicState3ColorBlendEnable | 非対応 | 成功 | 追加 |
| extendedDynamicState3ColorBlendEquation | 非対応 | 成功 | 追加 |
| extendedDynamicState3ColorWriteMask | 非対応 | 成功 | 追加 |
| extendedDynamicState3DepthClampEnable | 非対応 | 成功 | 追加 |
| extendedDynamicState3LogicOpEnable | 非対応 | 成功 | 追加 |
| extendedDynamicState3PolygonMode | 非対応 | 成功 | 追加 |
| inlineUniformBlock | 非対応 | 成功 | 追加 |
| robustBufferAccess2 | 非対応 | 成功 | 追加 |
| robustImageAccess2 | 非対応 | 成功 | 追加 |
| transformFeedback | 非対応 | 成功 | 追加 |
| vertexInputDynamicState | 非対応 | 成功 | 追加 |
| timelineSemaphore | 非対応 | 成功 | 追加 |
| multiViewport | 非対応 | 成功 | 追加 |
| textureCompressionBC | 非対応 | 成功 | 追加 |
| limit.color_attachments | 失敗 | 成功 | 追加 |
| borderColorSwizzleFromImage | 非対応 | 未テスト | 変更あり |
| customBorderColorWithoutFormat | 非対応 | 未テスト | 変更あり |
| extendedDynamicState2PatchControlPoints | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3AlphaToCoverageEnable | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3AlphaToOneEnable | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3DepthClipEnable | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3DepthClipNegativeOneToOne | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3LineRasterizationMode | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3ProvokingVertexMode | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3RasterizationSamples | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3RasterizationStream | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3SampleLocationsEnable | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3SampleMask | 非対応 | 未テスト | 変更あり |
| extendedDynamicState3TessellationDomainOrigin | 非対応 | 未テスト | 変更あり |
| descriptorBindingInlineUniformBlockUpdateAfterBind | 非対応 | 未テスト | 変更あり |
| nullDescriptor | 非対応 | 未テスト | 変更あり |
| geometryStreams | 非対応 | 未テスト | 変更あり |
| logicOp | 非対応 | 未テスト | 変更あり |
| shaderTessellationAndGeometryPointSize | 非対応 | 未テスト | 変更あり |
| variableMultisampleRate | 非対応 | 未テスト | 変更あり |
速度テストのシーン(ベンチマーク)
2つのドライバーは同じ機種の組み合わせで測定されていません。異なるデバイスのフレームタイムではドライバーを比較できないので、その点を踏まえて数値を見てください。
| シーン | 純正 ms | カスタム ms | 差 | 起動 | GPUクロック(MHz) | 純正との映像比較 |
|---|---|---|---|---|---|---|
| compute_nbody | 56.87 | n/a | 片方のみ | 3中3 vs 3中0 | ? vs ? | 未チェック |
| oit_linked_lists | 53.69 | n/a | 片方のみ | 3中0 vs 3中3 | ? vs ? | 未チェック |
| pipeline_barriers | 27.72 | n/a | 片方のみ | 3中3 vs 3中3 | ? vs ? | 大きな差なし 小さな差が1510箇所 |
| subpasses | 48.62 | n/a | 片方のみ | 3中3 vs 3中3 | ? vs ? | 未チェック |
技術的な違い(Vulkan)
Turnip-24.1.0.adpkg_R18.a6xxだけにある拡張機能(60)
- VK_AMD_buffer_marker
- VK_ARM_rasterization_order_attachment_access
- VK_EXT_4444_formats
- 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_depth_clip_control
- VK_EXT_depth_clip_enable
- VK_EXT_descriptor_buffer
- VK_EXT_descriptor_indexing
- 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_global_priority_query
- VK_EXT_graphics_pipeline_library
- VK_EXT_image_2d_view_of_3d
- VK_EXT_image_drm_format_modifier
- VK_EXT_image_robustness
- VK_EXT_image_view_min_lod
- VK_EXT_inline_uniform_block
- VK_EXT_load_store_op_none
- VK_EXT_memory_budget
- VK_EXT_multi_draw
- VK_EXT_mutable_descriptor_type
- VK_EXT_non_seamless_cube_map
- VK_EXT_post_depth_coverage
- 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_demote_to_helper_invocation
- VK_EXT_shader_module_identifier
- VK_EXT_shader_stencil_export
- VK_EXT_shader_viewport_index_layer
- VK_EXT_texel_buffer_alignment
- VK_EXT_tooling_info
- VK_EXT_transform_feedback
- VK_EXT_vertex_input_dynamic_state
- VK_KHR_copy_commands2
- VK_KHR_depth_stencil_resolve
- VK_KHR_dynamic_rendering
- VK_KHR_format_feature_flags2
- VK_KHR_global_priority
- VK_KHR_imageless_framebuffer
- VK_KHR_maintenance4
- VK_KHR_pipeline_executable_properties
- VK_KHR_pipeline_library
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_terminate_invocation
- VK_KHR_synchronization2
- VK_KHR_timeline_semaphore
- VK_KHR_zero_initialize_workgroup_memory
- VK_VALVE_mutable_descriptor_type
Qualcomm Technologies Inc. Adreno Vulkan Driverだけにある拡張機能(6)
- VK_ANDROID_external_memory_android_hardware_buffer
- VK_EXT_device_memory_report
- VK_EXT_texture_compression_astc_hdr
- VK_KHR_shared_presentable_image
- VK_QCOM_render_pass_shader_resolve
- VK_QCOM_render_pass_store_ops
差があるコア機能(56)
| multiview | 非対応 → 成功 |
| samplerYcbcrConversion | 非対応 → 成功 |
| shaderDrawParameters | 非対応 → 成功 |
| variablePointers | 非対応 → 成功 |
| variablePointersStorageBuffer | 非対応 → 成功 |
| bufferDeviceAddress | 非対応 → 成功 |
| descriptorBindingPartiallyBound | 非対応 → 成功 |
| descriptorBindingSampledImageUpdateAfterBind | 非対応 → 成功 |
| descriptorBindingStorageBufferUpdateAfterBind | 非対応 → 成功 |
| descriptorBindingStorageImageUpdateAfterBind | 非対応 → 成功 |
| descriptorBindingStorageTexelBufferUpdateAfterBind | 非対応 → 成功 |
| descriptorBindingUniformBufferUpdateAfterBind | 非対応 → 成功 |
| descriptorBindingUniformTexelBufferUpdateAfterBind | 非対応 → 成功 |
| descriptorBindingUpdateUnusedWhilePending | 非対応 → 成功 |
| descriptorBindingVariableDescriptorCount | 非対応 → 成功 |
| descriptorIndexing | 非対応 → 成功 |
| drawIndirectCount | 非対応 → 成功 |
| hostQueryReset | 非対応 → 成功 |
| imagelessFramebuffer | 非対応 → 成功 |
| runtimeDescriptorArray | 非対応 → 成功 |
| samplerFilterMinmax | 非対応 → 成功 |
| samplerMirrorClampToEdge | 非対応 → 成功 |
| scalarBlockLayout | 非対応 → 成功 |
| separateDepthStencilLayouts | 非対応 → 成功 |
| shaderFloat16 | 非対応 → 成功 |
| shaderOutputLayer | 非対応 → 成功 |
| shaderOutputViewportIndex | 非対応 → 成功 |
| shaderSampledImageArrayNonUniformIndexing | 非対応 → 成功 |
| shaderStorageBufferArrayNonUniformIndexing | 非対応 → 成功 |
| shaderStorageImageArrayNonUniformIndexing | 非対応 → 成功 |
| shaderStorageTexelBufferArrayDynamicIndexing | 非対応 → 成功 |
| shaderStorageTexelBufferArrayNonUniformIndexing | 非対応 → 成功 |
| shaderSubgroupExtendedTypes | 非対応 → 成功 |
| shaderUniformBufferArrayNonUniformIndexing | 非対応 → 成功 |
| shaderUniformTexelBufferArrayDynamicIndexing | 非対応 → 成功 |
| shaderUniformTexelBufferArrayNonUniformIndexing | 非対応 → 成功 |
| subgroupBroadcastDynamicId | 非対応 → 成功 |
| timelineSemaphore | 非対応 → 成功 |
| uniformBufferStandardLayout | 非対応 → 成功 |
| vulkanMemoryModel | 非対応 → 成功 |
| vulkanMemoryModelAvailabilityVisibilityChains | 非対応 → 成功 |
| vulkanMemoryModelDeviceScope | 非対応 → 成功 |
| computeFullSubgroups | 非対応 → 成功 |
| descriptorBindingInlineUniformBlockUpdateAfterBind | 非対応 → 成功 |
| dynamicRendering | 非対応 → 成功 |
| inlineUniformBlock | 非対応 → 成功 |
| maintenance4 | 非対応 → 成功 |
| pipelineCreationCacheControl | 非対応 → 成功 |
| privateData | 非対応 → 成功 |
| robustImageAccess | 非対応 → 成功 |
| shaderDemoteToHelperInvocation | 非対応 → 成功 |
| shaderIntegerDotProduct | 非対応 → 成功 |
| shaderTerminateInvocation | 非対応 → 成功 |
| shaderZeroInitializeWorkgroupMemory | 非対応 → 成功 |
| subgroupSizeControl | 非対応 → 成功 |
| synchronization2 | 非対応 → 成功 |
差がある制限(35)
| 上限 | 純正 | カスタム |
|---|---|---|
| maxStorageBufferRange | 536870912 | 134217728 |
| maxPushConstantsSize | 128 | 256 |
| maxMemoryAllocationCount | 4096 | 4294967295 |
| maxSamplerAllocationCount | 4000 | 65536 |
| bufferImageGranularity | 1 | 64 |
| 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 | 124 |
| maxFragmentCombinedOutputResources | 72 | 33554440 |
| maxComputeWorkGroupInvocations | 1024 | 2048 |
| maxComputeWorkGroupSize | 1024, 1024, 64 | 1024, 1024, 1024 |
| maxViewports | 1 | 16 |
| minMemoryMapAlignment | 64 | 4096 |
| minStorageBufferOffsetAlignment | 64 | 4 |
| maxFramebufferLayers | 2048 | 1024 |
| discreteQueuePriorities | 3 | 2 |
| lineWidthGranularity | 0 | 1 |
| optimalBufferCopyOffsetAlignment | 64 | 128 |
| optimalBufferCopyRowPitchAlignment | 64 | 128 |
| nonCoherentAtomSize | 1 | 64 |
片方のドライバーだけが対応するフォーマット(追加45、欠落15)
- 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
- 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
- ASTC_10x10_SFLOAT_BLOCK
- ASTC_10x5_SFLOAT_BLOCK
- ASTC_10x6_SFLOAT_BLOCK
- ASTC_10x8_SFLOAT_BLOCK
- ASTC_12x10_SFLOAT_BLOCK
- ASTC_12x12_SFLOAT_BLOCK
- ASTC_4x4_SFLOAT_BLOCK
- ASTC_5x4_SFLOAT_BLOCK
- ASTC_5x5_SFLOAT_BLOCK
- ASTC_6x5_SFLOAT_BLOCK
- ASTC_6x6_SFLOAT_BLOCK
- ASTC_8x5_SFLOAT_BLOCK
- ASTC_8x6_SFLOAT_BLOCK
- ASTC_8x8_SFLOAT_BLOCK
- B8G8R8_UNORM