33 if (
nullptr == GetString ||
nullptr == GetIntegerv) {
37 const char* versionString = (
const char*) GetString(
GR_GL_VERSION);
49 if (!extensions.init(
kGL_GrGLStandard, GetString, GetStringi, GetIntegerv, queryString,
166 }
else if (extensions.has(
"GL_ARB_vertex_array_object")) {
170 }
else if (extensions.has(
"GL_APPLE_vertex_array_object")) {
178 }
else if (extensions.has(
"GL_ARB_tessellation_shader")) {
187 GET_PROC(BindFragDataLocationIndexed);
188 }
else if (extensions.has(
"GL_ARB_blend_func_extended")) {
189 GET_PROC(BindFragDataLocationIndexed);
192 if (extensions.has(
"GL_KHR_blend_equation_advanced")) {
194 }
else if (extensions.has(
"GL_NV_blend_equation_advanced")) {
201 }
else if (extensions.has(
"GL_ARB_clear_texture")) {
209 }
else if (extensions.has(
"GL_ARB_draw_instanced")) {
212 }
else if (extensions.has(
"GL_EXT_draw_instanced")) {
218 GET_PROC(DrawArraysInstancedBaseInstance);
219 GET_PROC(DrawElementsInstancedBaseVertexBaseInstance);
220 }
else if (extensions.has(
"GL_ARB_base_instance")) {
221 GET_PROC(DrawArraysInstancedBaseInstance);
222 GET_PROC(DrawElementsInstancedBaseVertexBaseInstance);
231 }
else if (extensions.has(
"GL_ARB_draw_indirect")) {
240 }
else if (extensions.has(
"GL_ARB_texture_multisample")) {
248 GET_PROC(MultiDrawElementsIndirect);
249 }
else if (extensions.has(
"GL_ARB_multi_draw_indirect")) {
251 GET_PROC(MultiDrawElementsIndirect);
264 }
else if (extensions.has(
"GL_ARB_texture_storage")) {
266 }
else if (extensions.has(
"GL_EXT_texture_storage")) {
272 }
else if (extensions.has(
"GL_ARB_texture_barrier")) {
274 }
else if (extensions.has(
"GL_NV_texture_barrier")) {
280 }
else if (extensions.has(
"GL_ARB_instanced_arrays")) {
299 GET_PROC(GetFramebufferAttachmentParameteriv);
300 GET_PROC(GetRenderbufferParameteriv);
302 }
else if (extensions.has(
"GL_ARB_framebuffer_object")) {
313 GET_PROC(GetFramebufferAttachmentParameteriv);
314 GET_PROC(GetRenderbufferParameteriv);
316 }
else if (extensions.has(
"GL_EXT_framebuffer_object")) {
334 }
else if (extensions.has(
"GL_ARB_framebuffer_object")) {
336 }
else if (extensions.has(
"GL_EXT_framebuffer_blit")) {
341 GET_PROC(RenderbufferStorageMultisample);
342 }
else if (extensions.has(
"GL_ARB_framebuffer_object")) {
343 GET_PROC(RenderbufferStorageMultisample);
344 }
else if (extensions.has(
"GL_EXT_framebuffer_multisample")) {
355 }
else if (extensions.has(
"GL_ARB_map_buffer_range")) {
360 if (extensions.has(
"GL_EXT_debug_marker")) {
368 }
else if (extensions.has(
"GL_ARB_copy_buffer")) {
380 }
else if (extensions.has(
"GL_KHR_debug")) {
390 if (extensions.has(
"GL_EXT_window_rectangles")) {
400 }
else if (extensions.has(
"GL_ARB_sync")) {
410 }
else if (extensions.has(
"GL_ARB_internalformat_query")) {
430 }
else if (extensions.has(
"GL_ARB_sampler_objects")) {
441#if defined(GR_TEST_UTILS)
453 }
else if (extensions.has(
"GL_ARB_timer_query")) {
456 }
else if (extensions.has(
"GL_EXT_timer_query")) {
463 }
else if (extensions.has(
"GL_ARB_timer_query")) {
472 }
else if (extensions.has(
"GL_ARB_invalidate_subdata")) {
482 }
else if (extensions.has(
"GL_ARB_invalidate_subdata")) {
489 }
else if (extensions.has(
"GL_ARB_ES2_compatibility")) {
493 if (extensions.has(
"GL_NV_fence")) {
504 interface->fExtensions.
swap(&extensions);