xref: /aosp_15_r20/external/angle/src/tests/test_utils/ShaderCompileTreeTest.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1  //
2  // Copyright 2016 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  // ShaderCompileTreeTest.h:
7  //   Test that shader validation results in the correct compile status.
8  //
9  
10  #ifndef TESTS_TEST_UTILS_SHADER_COMPILE_TREE_TEST_H_
11  #define TESTS_TEST_UTILS_SHADER_COMPILE_TREE_TEST_H_
12  
13  #include "GLSLANG/ShaderLang.h"
14  #include "angle_gl.h"
15  #include "compiler/translator/PoolAlloc.h"
16  #include "gtest/gtest.h"
17  
18  namespace sh
19  {
20  
21  class TIntermBlock;
22  class TIntermNode;
23  class TranslatorESSL;
24  
25  class ShaderCompileTreeTest : public testing::Test
26  {
27    public:
ShaderCompileTreeTest()28      ShaderCompileTreeTest() : mCompileOptions{} {}
29  
30    protected:
31      void SetUp() override;
32  
33      void TearDown() override;
34  
35      // Return true when compilation succeeds
36      bool compile(const std::string &shaderString);
37      void compileAssumeSuccess(const std::string &shaderString);
38  
39      bool hasWarning() const;
40  
41      const std::vector<sh::ShaderVariable> &getUniforms() const;
42      const std::vector<sh::ShaderVariable> &getAttributes() const;
43  
initResources(ShBuiltInResources * resources)44      virtual void initResources(ShBuiltInResources *resources) {}
45      virtual ::GLenum getShaderType() const     = 0;
46      virtual ShShaderSpec getShaderSpec() const = 0;
47  
48      std::string mInfoLog;
49      ShCompileOptions mCompileOptions;
50  
51      TIntermBlock *mASTRoot;
52  
53    private:
54      TranslatorESSL *mTranslator;
55  
56      angle::PoolAllocator mAllocator;
57  };
58  
59  // Returns true if the node is some kind of a zero node - either constructor or a constant union
60  // node.
61  bool IsZero(TIntermNode *node);
62  
63  }  // namespace sh
64  
65  #endif  // TESTS_TEST_UTILS_SHADER_COMPILE_TREE_TEST_H_
66