OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file includes all the necessary GL headers and implements some useful | 5 // This file includes all the necessary GL headers and implements some useful |
6 // utilities. | 6 // utilities. |
7 | 7 |
8 #ifndef GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ | 8 #ifndef GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ |
9 #define GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ | 9 #define GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ |
10 | 10 |
11 #include <build/build_config.h> | 11 #include "build/build_config.h" |
| 12 #include "app/gfx/gl/gl_bindings.h" |
12 | 13 |
13 #if defined(UNIT_TEST) | 14 // GLES2 defines not part of Desktop GL |
14 #include "gpu/command_buffer/service/gl_mock.h" | 15 // Shader Precision-Specified Types |
15 // OpenGL constants not defined in OpenGL ES 2.0 needed when compiling | 16 #define GL_LOW_FLOAT 0x8DF0 |
16 // unit tests. For native OpenGL ES 2.0 backend these are not used. For OpenGL | 17 #define GL_MEDIUM_FLOAT 0x8DF1 |
17 // backend these must be defined by the local system. | 18 #define GL_HIGH_FLOAT 0x8DF2 |
18 #if !defined(GL_VERTEX_PROGRAM_POINT_SIZE) | 19 #define GL_LOW_INT 0x8DF3 |
19 #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 | 20 #define GL_MEDIUM_INT 0x8DF4 |
20 #endif | 21 #define GL_HIGH_INT 0x8DF5 |
21 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 | 22 #define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A |
22 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A | 23 #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B |
23 #define GL_MAX_VARYING_FLOATS 0x8B4B | 24 #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD |
24 #else | 25 #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB |
25 #if defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) | 26 #define GL_MAX_VARYING_VECTORS 0x8DFC |
26 #include <GLES2/gl2.h> // NOLINT | 27 #define GL_SHADER_BINARY_FORMATS 0x8DF8 |
27 | 28 #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 |
28 #define glClearDepth glClearDepthf | 29 #define GL_SHADER_COMPILER 0x8DFA |
29 #define glDepthRange glDepthRangef | |
30 | |
31 // Buffer Objects | |
32 #define glBindBufferARB glBindBuffer | |
33 #define glBufferDataARB glBufferData | |
34 #define glBufferSubDataARB glBufferSubData | |
35 #define glDeleteBuffersARB glDeleteBuffers | |
36 #define glGenBuffersARB glGenBuffers | |
37 | |
38 // Framebuffer Objects | |
39 #define glBindFramebufferEXT glBindFramebuffer | |
40 #define glBindRenderbufferEXT glBindRenderbuffer | |
41 #define glCheckFramebufferStatusEXT glCheckFramebufferStatus | |
42 #define glDeleteFramebuffersEXT glDeleteFramebuffers | |
43 #define glDeleteRenderbuffersEXT glDeleteRenderbuffers | |
44 #define glFramebufferRenderbufferEXT glFramebufferRenderbuffer | |
45 #define glFramebufferTexture2DEXT glFramebufferTexture2D | |
46 #define glGenFramebuffersEXT glGenFramebuffers | |
47 #define glGenRenderbuffersEXT glGenRenderbuffers | |
48 #define glGetFramebufferAttachmentParameterivEXT \ | |
49 glGetFramebufferAttachmentParameteriv | |
50 #define glGetRenderbufferParameterivEXT glGetRenderbufferParameteriv | |
51 #define glIsFramebufferEXT glIsFramebuffer | |
52 #define glIsRenderbufferEXT glIsFramebuffer | |
53 #define glRenderbufferStorageEXT glRenderbufferStorage | |
54 | |
55 // Texture Objects | |
56 #define glGenerateMipmapEXT glGenerateMipmap | |
57 | |
58 #else // !GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 | |
59 #include <GL/glew.h> // NOLINT | |
60 #include <GL/osmew.h> | |
61 #if defined(OS_WIN) | |
62 #include <GL/wglew.h> // NOLINT | |
63 #elif defined(OS_LINUX) | |
64 #include <GL/glxew.h> // NOLINT | |
65 #endif // OS_WIN | |
66 | |
67 // GLES2 defines not part of Desktop GL | |
68 // Shader Precision-Specified Types | |
69 #define GL_LOW_FLOAT 0x8DF0 | |
70 #define GL_MEDIUM_FLOAT 0x8DF1 | |
71 #define GL_HIGH_FLOAT 0x8DF2 | |
72 #define GL_LOW_INT 0x8DF3 | |
73 #define GL_MEDIUM_INT 0x8DF4 | |
74 #define GL_HIGH_INT 0x8DF5 | |
75 #define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A | |
76 #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B | |
77 #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD | |
78 #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB | |
79 #define GL_MAX_VARYING_VECTORS 0x8DFC | |
80 #define GL_SHADER_BINARY_FORMATS 0x8DF8 | |
81 #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 | |
82 #define GL_SHADER_COMPILER 0x8DFA | |
83 | |
84 #endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 | |
85 | |
86 #endif // UNIT_TEST | |
87 | 30 |
88 #define GL_GLEXT_PROTOTYPES 1 | 31 #define GL_GLEXT_PROTOTYPES 1 |
89 | 32 |
90 // Define this for extra GL error debugging (slower). | 33 // Define this for extra GL error debugging (slower). |
91 // #define GL_ERROR_DEBUGGING | 34 // #define GL_ERROR_DEBUGGING |
92 #ifdef GL_ERROR_DEBUGGING | 35 #ifdef GL_ERROR_DEBUGGING |
93 #define CHECK_GL_ERROR() do { \ | 36 #define CHECK_GL_ERROR() do { \ |
94 GLenum gl_error = glGetError(); \ | 37 GLenum gl_error = glGetError(); \ |
95 LOG_IF(ERROR, gl_error != GL_NO_ERROR) << "GL Error :" << gl_error; \ | 38 LOG_IF(ERROR, gl_error != GL_NO_ERROR) << "GL Error :" << gl_error; \ |
96 } while (0) | 39 } while (0) |
97 #else // GL_ERROR_DEBUGGING | 40 #else // GL_ERROR_DEBUGGING |
98 #define CHECK_GL_ERROR() void(0) | 41 #define CHECK_GL_ERROR() void(0) |
99 #endif // GL_ERROR_DEBUGGING | 42 #endif // GL_ERROR_DEBUGGING |
100 | 43 |
101 #endif // GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ | 44 #endif // GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ |
OLD | NEW |