Skip to content

Commit

Permalink
SPIR-V postprocessing: WEB case only needs CFG mods
Browse files Browse the repository at this point in the history
The SPIR-V post-processing to discover capabilities and
extensions does not apply to WebGPU compilation.  So don't include
that code.

This reclaims some of the code space added by #1943
  • Loading branch information
dneto0 committed Nov 7, 2019
1 parent e471df3 commit e43e8ba
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
7 changes: 7 additions & 0 deletions SPIRV/SpvBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -687,10 +687,17 @@ class Builder {
// based on the resulting SPIR-V.
void postProcess();

// Prune unreachable blocks in the CFG and remove unneeded decorations.
void postProcessCFG();

#ifndef GLSLANG_WEB
// Add capabilities, extensions based on instructions in the module.
void postProcessFeatures();
// Hook to visit each instruction in a block in a function
void postProcess(Instruction&);
// Hook to visit each non-32-bit sized float/int operation in a block.
void postProcessType(const Instruction&, spv::Id typeId);
#endif

void dump(std::vector<unsigned int>&) const;

Expand Down
17 changes: 16 additions & 1 deletion SPIRV/SpvPostProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ namespace spv {

namespace spv {

#ifndef GLSLANG_WEB
// Hook to visit each operand type and result type of an instruction.
// Will be called multiple times for one instruction, once for each typed
// operand and the result.
Expand Down Expand Up @@ -319,9 +320,10 @@ void Builder::postProcess(Instruction& inst)
}
}
}
#endif

// comment in header
void Builder::postProcess()
void Builder::postProcessCFG()
{
// reachableBlocks is the set of blockss reached via control flow, or which are
// unreachable continue targert or unreachable merge.
Expand Down Expand Up @@ -377,7 +379,11 @@ void Builder::postProcess()
return unreachableDefinitions.count(decoration_id) != 0;
}),
decorations.end());
}

#ifndef GLSLANG_WEB
// comment in header
void Builder::postProcessFeatures() {
// Add per-instruction capabilities, extensions, etc.,

// Look for any 8/16 bit type in physical storage buffer class, and set the
Expand Down Expand Up @@ -431,5 +437,14 @@ void Builder::postProcess()
}
}
}
#endif

// comment in header
void Builder::postProcess() {
postProcessCFG();
#ifndef GLSLANG_WEB
postProcessFeatures();
#endif
}

}; // end spv namespace

0 comments on commit e43e8ba

Please sign in to comment.