Name Description Size Coverage
qsb_disasm.py Readable renderings of the binary shader payloads, by way of external tools. Two modes. DISASM disassembles: SPIR-V through spirv-dis, DXBC through fxc /dumpbin, DXIL through dxc -dumpbin and metallib through metal-objdump - the same tools qsb itself invokes to produce the bytecode in the first place, only pointed the other way. CROSS goes further and only for SPIR-V, decompiling the module back to Vulkan GLSL with spirv-cross. The metallib spec is the one nobody has been able to try: see the comment on it. Nothing here is required: when a tool is missing the caller gets a ToolOutput with 'error' set and can go on showing the hex dump. Stdlib only, like qsb_reader: this module knows nothing about the UI. 11745 -
qsb_gerrit.py Finding the .qsb files a Gerrit change adds or changes. Gerrit's public REST API is enough, and it is read straight over HTTP: the change is never fetched into the local repository, so nothing is cherry-picked, applied, or left behind afterwards. That also means the change need not belong to the repository qsb_inspect was launched from - or to any repository, since the packs arrive as bytes and the reader wants nothing else. No authentication, so this reaches public changes only; a private or WIP one answers 404 like a change that does not exist. Only the latest patch set is looked at. Standard library only, like qsb_git, whose ChangedFile this reuses so that the change view can show either kind of change without caring which it has. 7187 -
qsb_git.py Finding the .qsb files a git commit adds or changes. Nothing here needs the commit to be checked out: the packs are read from the commit's own blobs, which is the only way to be sure of showing the after-patch content. The file in the working tree matches only when no later commit touched it, so it cannot be relied on. Standard library only; git is invoked as a subprocess. 4838 -
qsb_inspect.py Interactive inspector for Qt shader pack (.qsb) files. Shows everything 'qsb -d' dumps, but navigable: an overview, a tree of the reflection info, and a per-shader view with the payload rendered as highlighted source, as a hex dump, or - for the bytecode ones - through an external tool, as disassembly or as the Vulkan GLSL a SPIR-V module decompiles to. Parsing is done by qsb_reader (pure Python, no Qt). python qsb_inspect.py path/to/shader.qsb 40165 -
qsb_reader.py Pure-Python reader for Qt shader pack (.qsb) files. Standard library only - no Qt, no third-party modules. Mirrors QShader::fromSerialized() (qtbase/src/gui/rhi/qshader.cpp) and QShaderDescriptionPrivate::loadFromStream() (qshaderdescription.cpp). A .qsb file is qCompress()'d data: a 4-byte big-endian uncompressed size followed by a zlib stream. Inside is a QDataStream at version Qt_5_10, big endian, using only int32/uint32/uint8/QByteArray/QString. The format is Qt private API. QSB_VERSION is read from the stream, so files written by a newer Qt than this reader knows about are rejected with a clear message rather than silently misparsed. 45842 -