Merge pull request #1968 from dneto0/reclaim-web-codespace
SPIR-V postprocessing: WEB case only needs CFG mods
This commit is contained in:
commit
f34cdc70ca
@ -687,10 +687,17 @@ public:
|
|||||||
// based on the resulting SPIR-V.
|
// based on the resulting SPIR-V.
|
||||||
void postProcess();
|
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
|
// Hook to visit each instruction in a block in a function
|
||||||
void postProcess(Instruction&);
|
void postProcess(Instruction&);
|
||||||
// Hook to visit each non-32-bit sized float/int operation in a block.
|
// Hook to visit each non-32-bit sized float/int operation in a block.
|
||||||
void postProcessType(const Instruction&, spv::Id typeId);
|
void postProcessType(const Instruction&, spv::Id typeId);
|
||||||
|
#endif
|
||||||
|
|
||||||
void dump(std::vector<unsigned int>&) const;
|
void dump(std::vector<unsigned int>&) const;
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ namespace spv {
|
|||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Hook to visit each operand type and result type of an instruction.
|
// Hook to visit each operand type and result type of an instruction.
|
||||||
// Will be called multiple times for one instruction, once for each typed
|
// Will be called multiple times for one instruction, once for each typed
|
||||||
// operand and the result.
|
// operand and the result.
|
||||||
@ -319,9 +320,10 @@ void Builder::postProcess(Instruction& inst)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// comment in header
|
// comment in header
|
||||||
void Builder::postProcess()
|
void Builder::postProcessCFG()
|
||||||
{
|
{
|
||||||
// reachableBlocks is the set of blockss reached via control flow, or which are
|
// reachableBlocks is the set of blockss reached via control flow, or which are
|
||||||
// unreachable continue targert or unreachable merge.
|
// unreachable continue targert or unreachable merge.
|
||||||
@ -377,7 +379,11 @@ void Builder::postProcess()
|
|||||||
return unreachableDefinitions.count(decoration_id) != 0;
|
return unreachableDefinitions.count(decoration_id) != 0;
|
||||||
}),
|
}),
|
||||||
decorations.end());
|
decorations.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
|
// comment in header
|
||||||
|
void Builder::postProcessFeatures() {
|
||||||
// Add per-instruction capabilities, extensions, etc.,
|
// Add per-instruction capabilities, extensions, etc.,
|
||||||
|
|
||||||
// Look for any 8/16 bit type in physical storage buffer class, and set the
|
// Look for any 8/16 bit type in physical storage buffer class, and set the
|
||||||
@ -431,5 +437,14 @@ void Builder::postProcess()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// comment in header
|
||||||
|
void Builder::postProcess() {
|
||||||
|
postProcessCFG();
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
|
postProcessFeatures();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
}; // end spv namespace
|
}; // end spv namespace
|
||||||
|
Loading…
x
Reference in New Issue
Block a user