1 //
2 // Copyright 2011 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_BUILTINFUNCTIONEMULATORGLSL_H_
8 #define COMPILER_TRANSLATOR_BUILTINFUNCTIONEMULATORGLSL_H_
9 
10 #include "GLSLANG/ShaderLang.h"
11 
12 namespace sh
13 {
14 class BuiltInFunctionEmulator;
15 
16 //
17 // This works around bug in Intel Mac drivers.
18 //
19 void InitBuiltInAbsFunctionEmulatorForGLSLWorkarounds(BuiltInFunctionEmulator *emu,
20                                                       sh::GLenum shaderType);
21 
22 //
23 // This works around isnan() bug in Intel Mac drivers
24 //
25 void InitBuiltInIsnanFunctionEmulatorForGLSLWorkarounds(BuiltInFunctionEmulator *emu,
26                                                         int targetGLSLVersion);
27 //
28 // This works around atan(y, x) bug in NVIDIA drivers.
29 //
30 void InitBuiltInAtanFunctionEmulatorForGLSLWorkarounds(BuiltInFunctionEmulator *emu);
31 
32 //
33 // This function is emulating built-in functions missing from GLSL 1.30 and higher.
34 //
35 void InitBuiltInFunctionEmulatorForGLSLMissingFunctions(BuiltInFunctionEmulator *emu,
36                                                         sh::GLenum shaderType,
37                                                         int targetGLSLVersion);
38 }  // namespace sh
39 
40 #endif  // COMPILER_TRANSLATOR_BUILTINFUNCTIONEMULATORGLSL_H_
41