KhronosGroup推出新的开放式Vulkan扩展以消除对管道的需求

摘要 KhronosGroup本周早些时候透露,Vulkan扩展将允许多个供应商尝试允许访问以轻松管理软件如何指定着色器和着色器状态。新扩展更改为VK_EXT_s

KhronosGroup本周早些时候透露,Vulkan扩展将允许多个供应商尝试允许访问以轻松管理软件如何“指定着色器和着色器状态”。新扩展更改为VK_EXT_shader_object,它将引入“表示单个已编译着色器阶段的新VkShaderEXT对象类型”,该公司将添加四个新函数来使用和调整新Vulkan扩展中的对象。

现在可以将Vulkan实施到未来的项目中而无需管道

放弃Vulkan扩展的管线可在使用着色器对象时提供更大的灵活性和简单性,从而允许供应商为每个项目选择仅使用管线、着色器对象或两者的组合。

着色器对象以不同于管道的方式工作:

管线需要将每个所需的着色器组合(使用传统“整体”管线时的所有阶段或使用管线库时的某些预定义阶段组合)一起编译。相反,着色器对象允许以任意组合组装阶段,包括单独编译每个着色器。

对于管道,链接是一个明确的步骤,它创建一个新对象,该对象具有自己的生命周期,需要由应用程序管理。对于着色器对象,链接只是从应用程序到实现的创建时承诺,它将始终使用着色器对象的特定组合。

管道在使用前必须始终链接,而链接着色器对象是可选的。

管道允许实现要求在编译时静态提供一些状态,而对于着色器对象,所有状态总是动态设置并且独立于着色器。

管道需要在创建管道时指定渲染附件格式,而着色器对象则不需要。着色器对象可以与设备支持的附件格式的任何有效组合一起使用。

使用管线,应用程序可以检索并重用已编译的着色器代码作为管线缓存,但此数据不会用于创建新管线。使用着色器对象,编译后的着色器代码可以直接从任何着色器对象中检索,并保证可用于在任何兼容的物理设备上创建等效的着色器对象,而无需提供原始SPIR-V。

KhronosGroup完成VulkanVideoAPI1.0,引入H.264和H.265解码1

Khronos保证在项目中实施Vulkan扩展不会影响项目的性能。这是因为着色器对象在影响处理器方面比管线更优化,并且对GPU的负面影响可以忽略不计。该公司还指出,“使用着色器对象API的更简单应用程序代码对CPU性能的改进可以胜过为使用管线而重新设计的等效应用程序代码,其性能足以使应用程序的性能改进超过额外实施开销的成本。”

通过合并VK_EXT_shader_object实现,满足了特定的性能要求:

使用着色器对象的绘制调用占用的CPU时间不得超过使用完全静态图形管道的绘制调用的150%

使用着色器对象的绘制调用占用的CPU时间不得超过使用最大动态图形管道的绘制调用的120%

使用计算着色器对象的调度调用不得比使用计算管道的调度调用慢得多

从二进制着色器代码创建着色器对象所花费的CPU时间不得超过将等量数据复制到设备本地内存的成本的150%

该公司预计新的Vulkan扩展将开始被广泛采用,这将有助于增长并允许随着时间的推移进行更多改进和添加。NVIDIA在NVIDIA开发者网站上的最新驱动程序中提供了新VK_EXT_shader_object的测试版。Khronos还添加了一个新层,实现对现有驱动程序的支持,作为Vulkan-ExtensionLayer存储库的最新更新,在下一个版本发布时,二进制构建作为VulkanSDK的一个包含。

您可以在Vulkan规范页面上找到有关实施和支持的更多信息。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。