Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/compiler/translator/ExtensionGLSL.h
1693 views
1
//
2
// Copyright 2015 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
// ExtensionGLSL.h: Defines the TExtensionGLSL class that tracks GLSL extension requirements of
7
// shaders.
8
9
#ifndef COMPILER_TRANSLATOR_EXTENSIONGLSL_H_
10
#define COMPILER_TRANSLATOR_EXTENSIONGLSL_H_
11
12
#include <set>
13
#include <string>
14
15
#include "compiler/translator/tree_util/IntermTraverse.h"
16
17
namespace sh
18
{
19
20
// Traverses the intermediate tree to determine which GLSL extensions are required
21
// to support the shader.
22
class TExtensionGLSL : public TIntermTraverser
23
{
24
public:
25
TExtensionGLSL(ShShaderOutput output);
26
27
const std::set<std::string> &getEnabledExtensions() const;
28
const std::set<std::string> &getRequiredExtensions() const;
29
30
bool visitUnary(Visit visit, TIntermUnary *node) override;
31
bool visitAggregate(Visit visit, TIntermAggregate *node) override;
32
33
private:
34
void checkOperator(TIntermOperator *node);
35
36
int mTargetVersion;
37
38
std::set<std::string> mEnabledExtensions;
39
std::set<std::string> mRequiredExtensions;
40
};
41
42
} // namespace sh
43
44
#endif // COMPILER_TRANSLATOR_EXTENSIONGLSL_H_
45
46