| // |
| // Copyright 2020 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. |
| // |
| // RewriteSampleMaskVariable.cpp: Find any references to gl_SampleMask and gl_SampleMaskIn, and |
| // rewrite it with ANGLESampleMask or ANGLESampleMaskIn. |
| // |
| |
| #ifndef COMPILER_TRANSLATOR_TREEUTIL_REWRITESAMPLEMASKVARIABLE_H_ |
| #define COMPILER_TRANSLATOR_TREEUTIL_REWRITESAMPLEMASKVARIABLE_H_ |
| |
| #include "common/angleutils.h" |
| |
| namespace sh |
| { |
| |
| class TCompiler; |
| class TIntermBlock; |
| class TSymbolTable; |
| class TIntermTyped; |
| |
| // Rewrite every gl_SampleMask or gl_SampleMaskIn to "ANGLESampleMask" or "ANGLESampleMaskIn", then |
| // at the end of shader re-assign the values of this global variable to gl_SampleMask and |
| // gl_SampleMaskIn. This to solve the problem which the non constant index is used for the unsized |
| // array problem. |
| [[nodiscard]] bool RewriteSampleMask(TCompiler *compiler, |
| TIntermBlock *root, |
| TSymbolTable *symbolTable, |
| const TIntermTyped *numSamplesUniform); |
| |
| [[nodiscard]] bool RewriteSampleMaskIn(TCompiler *compiler, |
| TIntermBlock *root, |
| TSymbolTable *symbolTable); |
| |
| } // namespace sh |
| |
| #endif // COMPILER_TRANSLATOR_TREEUTIL_REWRITESAMPLEMASKVARIABLE_H_ |