| Index: src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp
|
| ===================================================================
|
| --- src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp (revision 7868)
|
| +++ src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp (working copy)
|
| @@ -8,7 +8,8 @@
|
|
|
|
|
| #include "gl/GrGLInterface.h"
|
| -#include "../GrGLUtil.h"
|
| +#include "gl/GrGLExtensions.h"
|
| +#include "GrGLUtil.h"
|
|
|
| #include <OpenGL/gl.h>
|
| #include <OpenGL/glext.h>
|
| @@ -31,8 +32,12 @@
|
| glInterface.reset(interface);
|
| const char* verStr = (const char*) glGetString(GL_VERSION);
|
| GrGLVersion ver = GrGLGetVersionFromString(verStr);
|
| - const char* extStr = (const char*) glGetString(GL_EXTENSIONS);
|
| -
|
| + GrGLExtensions extensions;
|
| + GrGLGetStringiProc glGetStringi = (GrGLGetStringiProc) GetProcAddress("glGetStringi");
|
| + if (!extensions.init(kDesktop_GrGLBinding, glGetString, glGetStringi, glGetIntegerv)) {
|
| + glInterface.reset(NULL);
|
| + return NULL;
|
| + }
|
| interface->fBindingsExported = kDesktop_GrGLBinding;
|
| interface->fActiveTexture = glActiveTexture;
|
| interface->fAttachShader = glAttachShader;
|
| @@ -51,8 +56,8 @@
|
|
|
| if (ver >= GR_GL_VER(1,4)) {
|
| interface->fBlendColor = glBlendColor;
|
| - } else if (GrGLHasExtensionFromString("GL_ARB_imaging", extStr) ||
|
| - GrGLHasExtensionFromString("GL_EXT_blend_color", extStr)) {
|
| + } else if (extensions.has("GL_ARB_imaging") ||
|
| + extensions.has("GL_EXT_blend_color")) {
|
| GET_PROC(BlendColor);
|
| }
|
|
|
| @@ -74,8 +79,7 @@
|
| interface->fDeleteTextures = glDeleteTextures;
|
| interface->fDepthMask = glDepthMask;
|
| interface->fDisable = glDisable;
|
| - interface->fDisableVertexAttribArray =
|
| - glDisableVertexAttribArray;
|
| + interface->fDisableVertexAttribArray = glDisableVertexAttribArray;
|
| interface->fDrawArrays = glDrawArrays;
|
| interface->fDrawBuffer = glDrawBuffer;
|
| interface->fDrawBuffers = glDrawBuffers;
|
| @@ -99,6 +103,7 @@
|
| interface->fGetShaderInfoLog = glGetShaderInfoLog;
|
| interface->fGetShaderiv = glGetShaderiv;
|
| interface->fGetString = glGetString;
|
| + interface->fGetStringi = glGetStringi;
|
| interface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
|
| interface->fGenTextures = glGenTextures;
|
| interface->fGetUniformLocation = glGetUniformLocation;
|
| @@ -131,10 +136,9 @@
|
| #elif GL_EXT_texture_storage
|
| interface->fTexStorage2D = glTexStorage2DEXT;
|
| #else
|
| - if (ver >= GR_GL_VER(4,2) ||
|
| - GrGLHasExtensionFromString("GL_ARB_texture_storage", extStr)) {
|
| + if (ver >= GR_GL_VER(4,2) || extensions.has("GL_ARB_texture_storage")) {
|
| GET_PROC(TexStorage2D);
|
| - } else if (GrGLHasExtensionFromString("GL_EXT_texture_storage", extStr)) {
|
| + } else if (extensions.has("GL_EXT_texture_storage")) {
|
| GET_PROC_SUFFIX(TexStorage2D, EXT);
|
| }
|
| #endif
|
| @@ -165,7 +169,7 @@
|
| interface->fVertexAttribPointer = glVertexAttribPointer;
|
| interface->fViewport = glViewport;
|
|
|
| - if (ver >= GR_GL_VER(3,3) || GrGLHasExtensionFromString("GL_ARB_timer_query", extStr)) {
|
| + if (ver >= GR_GL_VER(3,3) || extensions.has("GL_ARB_timer_query")) {
|
| // ARB extension doesn't use the ARB suffix on the function name
|
| #if GL_ARB_timer_query || GL_VERSION_3_3
|
| interface->fQueryCounter = glQueryCounter;
|
| @@ -176,7 +180,7 @@
|
| interface->fGetQueryObjecti64v = GET_PROC(GetQueryObjecti64v);
|
| interface->fGetQueryObjectui64v = GET_PROC(GetQueryObjectui64v);
|
| #endif
|
| - } else if (GrGLHasExtensionFromString("GL_EXT_timer_query", extStr)) {
|
| + } else if (extensions.has("GL_EXT_timer_query")) {
|
| #if GL_EXT_timer_query
|
| interface->fGetQueryObjecti64v = glGetQueryObjecti64vEXT;
|
| interface->fGetQueryObjectui64v = glGetQueryObjectui64vEXT;
|
| @@ -186,7 +190,7 @@
|
| #endif
|
| }
|
|
|
| - if (ver >= GR_GL_VER(3,0) || GrGLHasExtensionFromString("GL_ARB_framebuffer_object", extStr)) {
|
| + if (ver >= GR_GL_VER(3,0) || extensions.has("GL_ARB_framebuffer_object")) {
|
| // ARB extension doesn't use the ARB suffix on the function names
|
| #if GL_VERSION_3_0 || GL_ARB_framebuffer_object
|
| interface->fGenFramebuffers = glGenFramebuffers;
|
| @@ -220,7 +224,7 @@
|
| interface->fBlitFramebuffer = GET_PROC(BlitFramebuffer);
|
| #endif
|
| } else {
|
| - if (GrGLHasExtensionFromString("GL_EXT_framebuffer_object", extStr)) {
|
| + if (extensions.has("GL_EXT_framebuffer_object")) {
|
| #if GL_EXT_framebuffer_object
|
| interface->fGenFramebuffers = glGenFramebuffersEXT;
|
| interface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameterivEXT;
|
| @@ -249,14 +253,14 @@
|
| interface->fBindRenderbuffer = GET_PROC_SUFFIX(BindRenderbuffer, EXT);
|
| #endif
|
| }
|
| - if (GrGLHasExtensionFromString("GL_EXT_framebuffer_multisample", extStr)) {
|
| + if (extensions.has("GL_EXT_framebuffer_multisample")) {
|
| #if GL_EXT_framebuffer_multisample
|
| interface->fRenderbufferStorageMultisample = glRenderbufferStorageMultisampleEXT;
|
| #else
|
| interface->fRenderbufferStorageMultisample = GET_PROC_SUFFIX(RenderbufferStorageMultisample, EXT);
|
| #endif
|
| }
|
| - if (GrGLHasExtensionFromString("", extStr)) {
|
| + if (extensions.has("GL_EXT_framebuffer_blit")) {
|
| #if GL_EXT_framebuffer_blit
|
| interface->fBlitFramebuffer = glBlitFramebufferEXT;
|
| #else
|
| @@ -264,7 +268,7 @@
|
| #endif
|
| }
|
| }
|
| - if (ver >= GR_GL_VER(3,3) || GrGLHasExtensionFromString("GL_ARB_blend_func_extended", extStr)) {
|
| + if (ver >= GR_GL_VER(3,3) || extensions.has("GL_ARB_blend_func_extended")) {
|
| // ARB extension doesn't use the ARB suffix on the function name
|
| #if GL_VERSION_3_3 || GL_ARB_blend_func_extended
|
| interface->fBindFragDataLocationIndexed = glBindFragDataLocationIndexed;
|
| @@ -272,8 +276,6 @@
|
| interface->fBindFragDataLocationIndexed = GET_PROC(BindFragDataLocationIndexed);
|
| #endif
|
| }
|
| -
|
| - interface->fBindingsExported = kDesktop_GrGLBinding;
|
| }
|
| glInterface.get()->ref();
|
| return glInterface.get();
|
|
|