GPUShaderModule:getCompilationInfo() 方法

实验性:这是一个 实验性技术
在生产环境中使用之前,请仔细检查 浏览器兼容性表

安全上下文:此功能仅在 安全上下文(HTTPS)中可用,在某些或所有 支持的浏览器 中。

getCompilationInfo()GPUShaderModule 接口的方法,它返回一个 Promise,该 Promise 解析为一个 GPUCompilationInfo 对象,其中包含在 GPUShaderModule 编译期间生成的 messages。

语法

js
getCompilationInfo()

参数

无。

返回值

一个 Promise,它解析为一个 GPUCompilationInfo 对象。

GPUCompilationInfo 包含一个 messages 属性,该属性是一个 GPUCompilationMessage 对象数组,每个对象都包含单个编译消息的详细信息。

示例

在下面的示例中,我们故意在着色器代码的函数声明中省略了一个括号

js
const shaders = `
struct VertexOut {
  @builtin(position) position : vec4f,
  @location(0) color : vec4f
}

@vertex
fn vertex_main(@location(0) position: vec4f,
               @location(1) color: vec4f -> VertexOut
{
  var output : VertexOut;
  output.position = position;
  output.color = color;
  return output;
}

@fragment
fn fragment_main(fragData: VertexOut) -> @location(0) vec4f
{
  return fragData.color;
}
`;

当我们编译着色器模块时,我们使用 getCompilationInfo() 获取有关结果错误的一些信息

js
async function init() {
  // ...

  const shaderModule = device.createShaderModule({
    code: shaders,
  });

  const shaderInfo = await shaderModule.getCompilationInfo();
  const firstMessage = shaderInfo.messages[0];

  console.log(firstMessage.lineNum); // 9
  console.log(firstMessage.message); // "expected ')' for function declaration"
  console.log(firstMessage.type); // "error"

  // ...
}

规范

规范
WebGPU
# dom-gpushadermodule-getcompilationinfo

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅