Vulkan Dispatching commands

Dispatching commands

Dispatching cmd used to dispatch workgroups into the boundedcompute pipeline。

Q: 啥是workgroup呢?

A work group is fundamentally a 3D block of work items,where each work item is processed by an invocation of a compute shader runningyour code,就是说 work group 是一个三维工作组,其中每一个维度都有一个或多个 invocation来处理我们的代码,这样看来,最大的并行操作为:x* y * z, 目前我们的代码是1Dwork group.  Compute shader processor将每一个维度的workgroup分成多个chunks, 这些chunks切成多个时间片并行处理。

Workgroup规定了SPIR-V模块的操作范围,即SPIR-V模块的操作限定在一个workGroup之内。

Dispatch的两种方式

1. 调用vkCmdDispatch函数来记录一个dispatch,需要注意的是,这个命令只能在renderpass instance之外调用。

vkCmdDispatch入参

1.      VkCommandBuffer:

2.      X : number of workgroups to dispatch in the Xdimension.

3.      Y: number of workgroups to dispatch in the ydimension

4.      Z: number of workgroups to dispatch in the zdimension.

5.      If set z parameter to 1, it indicatetwo-dimensional work groups can be dispatched, if set y and z parameters to 1,one-dimensional work group can be dispatched, 代码当中是one dimensional work group.

6.      X, y, z 参数的大小由绑定的compute pipeline决定。

Q: Dispatch & workgroup 与Compute Pipeline/shader的关系?

A:  compute shader 和图像处理有关的组织架构和细节描述为:workgroupsand Dispatch.

2. 也可以调用vkCmdDispatchIndirect函数记录一个indirectdispatch.

Q: 啥是indirectdispatch呢?

以上两个dispatch命令功能相似,只不过indirect dispatch的入参是read by the device from a buffer, 就是说划分的workgroup是从其他变量间接获取的:

1.      Vkcommandbuffer

2.      Vkbuffer, 包含dispatch 参数的buffer.

3.      Vkdevicesize

所以:

理解dispatchcommand命令前提是需要理解computeshader是怎么工作的….

Compute Shader: 可以为图形处理器提供强大的并行计算能力, 问题是:computeshader 的硬件结构是如何?例如:

1.      在进入并行运算之前有没有对应的dispatch processor,即Dispatchprocessor是否是computeshader的一部分?

2.      因为都涉及到并行运算,所以Compute shader与市面上常说的流处理器有什么关系吗?

3.      因为 computeshader与其他graphicshader独立分开的,所以所有涉及到并行运算的处理都可以交由computeshader来办理?还有由APP来决定是否做commanddispatch? 还是由硬件本身决定?

是否理解为如果需要资源在CPU与GPU之间传输时,需要使用computeshader进行数据的并行处理,加快操作。。。这样对吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值