| // | |
| // Copyright 2018 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // RewriteStructSamplers: Extract structs from samplers. | |
| // | |
| // This traverser is designed to strip out samplers from structs. It moves them into | |
| // separate uniform sampler declarations. This allows the struct to be stored in the | |
| // default uniform block. It also requires that we rewrite any functions that take the | |
| // struct as an argument. The struct is split into two arguments. | |
| // | |
| // For example: | |
| // struct S { sampler2D samp; int i; }; | |
| // uniform S uni; | |
| // Is rewritten as: | |
| // struct S { int i; }; | |
| // uniform S uni; | |
| // uniform sampler2D uni_i; | |
| #ifndef COMPILER_TRANSLATOR_TREEOPS_REWRITESTRUCTSAMPLERS_H_ | |
| #define COMPILER_TRANSLATOR_TREEOPS_REWRITESTRUCTSAMPLERS_H_ | |
| #include "common/angleutils.h" | |
| namespace sh | |
| { | |
| class TCompiler; | |
| class TIntermBlock; | |
| class TSymbolTable; | |
| ANGLE_NO_DISCARD bool RewriteStructSamplers(TCompiler *compiler, | |
| TIntermBlock *root, | |
| TSymbolTable *symbolTable, | |
| int *removedUniformsCountOut); | |
| ANGLE_NO_DISCARD bool RewriteStructSamplersOld(TCompiler *compier, | |
| TIntermBlock *root, | |
| TSymbolTable *symbolTable, | |
| int *removedUniformsCountOut); | |
| } // namespace sh | |
| #endif // COMPILER_TRANSLATOR_TREEOPS_REWRITESTRUCTSAMPLERS_H_ |