1//
2// Copyright 2018 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6// RewriteStructSamplers: Extract structs from samplers.
7//
8// This traverser is designed to strip out samplers from structs. It moves them into
9// separate uniform sampler declarations. This allows the struct to be stored in the
10// default uniform block. It also requires that we rewrite any functions that take the
11// struct as an argument. The struct is split into two arguments.
12//
13// For example:
14// struct S { sampler2D samp; int i; };
15// uniform S uni;
16// Is rewritten as:
17// struct S { int i; };
18// uniform S uni;
19// uniform sampler2D uni_i;
20
21#ifndef COMPILER_TRANSLATOR_TREEOPS_REWRITESTRUCTSAMPLERS_H_
22#define COMPILER_TRANSLATOR_TREEOPS_REWRITESTRUCTSAMPLERS_H_
23
24namespace sh
25{
26class TIntermBlock;
27class TSymbolTable;
28int RewriteStructSamplers(TIntermBlock *root, TSymbolTable *symbolTable);
29} // namespace sh
30
31#endif // COMPILER_TRANSLATOR_TREEOPS_REWRITESTRUCTSAMPLERS_H_
32