1 | // |
2 | // Copyright (c) 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 | #ifdef ANGLE_ENABLE_ESSL |
8 | # include "compiler/translator/TranslatorESSL.h" |
9 | #endif // ANGLE_ENABLE_ESSL |
10 | |
11 | #ifdef ANGLE_ENABLE_GLSL |
12 | # include "compiler/translator/TranslatorGLSL.h" |
13 | #endif // ANGLE_ENABLE_GLSL |
14 | |
15 | #ifdef ANGLE_ENABLE_HLSL |
16 | # include "compiler/translator/TranslatorHLSL.h" |
17 | #endif // ANGLE_ENABLE_HLSL |
18 | |
19 | #ifdef ANGLE_ENABLE_VULKAN |
20 | # include "compiler/translator/TranslatorVulkan.h" |
21 | #endif // ANGLE_ENABLE_VULKAN |
22 | |
23 | #include "compiler/translator/util.h" |
24 | |
25 | namespace sh |
26 | { |
27 | |
28 | // |
29 | // This function must be provided to create the actual |
30 | // compile object used by higher level code. It returns |
31 | // a subclass of TCompiler. |
32 | // |
33 | TCompiler *ConstructCompiler(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output) |
34 | { |
35 | #ifdef ANGLE_ENABLE_ESSL |
36 | if (IsOutputESSL(output)) |
37 | { |
38 | return new TranslatorESSL(type, spec); |
39 | } |
40 | #endif // ANGLE_ENABLE_ESSL |
41 | |
42 | #ifdef ANGLE_ENABLE_GLSL |
43 | if (IsOutputGLSL(output)) |
44 | { |
45 | return new TranslatorGLSL(type, spec, output); |
46 | } |
47 | #endif // ANGLE_ENABLE_GLSL |
48 | |
49 | #ifdef ANGLE_ENABLE_HLSL |
50 | if (IsOutputHLSL(output)) |
51 | { |
52 | return new TranslatorHLSL(type, spec, output); |
53 | } |
54 | #endif // ANGLE_ENABLE_HLSL |
55 | |
56 | #ifdef ANGLE_ENABLE_VULKAN |
57 | if (IsOutputVulkan(output)) |
58 | { |
59 | return new TranslatorVulkan(type, spec); |
60 | } |
61 | #endif // ANGLE_ENABLE_VULKAN |
62 | |
63 | // Unsupported compiler or unknown format. Return nullptr per the sh::ConstructCompiler API. |
64 | return nullptr; |
65 | } |
66 | |
67 | // |
68 | // Delete the compiler made by ConstructCompiler |
69 | // |
70 | void DeleteCompiler(TCompiler *compiler) |
71 | { |
72 | SafeDelete(compiler); |
73 | } |
74 | |
75 | } // namespace sh |
76 | |