def postProcessCode(self, code): self.rewrites = {} self.remap = {} self.fields = {} self.header = [] self.processParameters(code) for name, group in self.groups.iteritems(): self.processGroup(code, name, group) rewrite.rewrite(self.compiler, code, self.rewrites) code.ast = ast.Suite([ast.InputBlock(self.header), code.ast]) if self.ssaBroken: ssatransform.evaluateCode(self.compiler, code) simplify.evaluateCode(self.compiler, self.prgm, code)
def process(self): returns = FindReturns().process(self.code) assert len(returns) == 1, "Temporary Limitation: only one return per shader" rewrites = {} for ret in returns: desc, rewrites[ret] = self.processReturn(ret) rewrite.rewrite(self.compiler, self.code, rewrites) # HACK while loadelimination.evaluateCode(self.compiler, self.prgm, self.code, simplify=False): pass #simplify.evaluateCode(self.compiler, self.prgm, self.code) #storeelimination.evaluate(self.compiler, self.prgm, simplify=False) simplify.evaluateCode(self.compiler, self.prgm, self.code) return desc