内容提要
Vulkan 1.3.295引入了VK_KHR_compute_shader_derivatives扩展,支持SPV_KHR_compute_shader_derivatives SPIR-V扩展。该扩展为计算着色器提供了两种新的执行模式,允许显式或隐式求导。NVIDIA之前维护了类似的供应商扩展VK_NV_compute_shader_derivatives。
延伸解读
从厂商专属到跨平台标准
VK_KHR_compute_shader_derivatives 并非全新概念,NVIDIA 早在 2018 年就维护了类似的供应商扩展 VK_NV_compute_shader_derivatives。此次 Khronos 将其标准化为 KHR 扩展,意味着该功能不再局限于 NVIDIA 硬件,AMD 等厂商的工程师也参与了制定。对开发者而言,这有助于减少针对不同 GPU 的适配工作,但实际支持情况仍取决于各厂商驱动是否实现该扩展。
两种执行模式的区别
新扩展为计算着色器引入了 DerivativeGroupQuadsKHR 和 DerivativeGroupLinearKHR 两种执行模式。前者将着色器调用按本地调用 ID 的 x、y 坐标组成 2×2 组,形式为 (2m+{0,1}, 2n+{0,1});后者则按本地调用索引值组成 2×2 组,形式为 4m+{0,1,2,3}。两种模式都通过 2×2 调用组差分来计算导数,区别在于分组依据不同,开发者需根据具体算法选择合适模式。
适用着色器类型与使用前提
该扩展主要面向计算着色器,同时网格和任务着色器也可以选择支持新的执行模式。它增加了对 SPIR-V 的 SPV_KHR_compute_shader_derivatives 支持,允许具有已定义工作组的执行模型使用显式或隐式评估导数的内置函数。这意味着开发者若想在计算管线中使用导数,需要同时满足 Vulkan 扩展和 SPIR-V 扩展两方面的支持,并确认目标硬件驱动已实现。
Q&A
Vulkan 1.3.295 的新扩展是什么?
Vulkan 1.3.295 引入了 VK_KHR_compute_shader_derivatives 扩展。
VK_KHR_compute_shader_derivatives 扩展的主要功能是什么?
该扩展为计算着色器提供了两种新的执行模式,允许显式或隐式求导。
哪些公司参与了 VK_KHR_compute_shader_derivatives 扩展的开发?
该扩展由英伟达、AMD 和 Valve 的工程师共同开发。
VK_KHR_compute_shader_derivatives 扩展支持哪些 SPIR-V 功能?
该扩展支持 SPIR-V 的 SPV_KHR_compute_shader_derivatives。
新扩展提供了哪些执行模式?
新扩展提供了 DerivativeGroupQuadsKHR 和 DerivativeGroupLinearKHR 两种执行模式。
NVIDIA 在 VK_KHR_compute_shader_derivatives 扩展之前维护了什么扩展?
NVIDIA 在2018年维护了类似的供应商扩展 VK_NV_compute_shader_derivatives。