xref: /aosp_15_r20/external/skia/src/gpu/ganesh/gl/GrGLAssembleGLESInterfaceAutogen.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2019 Google LLC
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  *
7*c8dee2aaSAndroid Build Coastguard Worker  * THIS FILE IS AUTOGENERATED
8*c8dee2aaSAndroid Build Coastguard Worker  * Make edits to tools/gpu/gl/interface/templates.go or they will
9*c8dee2aaSAndroid Build Coastguard Worker  * be overwritten.
10*c8dee2aaSAndroid Build Coastguard Worker  */
11*c8dee2aaSAndroid Build Coastguard Worker 
12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h"
13*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLAssembleHelpers.h"
14*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLAssembleInterface.h"
15*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLExtensions.h"
16*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLFunctions.h"
17*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLInterface.h"
18*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLTypes.h"
19*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/gl/GrGLDefines.h"
20*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/gl/GrGLUtil.h"
21*c8dee2aaSAndroid Build Coastguard Worker 
22*c8dee2aaSAndroid Build Coastguard Worker #define GET_PROC(F) functions->f##F = (GrGL##F##Fn*)get(ctx, "gl" #F)
23*c8dee2aaSAndroid Build Coastguard Worker #define GET_PROC_SUFFIX(F, S) functions->f##F = (GrGL##F##Fn*)get(ctx, "gl" #F #S)
24*c8dee2aaSAndroid Build Coastguard Worker #define GET_PROC_LOCAL(F) GrGL##F##Fn* F = (GrGL##F##Fn*)get(ctx, "gl" #F)
25*c8dee2aaSAndroid Build Coastguard Worker 
26*c8dee2aaSAndroid Build Coastguard Worker #define GET_EGL_PROC_SUFFIX(F, S) functions->fEGL##F = (GrEGL##F##Fn*)get(ctx, "egl" #F #S)
27*c8dee2aaSAndroid Build Coastguard Worker 
28*c8dee2aaSAndroid Build Coastguard Worker #if SK_DISABLE_GL_ES_INTERFACE
GrGLMakeAssembledGLESInterface(void * ctx,GrGLGetProc get)29*c8dee2aaSAndroid Build Coastguard Worker sk_sp<const GrGLInterface> GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc get) {
30*c8dee2aaSAndroid Build Coastguard Worker     return nullptr;
31*c8dee2aaSAndroid Build Coastguard Worker }
32*c8dee2aaSAndroid Build Coastguard Worker #else
GrGLMakeAssembledGLESInterface(void * ctx,GrGLGetProc get)33*c8dee2aaSAndroid Build Coastguard Worker sk_sp<const GrGLInterface> GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc get) {
34*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC_LOCAL(GetString);
35*c8dee2aaSAndroid Build Coastguard Worker     if (nullptr == GetString) {
36*c8dee2aaSAndroid Build Coastguard Worker         return nullptr;
37*c8dee2aaSAndroid Build Coastguard Worker     }
38*c8dee2aaSAndroid Build Coastguard Worker 
39*c8dee2aaSAndroid Build Coastguard Worker     const char* verStr = reinterpret_cast<const char*>(GetString(GR_GL_VERSION));
40*c8dee2aaSAndroid Build Coastguard Worker     GrGLVersion glVer = GrGLGetVersionFromString(verStr);
41*c8dee2aaSAndroid Build Coastguard Worker 
42*c8dee2aaSAndroid Build Coastguard Worker     if (glVer < GR_GL_VER(2,0)) {
43*c8dee2aaSAndroid Build Coastguard Worker         return nullptr;
44*c8dee2aaSAndroid Build Coastguard Worker     }
45*c8dee2aaSAndroid Build Coastguard Worker 
46*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC_LOCAL(GetIntegerv);
47*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC_LOCAL(GetStringi);
48*c8dee2aaSAndroid Build Coastguard Worker     GrEGLQueryStringFn* queryString;
49*c8dee2aaSAndroid Build Coastguard Worker     GrEGLDisplay display;
50*c8dee2aaSAndroid Build Coastguard Worker     GrGetEGLQueryAndDisplay(&queryString, &display, ctx, get);
51*c8dee2aaSAndroid Build Coastguard Worker     GrGLExtensions extensions;
52*c8dee2aaSAndroid Build Coastguard Worker     if (!extensions.init(kGLES_GrGLStandard, GetString, GetStringi, GetIntegerv, queryString,
53*c8dee2aaSAndroid Build Coastguard Worker                          display)) {
54*c8dee2aaSAndroid Build Coastguard Worker         return nullptr;
55*c8dee2aaSAndroid Build Coastguard Worker     }
56*c8dee2aaSAndroid Build Coastguard Worker 
57*c8dee2aaSAndroid Build Coastguard Worker     sk_sp<GrGLInterface> interface(new GrGLInterface);
58*c8dee2aaSAndroid Build Coastguard Worker     GrGLInterface::Functions* functions = &interface->fFunctions;
59*c8dee2aaSAndroid Build Coastguard Worker 
60*c8dee2aaSAndroid Build Coastguard Worker     // Autogenerated content follows
61*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(ActiveTexture);
62*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(AttachShader);
63*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BindAttribLocation);
64*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BindBuffer);
65*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BindTexture);
66*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BlendColor);
67*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BlendEquation);
68*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BlendFunc);
69*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BufferData);
70*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BufferSubData);
71*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Clear);
72*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(ClearColor);
73*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(ClearStencil);
74*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(ColorMask);
75*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CompileShader);
76*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CompressedTexImage2D);
77*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CompressedTexSubImage2D);
78*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CopyTexSubImage2D);
79*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CreateProgram);
80*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CreateShader);
81*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CullFace);
82*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DeleteBuffers);
83*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DeleteProgram);
84*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DeleteShader);
85*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DeleteTextures);
86*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DepthMask);
87*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Disable);
88*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DisableVertexAttribArray);
89*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DrawArrays);
90*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DrawElements);
91*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Enable);
92*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(EnableVertexAttribArray);
93*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Finish);
94*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Flush);
95*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(FrontFace);
96*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GenBuffers);
97*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GenTextures);
98*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetBufferParameteriv);
99*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetError);
100*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetFloatv);
101*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetIntegerv);
102*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetProgramInfoLog);
103*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetProgramiv);
104*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetShaderInfoLog);
105*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetShaderiv);
106*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetString);
107*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetUniformLocation);
108*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(IsTexture);
109*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(LineWidth);
110*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(LinkProgram);
111*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(PixelStorei);
112*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(ReadPixels);
113*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Scissor);
114*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(ShaderSource);
115*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(StencilFunc);
116*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(StencilFuncSeparate);
117*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(StencilMask);
118*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(StencilMaskSeparate);
119*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(StencilOp);
120*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(StencilOpSeparate);
121*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(TexImage2D);
122*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(TexParameterf);
123*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(TexParameterfv);
124*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(TexParameteri);
125*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(TexParameteriv);
126*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(TexSubImage2D);
127*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform1f);
128*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform1fv);
129*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform1i);
130*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform1iv);
131*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform2f);
132*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform2fv);
133*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform2i);
134*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform2iv);
135*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform3f);
136*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform3fv);
137*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform3i);
138*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform3iv);
139*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform4f);
140*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform4fv);
141*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform4i);
142*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Uniform4iv);
143*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(UniformMatrix2fv);
144*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(UniformMatrix3fv);
145*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(UniformMatrix4fv);
146*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(UseProgram);
147*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(VertexAttrib1f);
148*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(VertexAttrib2fv);
149*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(VertexAttrib3fv);
150*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(VertexAttrib4fv);
151*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(VertexAttribPointer);
152*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(Viewport);
153*c8dee2aaSAndroid Build Coastguard Worker 
154*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
155*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetStringi);
156*c8dee2aaSAndroid Build Coastguard Worker     }
157*c8dee2aaSAndroid Build Coastguard Worker 
158*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,1)) {
159*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(MemoryBarrier);
160*c8dee2aaSAndroid Build Coastguard Worker     }
161*c8dee2aaSAndroid Build Coastguard Worker 
162*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
163*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(BindVertexArray);
164*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DeleteVertexArrays);
165*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GenVertexArrays);
166*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_OES_vertex_array_object")) {
167*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BindVertexArray, OES);
168*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DeleteVertexArrays, OES);
169*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GenVertexArrays, OES);
170*c8dee2aaSAndroid Build Coastguard Worker     }
171*c8dee2aaSAndroid Build Coastguard Worker 
172*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,2)) {
173*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(PatchParameteri);
174*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_OES_tessellation_shader")) {
175*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(PatchParameteri, OES);
176*c8dee2aaSAndroid Build Coastguard Worker     }
177*c8dee2aaSAndroid Build Coastguard Worker 
178*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0) && extensions.has("GL_EXT_blend_func_extended")) {
179*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BindFragDataLocation, EXT);
180*c8dee2aaSAndroid Build Coastguard Worker     }
181*c8dee2aaSAndroid Build Coastguard Worker 
182*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0) && extensions.has("GL_EXT_blend_func_extended")) {
183*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BindFragDataLocationIndexed, EXT);
184*c8dee2aaSAndroid Build Coastguard Worker     }
185*c8dee2aaSAndroid Build Coastguard Worker 
186*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_KHR_blend_equation_advanced")) {
187*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BlendBarrier, KHR);
188*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_NV_blend_equation_advanced")) {
189*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BlendBarrier, NV);
190*c8dee2aaSAndroid Build Coastguard Worker     }
191*c8dee2aaSAndroid Build Coastguard Worker 
192*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_clear_texture")) {
193*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(ClearTexImage, EXT);
194*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(ClearTexSubImage, EXT);
195*c8dee2aaSAndroid Build Coastguard Worker     }
196*c8dee2aaSAndroid Build Coastguard Worker 
197*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
198*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DrawArraysInstanced);
199*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DrawElementsInstanced);
200*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_draw_instanced")) {
201*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawArraysInstanced, EXT);
202*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawElementsInstanced, EXT);
203*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_ANGLE_instanced_arrays")) {
204*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawArraysInstanced, ANGLE);
205*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawElementsInstanced, ANGLE);
206*c8dee2aaSAndroid Build Coastguard Worker     }
207*c8dee2aaSAndroid Build Coastguard Worker 
208*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_base_instance")) {
209*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawArraysInstancedBaseInstance, EXT);
210*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawElementsInstancedBaseVertexBaseInstance, EXT);
211*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_ANGLE_base_vertex_base_instance")) {
212*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawArraysInstancedBaseInstance, ANGLE);
213*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DrawElementsInstancedBaseVertexBaseInstance, ANGLE);
214*c8dee2aaSAndroid Build Coastguard Worker     }
215*c8dee2aaSAndroid Build Coastguard Worker 
216*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
217*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DrawBuffers);
218*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(ReadBuffer);
219*c8dee2aaSAndroid Build Coastguard Worker     }
220*c8dee2aaSAndroid Build Coastguard Worker 
221*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,1)) {
222*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DrawArraysIndirect);
223*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DrawElementsIndirect);
224*c8dee2aaSAndroid Build Coastguard Worker     }
225*c8dee2aaSAndroid Build Coastguard Worker 
226*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_ANGLE_base_vertex_base_instance")) {
227*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MultiDrawArraysInstancedBaseInstance, ANGLE);
228*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MultiDrawElementsInstancedBaseVertexBaseInstance, ANGLE);
229*c8dee2aaSAndroid Build Coastguard Worker     }
230*c8dee2aaSAndroid Build Coastguard Worker 
231*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
232*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DrawRangeElements);
233*c8dee2aaSAndroid Build Coastguard Worker     }
234*c8dee2aaSAndroid Build Coastguard Worker 
235*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,1)) {
236*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetMultisamplefv);
237*c8dee2aaSAndroid Build Coastguard Worker     }
238*c8dee2aaSAndroid Build Coastguard Worker 
239*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,1)) {
240*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetTexLevelParameteriv);
241*c8dee2aaSAndroid Build Coastguard Worker     }
242*c8dee2aaSAndroid Build Coastguard Worker 
243*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_multi_draw_indirect")) {
244*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MultiDrawArraysIndirect, EXT);
245*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MultiDrawElementsIndirect, EXT);
246*c8dee2aaSAndroid Build Coastguard Worker     }
247*c8dee2aaSAndroid Build Coastguard Worker 
248*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,2)) {
249*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(TexBuffer);
250*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_OES_texture_buffer")) {
251*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TexBuffer, OES);
252*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_texture_buffer")) {
253*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TexBuffer, EXT);
254*c8dee2aaSAndroid Build Coastguard Worker     }
255*c8dee2aaSAndroid Build Coastguard Worker 
256*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,2)) {
257*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(TexBufferRange);
258*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_OES_texture_buffer")) {
259*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TexBufferRange, OES);
260*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_texture_buffer")) {
261*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TexBufferRange, EXT);
262*c8dee2aaSAndroid Build Coastguard Worker     }
263*c8dee2aaSAndroid Build Coastguard Worker 
264*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
265*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(TexStorage2D);
266*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_texture_storage")) {
267*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TexStorage2D, EXT);
268*c8dee2aaSAndroid Build Coastguard Worker     }
269*c8dee2aaSAndroid Build Coastguard Worker 
270*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_NV_texture_barrier")) {
271*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TextureBarrier, NV);
272*c8dee2aaSAndroid Build Coastguard Worker     }
273*c8dee2aaSAndroid Build Coastguard Worker 
274*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_discard_framebuffer")) {
275*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DiscardFramebuffer, EXT);
276*c8dee2aaSAndroid Build Coastguard Worker     }
277*c8dee2aaSAndroid Build Coastguard Worker 
278*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_QCOM_tiled_rendering")) {
279*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(EndTiling, QCOM);
280*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(StartTiling, QCOM);
281*c8dee2aaSAndroid Build Coastguard Worker     }
282*c8dee2aaSAndroid Build Coastguard Worker 
283*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
284*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(VertexAttribDivisor);
285*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_instanced_arrays")) {
286*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(VertexAttribDivisor, EXT);
287*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_ANGLE_instanced_arrays")) {
288*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(VertexAttribDivisor, ANGLE);
289*c8dee2aaSAndroid Build Coastguard Worker     }
290*c8dee2aaSAndroid Build Coastguard Worker 
291*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
292*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(VertexAttribIPointer);
293*c8dee2aaSAndroid Build Coastguard Worker     }
294*c8dee2aaSAndroid Build Coastguard Worker 
295*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BindFramebuffer);
296*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(BindRenderbuffer);
297*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(CheckFramebufferStatus);
298*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DeleteFramebuffers);
299*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(DeleteRenderbuffers);
300*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(FramebufferRenderbuffer);
301*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(FramebufferTexture2D);
302*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GenFramebuffers);
303*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GenRenderbuffers);
304*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GenerateMipmap);
305*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetFramebufferAttachmentParameteriv);
306*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetRenderbufferParameteriv);
307*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(RenderbufferStorage);
308*c8dee2aaSAndroid Build Coastguard Worker 
309*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
310*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(BlitFramebuffer);
311*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_NV_framebuffer_blit")) {
312*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BlitFramebuffer, NV);
313*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_CHROMIUM_framebuffer_multisample")) {
314*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BlitFramebuffer, CHROMIUM);
315*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_ANGLE_framebuffer_blit")) {
316*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BlitFramebuffer, ANGLE);
317*c8dee2aaSAndroid Build Coastguard Worker     }
318*c8dee2aaSAndroid Build Coastguard Worker 
319*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
320*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(RenderbufferStorageMultisample);
321*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_CHROMIUM_framebuffer_multisample")) {
322*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(RenderbufferStorageMultisample, CHROMIUM);
323*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_ANGLE_framebuffer_multisample")) {
324*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(RenderbufferStorageMultisample, ANGLE);
325*c8dee2aaSAndroid Build Coastguard Worker     }
326*c8dee2aaSAndroid Build Coastguard Worker 
327*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_CHROMIUM_map_sub")) {
328*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MapBufferSubData, CHROMIUM);
329*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MapTexSubImage2D, CHROMIUM);
330*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(UnmapBufferSubData, CHROMIUM);
331*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(UnmapTexSubImage2D, CHROMIUM);
332*c8dee2aaSAndroid Build Coastguard Worker     }
333*c8dee2aaSAndroid Build Coastguard Worker 
334*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_multisampled_render_to_texture")) {
335*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(FramebufferTexture2DMultisample, EXT);
336*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_IMG_multisampled_render_to_texture")) {
337*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(FramebufferTexture2DMultisample, IMG);
338*c8dee2aaSAndroid Build Coastguard Worker     }
339*c8dee2aaSAndroid Build Coastguard Worker 
340*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_multisampled_render_to_texture")) {
341*c8dee2aaSAndroid Build Coastguard Worker         functions->fRenderbufferStorageMultisampleES2EXT =(GrGLRenderbufferStorageMultisampleFn*)get(ctx, "glRenderbufferStorageMultisampleEXT");
342*c8dee2aaSAndroid Build Coastguard Worker     }
343*c8dee2aaSAndroid Build Coastguard Worker 
344*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_IMG_multisampled_render_to_texture")) {
345*c8dee2aaSAndroid Build Coastguard Worker         functions->fRenderbufferStorageMultisampleES2EXT =(GrGLRenderbufferStorageMultisampleFn*)get(ctx, "glRenderbufferStorageMultisampleIMG");
346*c8dee2aaSAndroid Build Coastguard Worker     }
347*c8dee2aaSAndroid Build Coastguard Worker 
348*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_APPLE_framebuffer_multisample")) {
349*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(ResolveMultisampleFramebuffer, APPLE);
350*c8dee2aaSAndroid Build Coastguard Worker         functions->fRenderbufferStorageMultisampleES2APPLE =(GrGLRenderbufferStorageMultisampleFn*)get(ctx, "glRenderbufferStorageMultisampleAPPLE");
351*c8dee2aaSAndroid Build Coastguard Worker     }
352*c8dee2aaSAndroid Build Coastguard Worker 
353*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_OES_mapbuffer")) {
354*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MapBuffer, OES);
355*c8dee2aaSAndroid Build Coastguard Worker     }
356*c8dee2aaSAndroid Build Coastguard Worker 
357*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
358*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(UnmapBuffer);
359*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_OES_mapbuffer")) {
360*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(UnmapBuffer, OES);
361*c8dee2aaSAndroid Build Coastguard Worker     }
362*c8dee2aaSAndroid Build Coastguard Worker 
363*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
364*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(FlushMappedBufferRange);
365*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(MapBufferRange);
366*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_map_buffer_range")) {
367*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(FlushMappedBufferRange, EXT);
368*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(MapBufferRange, EXT);
369*c8dee2aaSAndroid Build Coastguard Worker     }
370*c8dee2aaSAndroid Build Coastguard Worker 
371*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_debug_marker")) {
372*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(InsertEventMarker, EXT);
373*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(PopGroupMarker, EXT);
374*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(PushGroupMarker, EXT);
375*c8dee2aaSAndroid Build Coastguard Worker     }
376*c8dee2aaSAndroid Build Coastguard Worker 
377*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
378*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(CopyBufferSubData);
379*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_NV_copy_buffer")) {
380*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(CopyBufferSubData, NV);
381*c8dee2aaSAndroid Build Coastguard Worker     }
382*c8dee2aaSAndroid Build Coastguard Worker 
383*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_KHR_debug")) {
384*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DebugMessageCallback, KHR);
385*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DebugMessageControl, KHR);
386*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DebugMessageInsert, KHR);
387*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GetDebugMessageLog, KHR);
388*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(ObjectLabel, KHR);
389*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(PopDebugGroup, KHR);
390*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(PushDebugGroup, KHR);
391*c8dee2aaSAndroid Build Coastguard Worker     }
392*c8dee2aaSAndroid Build Coastguard Worker 
393*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_CHROMIUM_bind_uniform_location")) {
394*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BindUniformLocation, CHROMIUM);
395*c8dee2aaSAndroid Build Coastguard Worker     }
396*c8dee2aaSAndroid Build Coastguard Worker 
397*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_window_rectangles")) {
398*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(WindowRectangles, EXT);
399*c8dee2aaSAndroid Build Coastguard Worker     }
400*c8dee2aaSAndroid Build Coastguard Worker 
401*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
402*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(ClientWaitSync);
403*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DeleteSync);
404*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(FenceSync);
405*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(IsSync);
406*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(WaitSync);
407*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_APPLE_sync")) {
408*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(ClientWaitSync, APPLE);
409*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DeleteSync, APPLE);
410*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(FenceSync, APPLE);
411*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(IsSync, APPLE);
412*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(WaitSync, APPLE);
413*c8dee2aaSAndroid Build Coastguard Worker     }
414*c8dee2aaSAndroid Build Coastguard Worker 
415*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
416*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetInternalformativ);
417*c8dee2aaSAndroid Build Coastguard Worker     }
418*c8dee2aaSAndroid Build Coastguard Worker 
419*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
420*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetProgramBinary);
421*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(ProgramBinary);
422*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_OES_get_program_binary")) {
423*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GetProgramBinary, OES);
424*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(ProgramBinary, OES);
425*c8dee2aaSAndroid Build Coastguard Worker     }
426*c8dee2aaSAndroid Build Coastguard Worker 
427*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
428*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(ProgramParameteri);
429*c8dee2aaSAndroid Build Coastguard Worker     }
430*c8dee2aaSAndroid Build Coastguard Worker 
431*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
432*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(BindSampler);
433*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DeleteSamplers);
434*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GenSamplers);
435*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(SamplerParameterf);
436*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(SamplerParameteri);
437*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(SamplerParameteriv);
438*c8dee2aaSAndroid Build Coastguard Worker     }
439*c8dee2aaSAndroid Build Coastguard Worker 
440*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
441*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(BeginQuery);
442*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(DeleteQueries);
443*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(EndQuery);
444*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GenQueries);
445*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetQueryObjectuiv);
446*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(GetQueryiv);
447*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_EXT_disjoint_timer_query")) {
448*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(BeginQuery, EXT);
449*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DeleteQueries, EXT);
450*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(EndQuery, EXT);
451*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GenQueries, EXT);
452*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GetQueryObjectuiv, EXT);
453*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GetQueryiv, EXT);
454*c8dee2aaSAndroid Build Coastguard Worker     }
455*c8dee2aaSAndroid Build Coastguard Worker 
456*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_disjoint_timer_query")) {
457*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(QueryCounter, EXT);
458*c8dee2aaSAndroid Build Coastguard Worker     }
459*c8dee2aaSAndroid Build Coastguard Worker 
460*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_EXT_disjoint_timer_query")) {
461*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GetQueryObjecti64v, EXT);
462*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GetQueryObjectui64v, EXT);
463*c8dee2aaSAndroid Build Coastguard Worker     }
464*c8dee2aaSAndroid Build Coastguard Worker 
465*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_ARB_invalidate_subdata")) {
466*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateBufferData);
467*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateBufferSubData);
468*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateTexImage);
469*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateTexSubImage);
470*c8dee2aaSAndroid Build Coastguard Worker     }
471*c8dee2aaSAndroid Build Coastguard Worker 
472*c8dee2aaSAndroid Build Coastguard Worker     if (glVer >= GR_GL_VER(3,0)) {
473*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateFramebuffer);
474*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateSubFramebuffer);
475*c8dee2aaSAndroid Build Coastguard Worker     } else if (extensions.has("GL_ARB_invalidate_subdata")) {
476*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateFramebuffer);
477*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC(InvalidateSubFramebuffer);
478*c8dee2aaSAndroid Build Coastguard Worker     }
479*c8dee2aaSAndroid Build Coastguard Worker 
480*c8dee2aaSAndroid Build Coastguard Worker     GET_PROC(GetShaderPrecisionFormat);
481*c8dee2aaSAndroid Build Coastguard Worker 
482*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_NV_fence")) {
483*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(DeleteFences, NV);
484*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(FinishFence, NV);
485*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(GenFences, NV);
486*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(SetFence, NV);
487*c8dee2aaSAndroid Build Coastguard Worker         GET_PROC_SUFFIX(TestFence, NV);
488*c8dee2aaSAndroid Build Coastguard Worker     }
489*c8dee2aaSAndroid Build Coastguard Worker 
490*c8dee2aaSAndroid Build Coastguard Worker 
491*c8dee2aaSAndroid Build Coastguard Worker     // End autogenerated content
492*c8dee2aaSAndroid Build Coastguard Worker     // TODO(kjlubick): Do we want a feature that removes the extension if it doesn't have
493*c8dee2aaSAndroid Build Coastguard Worker     // the function? This is common on some low-end GPUs.
494*c8dee2aaSAndroid Build Coastguard Worker 
495*c8dee2aaSAndroid Build Coastguard Worker     if (extensions.has("GL_KHR_debug")) {
496*c8dee2aaSAndroid Build Coastguard Worker         // In general we have a policy against removing extension strings when the driver does
497*c8dee2aaSAndroid Build Coastguard Worker         // not provide function pointers for an advertised extension. However, because there is a
498*c8dee2aaSAndroid Build Coastguard Worker         // known device that advertises GL_KHR_debug but fails to provide the functions and this is
499*c8dee2aaSAndroid Build Coastguard Worker         // a debugging- only extension we've made an exception. This also can happen when using
500*c8dee2aaSAndroid Build Coastguard Worker         // APITRACE.
501*c8dee2aaSAndroid Build Coastguard Worker         if (!interface->fFunctions.fDebugMessageControl) {
502*c8dee2aaSAndroid Build Coastguard Worker             extensions.remove("GL_KHR_debug");
503*c8dee2aaSAndroid Build Coastguard Worker         }
504*c8dee2aaSAndroid Build Coastguard Worker     }
505*c8dee2aaSAndroid Build Coastguard Worker     interface->fStandard = kGLES_GrGLStandard;
506*c8dee2aaSAndroid Build Coastguard Worker     interface->fExtensions.swap(&extensions);
507*c8dee2aaSAndroid Build Coastguard Worker 
508*c8dee2aaSAndroid Build Coastguard Worker     return interface;
509*c8dee2aaSAndroid Build Coastguard Worker }
510*c8dee2aaSAndroid Build Coastguard Worker #endif
511