Unverified Commit f34cdc70 by John Kessenich Committed by GitHub

Merge pull request #1968 from dneto0/reclaim-web-codespace

SPIR-V postprocessing: WEB case only needs CFG mods
parents 44f5c625 e43e8ba9
...@@ -687,10 +687,17 @@ public: ...@@ -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 { ...@@ -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) ...@@ -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() ...@@ -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() ...@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment