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

WebGPU-初识各名词概念Adapters与Device

文章目录

      • Adapters
      • Device

图形处理单元,简称GPU,一直以来都是个人计算中实现丰富渲染和计算应用的关键部件。
WebGPU是一个将GPU硬件功能暴露给Web的API
该API从零开始设计,以便有效地映射到(2014年后的)原生GPU API。
WebGPU与WebGL无关,也没有显式地针对OpenGL ES。

WebGPU将物理GPU硬件视为GPUAdapters。

通过GPUDevice提供与适配器的连接

管理资源和设备的GPUQueues,执行命令。

GPUDevice可能具有自己的内存,并可高速访问处理单元。

GPUBuffer和GPUTexture是由GPU内存支持的物理资源。

GPUCommandBuffer和GPURenderBundle是用户记录命令的容器。

GPUShaderModule包含着色器代码。其他资源,如GPUSampler或GPUBindGroup,配置了GPU使用物理资源的方式。

GPU通过将数据通过管线来执行GPUCommandBuffer中编码的命令,这是固定功能和可编程阶段的混合。
可编程阶段执行着色器,这些着色器是专为在GPU硬件上运行而设计的特殊程序。
pipeline的大部分状态由GPURenderPipeline或GPUComputePipeline对象定义。
这些管线对象中未包含的状态在编码时通过命令设置,例如beginRenderPass()或setBlendConstant()。

Adapters

Adapters适配器标识系统上 WebGPU 的实现: 既是浏览器底层平台上计算/渲染功能的实例,又是浏览器在该功能之上实现 WebGPU 的实例。

适配器 不唯一表示底层实现: 多次调用 requestAdapter() 每次都会返回不同的 adapter 对象。
每个 适配器 对象只能用于创建一个 device: 在 requestDevice() 成功后,适配器变为 无效。 此外,适配器 对象可以随时 过期。

注: 这确保应用程序在创建设备时使用最新的系统状态来选择适配器。 它还通过使它们看起来相似来鼓励对更多场景的鲁棒性:首次初始化、由于拔下适配器而重新初始化、由于测试 GPUDevice.destroy() 调用而重新初始化等。

如果 适配器 具有重要的性能警告以换取更广泛的兼容性、更可预测的行为或改进的隐私的某种组合,则它可以被视为 后备适配器。 fallback adapter 不需要在每个系统上都可用。

adapter 具有以下内部插槽:

  • [[features]],类型为 ordered set,只读
    features 可用于在此适配器上创建设备。

  • [[limits]],类型为 supported limits,只读
    可用于在此适配器上创建设备的 best 限制。每个适配器限制必须与 supported limits 中的默认值相同或 better。

  • [[fallback]],布尔类型
    如果设置为“true”,则表示该适配器是 fallback adapter。

  • [[unmaskedIdentifiers]],类型为 ordered set
    用户代理已选择为此适配器报告的 GPUAdapterInfo 字段的名称列表。 最初填充了用户代理在未经用户同意的情况下选择报告的任何 GPUAdapterInfo 字段的名称。

Adapters 通过 GPUAdapter 暴露出来。

Device

device 是 适配器 的逻辑实例,通过它创建 内部对象。 它可以在多个 代理 之间共享(e.g. dedicated workers)。

设备 是从它创建的所有 内部对象 的独占所有者:
当设备变为无效(是 lost 或 destroyed)时,它和在其上创建的所有对象(直接,例如 createTexture(),或间接地,例如 createView()) 隐式变为 unusable。

device 具有以下内部插槽:

  • [[adapter]],类型为 适配器,只读
    创建此设备的 适配器。

  • [[features]],类型为 ordered set,只读
    可在此设备上使用的 特性。 不能使用附加功能,即使底层 适配器 可以支持它们。

  • [[limits]],类型为 支持的限制,只读
    可在此设备上使用的限制。 不能使用 更好 限制,即使基础 适配器 可以支持它们。

<分区算法> 当一个新设备 device 从 adapter adapter 创建 使用 GPUDeviceDescriptor 描述符:
将 device.[[adapter]] 设置为 adapter。

将 device.[[features]] 设置为 set 中的值 描述符.requiredFeatures。

让 device.[[limits]] 成为具有默认值的 supported limits 对象。 对于 descriptor.requiredLimits 中的每个 (key, value) 对,设置 key对应的成员 在 device.[[limits]] 到 value 的 better 值 或 supported limits 中的默认值。

每当用户代理需要撤销对设备的访问权限时,它都会在设备的 device timeline 上调用 lose the device(device, “unknown”),可能会提前 当前在该时间线上排队的其他操作。

如果操作失败并产生副作用,这些副作用会明显改变设备上对象的状态或可能破坏内部实现/驱动程序状态,则设备应该丢失以防止这些更改被观察到。
Devices 通过 GPUDevice 暴露出来

— from WebGPU文档

相关文章:

  • Pytest测试框架搭建的关键6个知识点(建议收藏)
  • CronJob运行自动化任务
  • 驱动day2 字符设备驱动 LED亮灯
  • 2022年亚太杯APMCM数学建模大赛A题结晶器熔剂熔融结晶过程序列图像特征提取及建模分析求解全过程文档及程序
  • Netty入门指南之基础介绍
  • Next.js和sharp实现占位图片生成工具
  • Flutter 填坑录 (不定时更新)
  • C语言中的3种注释方法
  • 华为云文件上传(单个上传和分段上传)
  • Stm32_标准库_期末设计_温度测量光照测量手机与芯片通信实现信息的更新
  • 在ts中val is Map是什么意思呢?
  • python实现TCPserver
  • 算法进修Day-33
  • Kotlin协程简介
  • pandas nlargest()的详细用法
  • ubuntu 20.04 passwd 指令不能使用
  • 小程序搭建OA项目首页布局界面
  • Redis 主从复制,哨兵,集群——(3)集群篇
  • 【大数据开发技术】实验06-SequenceFile、元数据操作与MapReduce单词计数
  • logback.xml配置详解
  • 学有质量、查有力度、改有成效,广大党员干部落实中央八项规定精神
  • 打造沪派水乡的“湿意”,上海正在保护营造一批湿地空间
  • 中国银行副行长刘进任该行党委副书记
  • “五一”假期,又有多地将向社会开放政府机关食堂
  • 看展览|建造上海:1949年以来的建筑、城市与文化
  • 上海通报5起违反中央八项规定精神问题