WebGPU 编程模型之时间轴的概念

一个前端有用户代理,后端有GPU的计算机系统,其组件并行地在不同的时间线上工作:  

  1. Content timeline      内容时间线
  2. Device   timeline      设备时间线
  3. Queue   timeline      队列时间线

内容时间线 :与 web 页面脚本的执行有关;

设备时间线 :与用户代理发出的GPU设备操作相关联。它包括适配器、设备、GPU资源和状态对象的创建,从控制GPU的用户代理部分的角度来看,这些操作通常是同步的,但可以存在于单独的操作系统进程中。

队列时间线: 与GPU计算单元上的操作执行相关联。它包括在GPU上运行的实际绘制、复制和计算作业。

例如:

GPUComputePassEncoder.dispatchWorkgroups():

  1. 用户通过调用GPUComputePassEncoder的方法来编码dispatchWorkgroups命令,该方法发生在Content时间轴上。

  2. 用户调用GPUQueue.submit(),将GPUCommandBuffer交给用户代理,用户代理通过调用操作系统驱动程序来进行低级提交操作,从而在设备时间轴上处理它。

  3. 提交由GPU调用调度器分派到实际的计算单元上执行,这发生在Queue时间轴上。

GPUDevice.createBuffer():

  1. 用户填写一个GPUBufferDescriptor并用它创建一个GPUBuffer,这发生在Content时间轴上。

  2. 用户代理在设备时间轴上创建一个低级缓冲区。

在此规范中,当结果值依赖于发生在除Content时间轴以外的任何时间轴上的工作时,将使用异步操作,它们在JavaScript中由callbacks和promises表示。

GPUBuffer.mapAsync():

  1. 用户请求在Content时间轴上映射一个GPUBuffer,并返回一个promise。

  2. 用户代理检查缓冲区当前是否被GPU使用,并提醒自己在使用结束时进行检查

  3. 在队列时间轴上操作的GPU使用缓冲区完成后,用户代理将其映射到内存并解析promise。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值