This repository contains a shim of d3d12.dll which makes GPU profilers usable to inspect WebGPU workloads running on Chrome for Windows. If you would like to know more about why this thing exists and how it solves the problem at hand, please read my blog post Shimming d3d12.dll for fun and profit
⚠ Before anything else, please remember that this is a hacky solution and that you should not browse the open web with that DLL attached. It should only be used for a GPU profiling session and removed afterwards. It also conflicts with PIX, so you should remove it before attempting to take a capture. I would recommend adding that DLL to a specific flavor of Chrome ( Dev, Canary, etc. ) that you would only use for GPU profiling.
A comprehensive explanation on how to use this dll is provided in the following article on my blog : GPU profiling for WebGPU workloads on Windows with Chrome
- Build or download
d3d12.dll
from this repository.- Place the DLL into the
\Google\Chrome\Application
folder.
- Place the DLL into the
- On AMD, download
WinPixEventRuntime.dll
from the release section of that repository.- Place it into the
\Google\Chrome\Application\<Version Number>
folder.
- Place it into the
- When launching Chrome, use the following command line arguments:
--no-sandbox --disable-gpu-sandbox --disable-gpu-watchdog --disable-direct-composition --enable-dawn-features=emit_hlsl_debug_symbols,disable_symbol_renaming
- Use your favorite GPU profiler as usual.
git clone https://github.com/frguthmann/d3d12_webgpu_shim.git
cd d3d12_webgpu_shim
cmake ./
Then open the Visual Studio solution, build it and follow the How to use instructions.
I would like to thank Marco Castorina and Ray Dey without whom this hack probably wouldn't exist :).