44 lines
1012 B
Markdown
44 lines
1012 B
Markdown
# SPIRV-Tools
|
|
|
|
Wasm (WebAssembly) build of https://github.com/KhronosGroup/SPIRV-Tools
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const spirvTools = require("spirv-tools");
|
|
|
|
const test = async () => {
|
|
// Load the library
|
|
const spv = await spirvTools();
|
|
|
|
// assemble
|
|
const source = `
|
|
OpCapability Linkage
|
|
OpCapability Shader
|
|
OpMemoryModel Logical GLSL450
|
|
OpSource GLSL 450
|
|
OpDecorate %spec SpecId 1
|
|
%int = OpTypeInt 32 1
|
|
%spec = OpSpecConstant %int 0
|
|
%const = OpConstant %int 42`;
|
|
const asResult = spv.as(
|
|
source,
|
|
spv.SPV_ENV_UNIVERSAL_1_3,
|
|
spv.SPV_TEXT_TO_BINARY_OPTION_NONE
|
|
);
|
|
console.log(`as returned ${asResult.byteLength} bytes`);
|
|
|
|
// re-disassemble
|
|
const disResult = spv.dis(
|
|
asResult,
|
|
spv.SPV_ENV_UNIVERSAL_1_3,
|
|
spv.SPV_BINARY_TO_TEXT_OPTION_INDENT |
|
|
spv.SPV_BINARY_TO_TEXT_OPTION_FRIENDLY_NAMES |
|
|
spv.SPV_BINARY_TO_TEXT_OPTION_COLOR
|
|
);
|
|
console.log("dis:\n", disResult);
|
|
};
|
|
|
|
test();
|
|
```
|