WebGPU Dev Extension

#5 / 1 rate

WebGPU Dev Extension

81 users

2024-01-18

gman

Extension Information

5 star
100%
4 star
0%
3 star
0%
2 star
0%
1 star
0%

Supported Languages

Permissions

Description

Provide some features helpful for WebGPU Development

Features:

* Print Debug Errors at their source.
* Throw on encoder errors
* Dump Shaders of WebGPU programs
* Show entire shader on shader error
* Log which type of GPU is being used on requestAdapter
* Force low-power or high-performance GPU
* Show how many devices are currently active on the page
* Add Descriptors to Objects
* Show bit names for GPUTexture.usage and GPUBuffer.usage in DevTools
* Block Features
* Disable WebGPU (to test your fallback)
* Remove WebGPU (to test your fallback)
* Add API Breakpoints

Details

* Print Debug Errors at their Source

Errors in WebGPU are usually handled asynchronously which means the actual command that generated the error is often unknown. This extension adds early error checking so that hopefully you'll get an error stack at the place the error was generated making it easier to fix bugs

* Throw on Encoder Errors

Normally command buffer encoders, pass encoders, render bundle encoders only
generate an error when you finish the command encoder. Enable the WebGPU-Debug-Helper
to throw on these types of errors.

* Dump Shaders of WebGPU programs

See the shader of the current page.

* Log which type of GPU is being used on requestAdapter

Prints the adapterInfo on each call to requestAdapter. This lets you see which GPU was used on a dual GPU machine as well as if compatibility mode was requested.

* Force low-power or high-performance GPU

Force low-power or high-performance GPU selection for a page.

* Show how many devices are currently active on the page

Prints a running total of the number of devices currently active on a page.

* Add Descriptors to Objects

Adds the descriptors used to create many objects to those objects. For example: When you call `createView` on a texture you pass in a descriptor. That descriptor is
not reflected in the view itself which can make it hard to see what's going on.
This adds that data onto the view so you can inspect it in the debugger or in the error messages printed by "Show Errors". Similarly, bindGroups, bindGroupLayouts,
pipelines, pipelineLayouts, pass encoders, query sets, samplers, shader modules,
external textures, ...

* Block Features

Lets you block webgpu features. For example, type in `shader-f16` and the shader-f16 feature will be blocked. You can use this to test that your code, that is supposed to run without the feature, actually runs without the feature.

* Disable or Remove the WebGPU API

Lets you test that you gracefully handle both the API returning null and the API not existing.

* API Breakpoints

Adds a `debugger` statement to the specified WebGPU API functions. Want to know where the page is calling importExternalTexture? Add a breakpoint.

Source at https://github.com/greggman/webgpu-dev-extension