Line data Source code
1 : //
2 : // Copyright (c) 2002-2013 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 :
7 : #ifndef COMPILER_TRANSLATOR_TRANSLATORHLSL_H_
8 : #define COMPILER_TRANSLATOR_TRANSLATORHLSL_H_
9 :
10 : #include "compiler/translator/Compiler.h"
11 :
12 : namespace sh
13 : {
14 :
15 0 : class TranslatorHLSL : public TCompiler
16 : {
17 : public:
18 : TranslatorHLSL(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output);
19 0 : TranslatorHLSL *getAsTranslatorHLSL() override { return this; }
20 :
21 : bool hasInterfaceBlock(const std::string &interfaceBlockName) const;
22 : unsigned int getInterfaceBlockRegister(const std::string &interfaceBlockName) const;
23 :
24 : const std::map<std::string, unsigned int> *getUniformRegisterMap() const;
25 :
26 : protected:
27 : void translate(TIntermNode *root, ShCompileOptions compileOptions) override;
28 : bool shouldFlattenPragmaStdglInvariantAll() override;
29 :
30 : // collectVariables needs to be run always so registers can be assigned.
31 0 : bool shouldCollectVariables(ShCompileOptions compileOptions) override { return true; }
32 :
33 : std::map<std::string, unsigned int> mInterfaceBlockRegisterMap;
34 : std::map<std::string, unsigned int> mUniformRegisterMap;
35 : };
36 :
37 : } // namespace sh
38 :
39 : #endif // COMPILER_TRANSLATOR_TRANSLATORHLSL_H_
|