diff options
Diffstat (limited to 'gfx/angle/src/compiler/translator/CodeGen.cpp')
-rwxr-xr-x | gfx/angle/src/compiler/translator/CodeGen.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/gfx/angle/src/compiler/translator/CodeGen.cpp b/gfx/angle/src/compiler/translator/CodeGen.cpp new file mode 100755 index 000000000..22f2afc98 --- /dev/null +++ b/gfx/angle/src/compiler/translator/CodeGen.cpp @@ -0,0 +1,84 @@ +// +// Copyright (c) 2013 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. +// + +#ifdef ANGLE_ENABLE_ESSL +#include "compiler/translator/TranslatorESSL.h" +#endif // ANGLE_ENABLE_ESSL + +#ifdef ANGLE_ENABLE_GLSL +#include "compiler/translator/TranslatorGLSL.h" +#endif // ANGLE_ENABLE_GLSL + +#ifdef ANGLE_ENABLE_HLSL +#include "compiler/translator/TranslatorHLSL.h" +#endif // ANGLE_ENABLE_HLSL + +namespace sh +{ + +// +// This function must be provided to create the actual +// compile object used by higher level code. It returns +// a subclass of TCompiler. +// +TCompiler *ConstructCompiler(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output) +{ + switch (output) + { + case SH_ESSL_OUTPUT: +#ifdef ANGLE_ENABLE_ESSL + return new TranslatorESSL(type, spec); +#else + // This compiler is not supported in this configuration. Return NULL per the + // sh::ConstructCompiler API. + return nullptr; +#endif // ANGLE_ENABLE_ESSL + + case SH_GLSL_130_OUTPUT: + case SH_GLSL_140_OUTPUT: + case SH_GLSL_150_CORE_OUTPUT: + case SH_GLSL_330_CORE_OUTPUT: + case SH_GLSL_400_CORE_OUTPUT: + case SH_GLSL_410_CORE_OUTPUT: + case SH_GLSL_420_CORE_OUTPUT: + case SH_GLSL_430_CORE_OUTPUT: + case SH_GLSL_440_CORE_OUTPUT: + case SH_GLSL_450_CORE_OUTPUT: + case SH_GLSL_COMPATIBILITY_OUTPUT: +#ifdef ANGLE_ENABLE_GLSL + return new TranslatorGLSL(type, spec, output); +#else + // This compiler is not supported in this configuration. Return NULL per the + // sh::ConstructCompiler API. + return nullptr; +#endif // ANGLE_ENABLE_GLSL + + case SH_HLSL_3_0_OUTPUT: + case SH_HLSL_4_1_OUTPUT: + case SH_HLSL_4_0_FL9_3_OUTPUT: +#ifdef ANGLE_ENABLE_HLSL + return new TranslatorHLSL(type, spec, output); +#else + // This compiler is not supported in this configuration. Return NULL per the + // sh::ConstructCompiler API. + return nullptr; +#endif // ANGLE_ENABLE_HLSL + + default: + // Unknown format. Return NULL per the sh::ConstructCompiler API. + return nullptr; + } +} + +// +// Delete the compiler made by ConstructCompiler +// +void DeleteCompiler(TCompiler *compiler) +{ + SafeDelete(compiler); +} + +} // namespace sh |