xref: /aosp_15_r20/external/angle/src/compiler/translator/tree_util/RewriteSampleMaskVariable.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 //
2 // Copyright 2020 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 // RewriteSampleMaskVariable.cpp: Find any references to gl_SampleMask and gl_SampleMaskIn, and
7 // rewrite it with ANGLESampleMask or ANGLESampleMaskIn.
8 //
9 
10 #ifndef COMPILER_TRANSLATOR_TREEUTIL_REWRITESAMPLEMASKVARIABLE_H_
11 #define COMPILER_TRANSLATOR_TREEUTIL_REWRITESAMPLEMASKVARIABLE_H_
12 
13 #include "common/angleutils.h"
14 
15 namespace sh
16 {
17 
18 class TCompiler;
19 class TIntermBlock;
20 class TSymbolTable;
21 class TIntermTyped;
22 
23 // Rewrite every gl_SampleMask or gl_SampleMaskIn to "ANGLESampleMask" or "ANGLESampleMaskIn", then
24 // at the end of shader re-assign the values of this global variable to gl_SampleMask and
25 // gl_SampleMaskIn. This to solve the problem which the non constant index is used for the unsized
26 // array problem.
27 [[nodiscard]] bool RewriteSampleMask(TCompiler *compiler,
28                                      TIntermBlock *root,
29                                      TSymbolTable *symbolTable,
30                                      const TIntermTyped *numSamplesUniform);
31 
32 [[nodiscard]] bool RewriteSampleMaskIn(TCompiler *compiler,
33                                        TIntermBlock *root,
34                                        TSymbolTable *symbolTable);
35 
36 }  // namespace sh
37 
38 #endif  // COMPILER_TRANSLATOR_TREEUTIL_REWRITESAMPLEMASKVARIABLE_H_
39