GPUCompilationInfo

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

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

GPUCompilationInfoWebGPU API 的一个接口,它表示由 GPU 着色器模块编译器生成的 GPUCompilationMessage 对象数组,以帮助诊断着色器代码的问题。

可以通过 GPUShaderModule.getCompilationInfo() 访问 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
# gpucompilationinfo

浏览器兼容性

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

另请参阅