New Side Project: Pyramid ShaderAnalyzer

UPDATE: Pyramid is now on github.
Updates will be posted there directly from now on.

UPDATE: Pyramid now has its own DX shader disassembler for GCN. Read this for more.

UPDATE: Pyramid has been updated with the latest versions of the AMD driver and CodeXL.

UPDATE: Pyramid now includes the GL reference compiler and GLSLAnalyzer.  My next goal is to start trawling open source projects for disassemblers.

The views expressed in this post are my own personal opinions and are not shared, sanctioned, or endorsed by anybody in particular (especially my employer).   Pyramid ShaderAnalyzer is a personal venture, of which my employer has neither knowledge nor involvement.

GPUShaderAnalyzer has always been one of my favorite graphics programming tools.  For a long time, I did a large fraction of my shader development work entirely in this handy little tool.

As a public service, I have written a GUI around CodeXL Analyzer and the PowerVR shader compilers.

It looks like this:

pyramid

You can get it here.  It includes:

  1. Tiny C# app (binary + source)
  2. D3DCompiler
  3. CodeXL, and an AMD DX driver (so it will run on non-AMD systems).
  4. Managed wrapper around the GL reference compiler and GLSLOptimizer
  5. PowerVR SDK compilers

Some of the above are produced by other people, but are freely available to the general public.  All I’m doing is gathering all the pieces together, tossing a cheap UI on top and wrangling command lines.

AMD is probably working on a GUI as we speak, and I don’t intend to compete with it.  It will probably be a better product than this thing.  I’m hoping that Pyramid will fill a different niche.  My eventual goal is to glue together every publicly available tool that can be made to fit.  For example, when I get around to it, I’d like to plug in GLSLOptimizer and GLslang , (or, better yet, inspire somebody else to do it for me).  What I really want, though, is to be able to add more IHVs to the dropdown list.

Intel! Nvidia! Arm! Qualcomm! You want developers scrutinizing your microcode.  You know you do 🙂 I have spent a lot of time scrutinizing the output of your competitors’ compiler.  I would love to be able to do the same for you.   I am willing to work with you to get your ISAs into this tool.  I’ve tried to design it with all of you in mind.  All I need is some supported path for turning DX bytecode into ASM text.  I am willing to do considerable work to make this happen, as long as I can have some guarantee that said work will not be undone by the next driver release.