当前位置: 首页 > news >正文

Vulkan Graphics pipeline Dynamic State(图形管线之动态状态)

Vulkan官方英文原文:请见 Vulkan® 1.3.236 - A Specification 10.9 章节。

对应的Vulkan技术规格说明书版本: Vulkan 1.3.2

A dynamic pipeline state is a state that can be changed by a command buffer command during the execution of a command buffer. Advance notification of what states are dynamic during command buffer execution may be useful for a driver as it sets up the GPU for command buffer execution.

动态管线状态是一个能被命令缓冲区的命令在一个命令缓冲区命令执行期间改变的状态。在命令缓冲区执行期间提前知道状态是动态的,这有助于驱动对GPU做相关设置。

When a pipeline object is bound, any pipeline object state that is not specified as dynamic is applied to the command buffer state. Pipeline object state that is specified as dynamic is not applied to the command buffer state at this time. Instead, dynamic state can be modified at any time and persists for the lifetime of the command buffer, or until modified by another dynamic state setting command, or made invalid by another pipeline bound with that state specified as static.

绑定管道对象时,任何未指定为动态的管管线对象状态都将应用于命令缓冲区状态。此时被指定为动态的管线对象状态不会被用作命令缓冲区状态。相反,动态状态在任何时间都能被修改,修改后在命令缓冲区的生命周期里持续有效,或者直到被另外的动态状态设置命令修改为止,再或者被另外指定静态状态的管线绑定而变为无效的。

When a pipeline object is bound, the following applies to each state parameter:

• If the state is not specified as dynamic in the new pipeline object, then that command buffer

state is overwritten by the state in the new pipeline object. Before any draw or dispatch call with this pipeline there must not have been any calls to any of the corresponding dynamic state setting commands after this pipeline was bound.

• If the state is specified as dynamic in the new pipeline object, then that command buffer state is not disturbed. Before any draw or dispatch call with this pipeline there must have been at least one call to each of the corresponding dynamic state setting commands. The state-setting commands must be recorded after command buffer recording has begun, or after the last command binding a pipeline object with that state specified as static, whichever was the latter.

• If the state is not included (corresponding pointer in VkGraphicsPipelineCreateInfo was NULL or was ignored) in the new pipeline object, then that command buffer state is not disturbed.

管线对象被绑定时,后续应用到各个状态参数的情况如下:

• 假如在新的管线对象里状态没有被指定为动态的,则命令缓冲区状态会被新的管线状态对象覆盖。在使用此管线进行绘制或者发送调用之前,在当前管线被绑定之后,不能有任何对于相应的动态状态设置命令的调用。

• 假如在新的管线对象里状态被指定为动态的,那么命令缓冲区状态不受干扰。在使用此管线进行绘制或者发送调用之前,对每一个相应的动态状态设置命令必须至少有一个调用。命令缓冲区记录开始后必须记录状态设置命令,或者最后一个指定为静态状态的命令绑定到管线对象以后记录,以后者为准。

• 假设状态没有包括(VkGraphicsPipelineCreateInfo 中的相应的指针是NULL或者被忽略)在新的管线对象中,那么命令缓冲区状态不会被干扰。

Dynamic state that does not affect the result of operations can be left undefined.

不影响操作结果的动态状态可以不用定义。

Note:

For example, if blending is disabled by the pipeline object state, then the dynamic color blend constants do not need to be specified in the command buffer, even if this state is specified as dynamic in the pipeline object.

注意:

例如,假设混合操作被管线对象状态去掉,这时颜色混合常量不必在命令缓冲区中指定, 即使管线对象的状态指定为动态的。

http://www.lryc.cn/news/4231.html

相关文章:

  • CSP-《I‘m stuck!》-感悟
  • [实践篇]13.19 Qnx进程管理slm学习笔记(二)
  • (免费分享)基于 SpringBoot 的高校宿舍管理系统带论文
  • 运筹系列78:cbc使用介绍
  • RocketMQ底层源码解析——事务消息的实现
  • 学习802.11之MAC帧格式(一篇就够!)
  • 使用阿里云IoT Studio建立物模型可视化界面
  • HBase 复习 ---- chapter07
  • 跟我一起写Makefile--个人总结
  • 设计模式之为什么要学好设计模式
  • 大数据时代的小数据神器 - asqlcell
  • 【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案
  • 67. 二进制求和
  • 1555数列极差(队列 优先队列 )
  • 代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II
  • jvm类加载器
  • Rust学习入门--【7】Rust 数据类型
  • 阅读MySQL必知必会,查缺补漏
  • MySQL数据库10——多表连接查询
  • 华为OD机试 - 括号检查(Python)| 真题含思路
  • 安全渗透测试中的一款免费开源的超级关键词URL采集工具
  • 数据资产管理实践白皮书(6.0版)解读
  • c/c++开发,无可避免的函数指针使用案例
  • QT(12)-QThreadPool
  • 【Java|golang】1138. 字母板上的路径
  • Flink 1.14从简单到源码第三讲
  • 淘宝API接口系列,获取购买到的商品订单列表,卖出的商品订单列表,订单详情,订单物流,买家信息,收货地址列表,买家token
  • ucos-ii 的任务调度原理和实现
  • Solon2 开发之容器,七、切面与函数环绕拦截
  • 代码随想录第十天(28)