SRC_LIST += src/images/SkImageDecoder_libpng.cpp
# support files
SRC_LIST += src/images/SkScaledBitmapSampler.cpp
+
+ SRC_LIST += gpu/src/mac/GrGLDefaultInterface_mac.cpp
else
LINKER_OPTS += -lpng -lfreetype -lGL
DEFINES += -DSK_BUILD_FOR_UNIX -DSK_ENABLE_LIBPNG -DGR_LINUX_BUILD=1
SRC_LIST += src/images/SkImageDecoder_libpng.cpp
# support files
SRC_LIST += src/images/SkScaledBitmapSampler.cpp
+
+ SRC_LIST += gpu/src/GrGLDefaultInterface_none.cpp
endif
# For these files, and these files only, compile with -msse2.
#define GrGLConfig_DEFINED
#include "GrTypes.h"
-#include "GrGLInterface.h"
#include "GrGLDefines.h"
/**
- * The following macros are used to staticlly configure the default
- * GrGLInterface, but should not be used outside of the GrGLInterface
- * scaffolding. Undefine here to prevent accidental use.
+ * Optional GL config file.
*/
-#undef GR_SUPPORT_GLDESKTOP
-#undef GR_SUPPORT_GLES1
-#undef GR_SUPPORT_GLES2
-#undef GR_SUPPORT_GLES
+#ifdef GR_GL_CUSTOM_SETUP_HEADER
+ #include GR_GL_CUSTOM_SETUP_HEADER
+#endif
+
+#if !defined(GR_GL_FUNCTION_TYPE)
+ #define GR_GL_FUNCTION_TYPE
+#endif
/**
* The following are optional defines that can be enabled at the compiler
* command line, in a IDE project, in a GrUserConfig.h file, or in a GL custom
- * file (if one is in use). They don't require GR_GL_CUSTOM_SETUP or
- * setup GR_GL_CUSTOM_SETUP_HEADER to be enabled:
+ * file (if one is in use). If a GR_GL_CUSTOM_SETUP_HEADER is used they can
+ * also be placed there.
*
* GR_GL_LOG_CALLS: if 1 Gr can print every GL call using GrPrintf. Defaults to
* 0. Logging can be enabled and disabled at runtime using a debugger via to
////////////////////////////////////////////////////////////////////////////////
+/**
+ * The following macros are used to staticlly configure the default
+ * GrGLInterface, but should not be used outside of the GrGLInterface
+ * scaffolding. Undefine here to prevent accidental use.
+ */
+#undef GR_SUPPORT_GLDESKTOP
+#undef GR_SUPPORT_GLES1
+#undef GR_SUPPORT_GLES2
+#undef GR_SUPPORT_GLES
+
+////////////////////////////////////////////////////////////////////////////////
+
#if GR_SCALAR_IS_FIXED
#define GrGLType GL_FIXED
#elif GR_SCALAR_IS_FLOAT
extern void GrGLCheckErr(const char* location, const char* call);
-static inline void GrGLClearErr() {
- while (GR_GL_NO_ERROR != GrGLGetGLInterface()->fGetError()) {}
-}
+extern void GrGLClearErr();
#if GR_GL_CHECK_ERROR
extern bool gCheckErrorGL;
////////////////////////////////////////////////////////////////////////////////
/**
- * GrGL_RestoreResetRowLength() will reset GL_UNPACK_ROW_LENGTH to 0. We write
+ * GrGLRestoreResetRowLength() will reset GL_UNPACK_ROW_LENGTH to 0. We write
* this wrapper, since GL_UNPACK_ROW_LENGTH is not available on all GL versions
*/
-static inline void GrGL_RestoreResetRowLength() {
- if (GR_GL_SUPPORT_DESKTOP) {
- GR_GL(PixelStorei(GR_GL_UNPACK_ROW_LENGTH, 0));
- }
-}
+extern void GrGLRestoreResetRowLength();
////////////////////////////////////////////////////////////////////////////////
#ifndef GrGLConfig_chrome_DEFINED
#define GrGLConfig_chrome_DEFINED
-#define GR_SUPPORT_GLES2 1
-
-// gl2ext.h will define these extensions macros but Chrome doesn't provide
-// prototypes.
-#define GL_OES_mapbuffer 0
-
-#define GL_GLEXT_PROTOTYPES
-#define GR_GL_PLATFORM_HEADER <GLES2/gl2.h>
-#define GR_GL_PLATFORM_HEADER_EXT <GLES2/gl2ext.h>
-
-#define GR_GL_FUNCTION_TYPE
-
-#define GR_GL_PROC_ADDRESS(X) &X
-
// chrome always assumes BGRA
#define GR_GL_32BPP_COLOR_FORMAT GR_GL_BGRA
#ifndef GrGLIRect_DEFINED
#define GrGLIRect_DEFINED
-#include "GrGLConfig.h"
+#include "GrGLInterface.h"
/**
* Helper struct for dealing with the fact that Ganesh and GL use different
#define GrGLIndexBuffer_DEFINED
#include "GrIndexBuffer.h"
-#include "GrGLConfig.h"
+#include "GrGLInterface.h"
class GrGpuGL;
#ifndef GrGLInterface_DEFINED
#define GrGLInterface_DEFINED
-#include "GrGLPlatformIncludes.h"
-#include "GrTypes.h"
+#include "GrGLConfig.h"
#if !defined(GR_GL_FUNCTION_TYPE)
#define GR_GL_FUNCTION_TYPE
/**
* Helpers for glGetString()
*/
+
+void gl_version_from_string(int* major, int* minor,
+ const char* versionString);
+bool has_gl_extension_from_string(const char* ext,
+ const char* extensionString);
+
bool has_gl_extension(const char* ext);
void gl_version(int* major, int* minor);
+
////////////////////////////////////////////////////////////////////////////////
/*
GR_API void GrGLSetGLInterface(GrGLInterface* gl_interface);
/*
- * Populates the global GrGLInterface pointer with an instance pointing to the
- * GL implementation linked with the executable.
+ * This is called when GrGLSetGLInterface() hasn't been called before creating a
+ * GrGpuGL object. It provides a default implementation. The actual implementation
+ * depends on which GrGLDefaultInterface_*.cpp has been linked. There are some
+ * platform-specific implementations provided as well as
+ * GrGLDefaultInterface_none.cpp which does nothing (effectively requiring an
+ * explicit GrGLSetGLInterface call by the host).
*/
-extern void GrGLSetDefaultGLInterface();
+void GrGLSetDefaultGLInterface();
typedef unsigned int GrGLenum;
typedef unsigned char GrGLboolean;
typedef double GrGLdouble;
typedef double GrGLclampd;
typedef void GrGLvoid;
+typedef long GrGLintptr;
+typedef long GrGLsizeiptr;
enum GrGLBinding {
kDesktop_GrGLBinding = 0x01,
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBindTextureProc)(GrGLenum target, GrGLuint texture);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBlendColorProc)(GrGLclampf red, GrGLclampf green, GrGLclampf blue, GrGLclampf alpha);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBlendFuncProc)(GrGLenum sfactor, GrGLenum dfactor);
- typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBufferDataProc)(GrGLenum target, GrGLsizei size, const GrGLvoid* data, GrGLenum usage);
- typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBufferSubDataProc)(GrGLenum target, GrGLint offset, GrGLsizei size, const GrGLvoid* data);
+ typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBufferDataProc)(GrGLenum target, GrGLsizeiptr size, const GrGLvoid* data, GrGLenum usage);
+ typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBufferSubDataProc)(GrGLenum target, GrGLintptr offset, GrGLsizeiptr size, const GrGLvoid* data);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLClearProc)(GrGLbitfield mask);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLClearColorProc)(GrGLclampf red, GrGLclampf green, GrGLclampf blue, GrGLclampf alpha);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLClearStencilProc)(GrGLint s);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLEnableVertexAttribArrayProc)(GrGLuint index);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLFrontFaceProc)(GrGLenum mode);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLGenBuffersProc)(GrGLsizei n, GrGLuint* buffers);
- typedef GrGLenum (GR_GL_FUNCTION_TYPE *GrGLGetErrorProc)(void);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLGenTexturesProc)(GrGLsizei n, GrGLuint* textures);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLGetBufferParameterivProc)(GrGLenum target, GrGLenum pname, GrGLint* params);
+ typedef GrGLenum (GR_GL_FUNCTION_TYPE *GrGLGetErrorProc)(void);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLGetIntegervProc)(GrGLenum pname, GrGLint* params);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLGetProgramInfoLogProc)(GrGLuint program, GrGLsizei bufsize, GrGLsizei* length, char* infolog);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLGetProgramivProc)(GrGLuint program, GrGLenum pname, GrGLint* params);
GrGLBindAttribLocationProc fBindAttribLocation;
GrGLBindBufferProc fBindBuffer;
GrGLBindTextureProc fBindTexture;
- GrGLBlendFuncProc fBlendFunc;
GrGLBlendColorProc fBlendColor;
+ GrGLBlendFuncProc fBlendFunc;
GrGLBufferDataProc fBufferData;
GrGLBufferSubDataProc fBufferSubData;
GrGLClearProc fClear;
// Buffer mapping (extension in ES).
GrGLMapBufferProc fMapBuffer;
GrGLUnmapBufferProc fUnmapBuffer;
+
+ // Code that initializes this struct using a static initializer should
+ // make this the last entry in the static initializer. It can help to guard
+ // against failing to initialize newly-added members of this struct.
+ enum { kStaticInitEndGuard } fStaticInitEndGuard;
};
} // extern "C"
+++ /dev/null
-/*
- Copyright 2011 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-
-#ifndef GrGLPlatformIncludes_DEFINED
-#define GrGLPlatformIncludes_DEFINED
-
-#if !defined(GR_GL_CUSTOM_SETUP)
- #define GR_GL_CUSTOM_SETUP 0
-#endif
-
-/**
- * We need to pull in the right GL headers and determine whether we are
- * compiling for ES1, ES2, or desktop GL. (We allow ES1 and ES2 to both be
- * supported in the same build but not ESx and desktop). We also need to know
- * the platform-specific way to get extension function pointers (e.g.
- * eglGetProcAddress). The port specifies this info explicitly or we will infer
- * it from the GR_*_BUILD flag.
- *
- * To specify GL setup directly define GR_GL_CUSTOM_SETUP to 1 and define:
- * GR_SUPPORT_GLDESKTOP or (GR_SUPPORT_GLES1 and/or GR_SUPPORT_GLES2) to 1
- *
- * if GR_SUPPORT_GLDESKTOP is 1 then provide:
- * 1. The name of your GL header in GR_INCLUDE_GLDESKTOP
- * 2. If necessary, the name of a file that includes extension
- * definitions in GR_INCLUDE_GLDESKTOPext.
- * if GR_SUPPORT_GLES1 is 1 then provide:
- * 1. The name of your GL header in GR_INCLUDE_GLES1
- * 2. If necessary, the name of a file that includes extension
- * definitions in GR_INCLUDE_GLES1ext.
- * if GR_SUPPORT_GLES2 is 1 then provide:
- * 1. The name of your GL header in GR_INCLUDE_GLES2
- * 2. If necessary, the name of a file that includes extension
- * definitions in GR_INCLUDE_GLES2ext.
- *
- * Optionally, define GR_GL_FUNCTION_TYPE to any qualifier needed on GL
- * function pointer declarations (e.g. __stdcall).
- *
- * Define GR_GL_PROC_ADDRESS to take a gl function and produce a
- * function pointer. Two examples:
- * 1. Your platform doesn't require a proc address function, just take
- * the address of the function:
- * #define GR_GL_PROC_ADDRESS(X) &X
- * 2. Your platform uses eglGetProcAddress:
- * #define GR_GL_PROC_ADDRESS eglGetProcAddress(#X)
- *
- * Optionally define GR_GL_PROC_ADDRESS_HEADER to include any additional
- * header necessary to use GR_GL_PROC_ADDRESS (e.g. <EGL/egl.h>)
- *
- * Alternatively, define GR_GL_CUSTOM_SETUP_HEADER (and not GR_GL_CUSTOM_SETUP)
- * to a header that can be included. This file should:
- * 1. Define the approprate GR_SUPPORT_GL* macro(s) to 1
- * 2. Specify all of the necessary GL include headers in the following
- * macros:
- * GR_GL_PLATFORM_HEADER_SUPPORT: Header required before GL
- * includes.
- * GR_GL_PLATFORM_HEADER: GL header location.
- * GR_GL_PLATFORM_HEADER_EXT: (Optional) Header for extension
- * definitions.
- * 3. Optionally define GR_GL_FUNCTION_TYPE.
- * 4. Define GR_GL_PROC_ADDRESS.
- * 5. Optionally define GR_GL_PROC_ADDRESS_HEADER
- */
-
-#if GR_GL_CUSTOM_SETUP
-
- #ifdef GR_SUPPORT_GLES1
- #define GR_GL_PLATFORM_HEADER GR_INCLUDE_GLES1
- #if defined(GR_INCLUDE_GLES1ext)
- #define GR_GL_PLATFORM_HEADER_EXT GR_INCLUDE_GLES1ext
- #endif
- #endif
-
- #ifdef GR_SUPPORT_GLES2
- #define GR_GL_PLATFORM_HEADER GR_INCLUDE_GLES2
- #if defined(GR_INCLUDE_GLES2ext)
- #define GR_GL_PLATFORM_HEADER_EXT GR_INCLUDE_GLES2ext
- #endif
- #endif
-
- #ifdef GR_SUPPORT_GLDESKTOP
- #define GR_GL_PLATFORM_HEADER GR_INCLUDE_GLDESKTOP
- #if defined(GR_INCLUDE_GLDESKTOPext)
- #define GR_GL_PLATFORM_HEADER_EXT GR_INCLUDE_GLDESKTOPext
- #endif
- #endif
-
-#elif defined(GR_GL_CUSTOM_SETUP_HEADER)
-
- #include GR_GL_CUSTOM_SETUP_HEADER
-
-#else
- #include "GrConfig.h"
-
- #undef GR_GL_FUNCTION_TYPE
- #undef GR_GL_PROC_ADDRESS
- #undef GR_GL_PROC_ADDRESS_HEADER
-
- #if GR_WIN32_BUILD
- #define GR_SUPPORT_GLDESKTOP 1
-
- #define GR_GL_PLATFORM_HEADER_SUPPORT <Windows.h>
- #define GR_GL_PLATFORM_HEADER <GL/gl.h>
-
- #define GR_GL_FUNCTION_TYPE __stdcall
- #define GR_GL_PROC_ADDRESS(X) wglGetProcAddress(#X)
- #define GR_GL_PROC_ADDRESS_HEADER <windows.h>
-
- // Force querying for the existence of these extensions on Windows
- // builds.
- #define GL_APPLE_framebuffer_multisample 1
- #define GL_EXT_framebuffer_object 1
- #define GL_OES_mapbuffer 1
- #define GL_OES_mapbuffer 1
- #elif GR_MAC_BUILD
- #define GR_SUPPORT_GLDESKTOP 1
-
- #define GR_GL_PLATFORM_HEADER <OpenGL/gl.h>
- #define GR_GL_PLATFORM_HEADER_EXT <OpenGL/glext.h>
-
- #define GR_GL_PROC_ADDRESS(X) &X
- #elif GR_IOS_BUILD
- #define GR_SUPPORT_GLES1 1
- #define GR_SUPPORT_GLES2 1
-
- #define GR_GL_PLATFORM_HEADER <OpenGLES/ES1/gl.h>
- #define GR_GL_PLATFORM_HEADER_EXT <OpenGLES/ES1/glext.h>
-
- #define GR_GL_PLATFORM_HEADER2 <OpenGLES/ES2/gl.h>
- #define GR_GL_PLATFORM_HEADER_EXT2 <OpenGLES/ES2/glext.h>
- #define GR_GL_PROC_ADDRESS(X) &X
- #elif GR_ANDROID_BUILD
- #ifndef GL_GLEXT_PROTOTYPES
- #define GL_GLEXT_PROTOTYPES
- #endif
- #define GR_SUPPORT_GLES2 1
-
- #define GR_GL_PLATFORM_HEADER <GLES2/gl2.h>
- #define GR_GL_PLATFORM_HEADER_EXT <GLES2/gl2ext.h>
-
- #define GR_GL_PROC_ADDRESS(X) eglGetProcAddress(#X)
- #define GR_GL_PROC_ADDRESS_HEADER <EGL/egl.h>
- #elif GR_QNX_BUILD
- #ifndef GL_GLEXT_PROTOTYPES
- #define GL_GLEXT_PROTOTYPES
- #endif
- #define GR_SUPPORT_GLES2 1
- // This is needed by the QNX GLES2 headers
- #define GL_API_EXT
-
- #define GR_GL_PLATFORM_HEADER <GLES2/gl2.h>
- #define GR_GL_PLATFORM_HEADER_EXT <GLES2/gl2ext.h>
-
- #define GR_GL_PROC_ADDRESS(X) eglGetProcAddress(#X)
- #define GR_GL_PROC_ADDRESS_HEADER <EGL/egl.h>
- #elif GR_LINUX_BUILD
- #ifndef GL_GLEXT_PROTOTYPES
- #define GL_GLEXT_PROTOTYPES
- #endif
-
- #define GR_GL_PLATFORM_HEADER <GL/gl.h>
- #define GR_GL_PLATFORM_HEADER_EXT <GL/glext.h>
-
- #define GR_GL_PROC_ADDRESS(X) glXGetProcAddress(reinterpret_cast<const GLubyte*>(#X))
- #define GR_SUPPORT_GLDESKTOP 1
- #define GR_GL_PROC_ADDRESS_HEADER <GL/glx.h>
- #else
- #error "unsupported GR_???_BUILD"
- #endif
-
-#endif
-
-#if !defined(GR_SUPPORT_GLDESKTOP)
- #define GR_SUPPORT_GLDESKTOP 0
-#endif
-#if !defined(GR_SUPPORT_GLES1)
- #define GR_SUPPORT_GLES1 0
-#endif
-#if !defined(GR_SUPPORT_GLES2)
- #define GR_SUPPORT_GLES2 0
-#endif
-
-#define GR_SUPPORT_GLES ((GR_SUPPORT_GLES1) || (GR_SUPPORT_GLES2))
-
-#if !GR_SUPPORT_GLES && !GR_SUPPORT_GLDESKTOP
- #error "Either desktop or ES GL must be supported"
-#elif GR_SUPPORT_GLES && GR_SUPPORT_GLDESKTOP
- #error "Cannot support both desktop and ES GL"
-#endif
-
-#endif
#define GrGLVertexBuffer_DEFINED
#include "GrVertexBuffer.h"
-#include "GrGLConfig.h"
+#include "GrGLInterface.h"
class GrGpuGL;
--- /dev/null
+/*
+ Copyright 2011 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+void GrGLSetDefaultGLInterface() {
+}
*/
-#include "GrGLInterface.h"
#include "GrTypes.h"
+#include "GrGLInterface.h"
+#include "GrGLDefines.h"
-#include "GrGLPlatformIncludes.h"
#include <stdio.h>
-#if defined(GR_GL_PLATFORM_HEADER_SUPPORT)
- #include GR_GL_PLATFORM_HEADER_SUPPORT
-#endif
-
-#if defined(GR_GL_PLATFORM_HEADER)
- #include GR_GL_PLATFORM_HEADER
-#endif
-
-#if defined(GR_GL_PLATFORM_HEADER_EXT)
- #include GR_GL_PLATFORM_HEADER_EXT
-#endif
-
-#if defined(GR_GL_PLATFORM_HEADER2)
- #include GR_GL_PLATFORM_HEADER2
-#endif
-
-#if defined(GR_GL_PLATFORM_HEADER_EXT2)
- #include GR_GL_PLATFORM_HEADER_EXT2
-#endif
-
-#if defined(GR_GL_PROC_ADDRESS_HEADER)
- #include GR_GL_PROC_ADDRESS_HEADER
-#endif
-
-#if !defined(GR_GL_PROC_ADDRESS)
- #error "Must define GR_GL_PROC_ADDRESS"
-#endif
-
-#define GR_GL_GET_PROC(PROC_NAME) \
- glBindings->f##PROC_NAME = \
- reinterpret_cast<GrGLInterface::GrGL##PROC_NAME##Proc>( \
- GR_GL_PROC_ADDRESS(gl##PROC_NAME)); \
- GrAssert(NULL != glBindings->f##PROC_NAME && \
- "Missing GL binding: " #PROC_NAME);
-
-#define GR_GL_GET_PROC_SUFFIX(PROC_NAME, SUFFIX) \
- glBindings->f##PROC_NAME = \
- reinterpret_cast<GrGLInterface::GrGL##PROC_NAME##Proc>( \
- GR_GL_PROC_ADDRESS(gl##PROC_NAME##SUFFIX)); \
- GrAssert(NULL != glBindings->f##PROC_NAME && \
- "Missing GL binding: " #PROC_NAME);
-
-#define GR_GL_GET_PROC_SYMBOL(PROC_NAME) \
- glBindings->f##PROC_NAME = reinterpret_cast<GrGLInterface::GrGL##PROC_NAME##Proc>(gl##PROC_NAME);
-
-namespace {
+GrGLInterface* gGLInterface = NULL;
void gl_version_from_string(int* major, int* minor,
const char* versionString) {
return false;
}
-GrGLInterface* gGLInterface = NULL;
-
-void InitializeGLInterfaceExtensions(GrGLInterface* glBindings) {
- int major, minor;
- const char* versionString = reinterpret_cast<const char*>(
- glBindings->fGetString(GL_VERSION));
- const char* extensionString = reinterpret_cast<const char*>(
- glBindings->fGetString(GL_EXTENSIONS));
- gl_version_from_string(&major, &minor, versionString);
-
- bool fboFound = false;
-#if GR_SUPPORT_GLDESKTOP
- if (major >= 3 || has_gl_extension_from_string("GL_ARB_framebuffer_object",
- extensionString)) {
- // GL_ARB_framebuffer_object doesn't use ARB suffix.
- GR_GL_GET_PROC(GenFramebuffers);
- GR_GL_GET_PROC(BindFramebuffer);
- GR_GL_GET_PROC(FramebufferTexture2D);
- GR_GL_GET_PROC(CheckFramebufferStatus);
- GR_GL_GET_PROC(DeleteFramebuffers);
- GR_GL_GET_PROC(RenderbufferStorage);
- GR_GL_GET_PROC(GenRenderbuffers);
- GR_GL_GET_PROC(DeleteRenderbuffers);
- GR_GL_GET_PROC(FramebufferRenderbuffer);
- GR_GL_GET_PROC(BindRenderbuffer);
- GR_GL_GET_PROC(RenderbufferStorageMultisample);
- GR_GL_GET_PROC(BlitFramebuffer);
- fboFound = true;
- }
-
- #if GL_EXT_framebuffer_object
- if (!fboFound &&
- has_gl_extension_from_string("GL_EXT_framebuffer_object",
- extensionString)) {
- GR_GL_GET_PROC_SUFFIX(GenFramebuffers, EXT);
- GR_GL_GET_PROC_SUFFIX(BindFramebuffer, EXT);
- GR_GL_GET_PROC_SUFFIX(FramebufferTexture2D, EXT);
- GR_GL_GET_PROC_SUFFIX(CheckFramebufferStatus, EXT);
- GR_GL_GET_PROC_SUFFIX(DeleteFramebuffers, EXT);
- GR_GL_GET_PROC_SUFFIX(RenderbufferStorage, EXT);
- GR_GL_GET_PROC_SUFFIX(GenRenderbuffers, EXT);
- GR_GL_GET_PROC_SUFFIX(DeleteRenderbuffers, EXT);
- GR_GL_GET_PROC_SUFFIX(FramebufferRenderbuffer, EXT);
- GR_GL_GET_PROC_SUFFIX(BindRenderbuffer, EXT);
- fboFound = true;
-
- if (has_gl_extension_from_string("GL_EXT_framebuffer_multisample",
- extensionString)) {
- GR_GL_GET_PROC_SUFFIX(RenderbufferStorageMultisample, EXT);
- }
- if (has_gl_extension_from_string("GL_EXT_framebuffer_blit",
- extensionString)) {
- GR_GL_GET_PROC_SUFFIX(BlitFramebuffer, EXT);
- }
- }
- #endif
-
- // we assume we have at least GL 1.5 or higher (VBOs introduced in 1.5)
- GrAssert((major == 1 && minor >= 5) || major >=2);
- GR_GL_GET_PROC(MapBuffer);
- GR_GL_GET_PROC(UnmapBuffer);
-#else // !GR_SUPPORT_GLDESKTOP
- #if GR_SUPPORT_GLES2
- if (!fboFound && major >= 2) {// ES 2.0 supports FBO
- GR_GL_GET_PROC(GenFramebuffers);
- GR_GL_GET_PROC(BindFramebuffer);
- GR_GL_GET_PROC(FramebufferTexture2D);
- GR_GL_GET_PROC(CheckFramebufferStatus);
- GR_GL_GET_PROC(DeleteFramebuffers);
- GR_GL_GET_PROC(RenderbufferStorage);
- GR_GL_GET_PROC(GenRenderbuffers);
- GR_GL_GET_PROC(DeleteRenderbuffers);
- GR_GL_GET_PROC(FramebufferRenderbuffer);
- GR_GL_GET_PROC(BindRenderbuffer);
- fboFound = true;
- }
- #endif
-
- #if GL_OES_framebuffer_object
- if (!fboFound &&
- has_gl_extension_from_string("GL_OES_framebuffer_object",
- extensionString)) {
- GR_GL_GET_PROC_SUFFIX(GenFramebuffers, OES);
- GR_GL_GET_PROC_SUFFIX(BindFramebuffer, OES);
- GR_GL_GET_PROC_SUFFIX(FramebufferTexture2D, OES);
- GR_GL_GET_PROC_SUFFIX(CheckFramebufferStatus, OES);
- GR_GL_GET_PROC_SUFFIX(DeleteFramebuffers, OES);
- GR_GL_GET_PROC_SUFFIX(RenderbufferStorage, OES);
- GR_GL_GET_PROC_SUFFIX(GenRenderbuffers, OES);
- GR_GL_GET_PROC_SUFFIX(DeleteRenderbuffers, OES);
- GR_GL_GET_PROC_SUFFIX(FramebufferRenderbuffer, OES);
- GR_GL_GET_PROC_SUFFIX(BindRenderbuffer, OES);
- fboFound = true;
- }
- #endif
- bool msaaFound = false;
- // Chrome advertises the equivalent of GL_EXT_framebuffer_blit plus
- // GL_EXT_framebuffer_multisample as GL_CHROMIUM_framebuffer_multisample
- // The EXT suffixes are used on the functions, however.
- #if GL_EXT_framebuffer_multisample
- if (!msaaFound &&
- has_gl_extension_from_string("GL_CHROMIUM_framebuffer_multisample",
- extensionString)) {
- GR_GL_GET_PROC_SUFFIX(RenderbufferStorageMultisample, EXT);
- GR_GL_GET_PROC_SUFFIX(BlitFramebuffer, EXT);
- msaaFound = true;
- }
- #endif
- #if GL_APPLE_framebuffer_multisample
- if (!msaaFound &&
- has_gl_extension_from_string("GL_APPLE_framebuffer_multisample",
- extensionString)) {
- GR_GL_GET_PROC_SUFFIX(RenderbufferStorageMultisample, APPLE);
- GR_GL_GET_PROC_SUFFIX(ResolveMultisampleFramebuffer, APPLE);
- msaaFound = true;
- }
- #endif
-
- #if GL_OES_mapbuffer
- if (has_gl_extension_from_string("GL_OES_mapbuffer", extensionString)) {
- GR_GL_GET_PROC_SUFFIX(MapBuffer, OES);
- GR_GL_GET_PROC_SUFFIX(UnmapBuffer, OES);
- }
- #endif
-#endif // !GR_SUPPORT_GLDESKTOP
-
- if (!fboFound) {
- // we require some form of FBO
- GrAssert(!"No FBOs supported?");
- }
-}
-
-void GrGLInitializeGLInterface(GrGLInterface* glBindings) {
- Gr_bzero(glBindings, sizeof(GrGLInterface));
-
- // Indicate the type of the exported GL functions based on macros
- // pulled in from the platform includes.
-#if GR_SUPPORT_GLDESKTOP
- glBindings->fBindingsExported = kDesktop_GrGLBinding;
-#endif
-
-#if GR_SUPPORT_GLES1 && !GR_SUPPORT_GLES2
- glBindings->fBindingsExported = kES1_GrGLBinding;
-#endif
-
-#if GR_SUPPORT_GLES2
- glBindings->fBindingsExported = kES2_GrGLBinding;
-#endif
-
-#if GR_SUPPORT_GLDESKTOP || GR_SUPPORT_GLES1
- // These entry points only exist on desktop GL implementations.
- GR_GL_GET_PROC_SYMBOL(Color4ub);
- GR_GL_GET_PROC_SYMBOL(ColorPointer);
- GR_GL_GET_PROC_SYMBOL(DisableClientState);
- GR_GL_GET_PROC_SYMBOL(EnableClientState);
- GR_GL_GET_PROC_SYMBOL(LoadMatrixf);
- GR_GL_GET_PROC_SYMBOL(MatrixMode);
- GR_GL_GET_PROC_SYMBOL(PointSize);
- GR_GL_GET_PROC_SYMBOL(ShadeModel);
- GR_GL_GET_PROC_SYMBOL(TexCoordPointer);
- GR_GL_GET_PROC_SYMBOL(TexEnvi);
- GR_GL_GET_PROC_SYMBOL(VertexPointer);
- GR_GL_GET_PROC(ClientActiveTexture);
-#endif
-
- // The following gl entry points are part of GL 1.1, and will always be
- // exported as symbols.
- // Note that on windows, the wglGetProcAddress call will fail to retrieve
- // these entry points.
- GR_GL_GET_PROC_SYMBOL(BlendFunc);
- GR_GL_GET_PROC_SYMBOL(Clear);
- GR_GL_GET_PROC_SYMBOL(ClearColor);
- GR_GL_GET_PROC_SYMBOL(ClearStencil);
- GR_GL_GET_PROC_SYMBOL(ColorMask);
- GR_GL_GET_PROC_SYMBOL(CullFace);
- GR_GL_GET_PROC_SYMBOL(DeleteTextures);
- GR_GL_GET_PROC_SYMBOL(DepthMask);
- GR_GL_GET_PROC_SYMBOL(Disable);
- GR_GL_GET_PROC_SYMBOL(DrawArrays);
- GR_GL_GET_PROC_SYMBOL(DrawElements);
- GR_GL_GET_PROC_SYMBOL(Enable);
- GR_GL_GET_PROC_SYMBOL(FrontFace);
- GR_GL_GET_PROC_SYMBOL(GenTextures);
- GR_GL_GET_PROC_SYMBOL(GetError);
- GR_GL_GET_PROC_SYMBOL(GetIntegerv);
- GR_GL_GET_PROC_SYMBOL(GetString);
- GR_GL_GET_PROC_SYMBOL(LineWidth);
- GR_GL_GET_PROC_SYMBOL(PixelStorei);
- GR_GL_GET_PROC_SYMBOL(ReadPixels);
- GR_GL_GET_PROC_SYMBOL(Scissor);
- GR_GL_GET_PROC_SYMBOL(StencilFunc);
- GR_GL_GET_PROC_SYMBOL(StencilMask);
- GR_GL_GET_PROC_SYMBOL(StencilOp);
- GR_GL_GET_PROC_SYMBOL(TexImage2D);
- GR_GL_GET_PROC_SYMBOL(TexParameteri);
- GR_GL_GET_PROC_SYMBOL(TexSubImage2D);
- GR_GL_GET_PROC_SYMBOL(Viewport);
-
- // Capture the remaining entry points as gl extensions.
- GR_GL_GET_PROC(ActiveTexture);
- GR_GL_GET_PROC(AttachShader);
- GR_GL_GET_PROC(BindAttribLocation);
- GR_GL_GET_PROC(BindBuffer);
- GR_GL_GET_PROC(BindTexture);
- GR_GL_GET_PROC(BlendColor);
- GR_GL_GET_PROC(BufferData);
- GR_GL_GET_PROC(BufferSubData);
- GR_GL_GET_PROC(CompileShader);
- GR_GL_GET_PROC(CompressedTexImage2D);
- GR_GL_GET_PROC(CreateProgram);
- GR_GL_GET_PROC(CreateShader);
- GR_GL_GET_PROC(DeleteBuffers);
- GR_GL_GET_PROC(DeleteProgram);
- GR_GL_GET_PROC(DeleteShader);
- GR_GL_GET_PROC(DisableVertexAttribArray);
- GR_GL_GET_PROC(EnableVertexAttribArray);
- GR_GL_GET_PROC(GenBuffers);
- GR_GL_GET_PROC(GetBufferParameteriv);
- GR_GL_GET_PROC(GetProgramInfoLog);
- GR_GL_GET_PROC(GetProgramiv);
- GR_GL_GET_PROC(GetShaderInfoLog);
- GR_GL_GET_PROC(GetShaderiv);
- GR_GL_GET_PROC(GetUniformLocation);
- GR_GL_GET_PROC(LinkProgram);
- GR_GL_GET_PROC(ShaderSource);
- GR_GL_GET_PROC(StencilFuncSeparate);
- GR_GL_GET_PROC(StencilMaskSeparate);
- GR_GL_GET_PROC(StencilOpSeparate);
- GR_GL_GET_PROC(Uniform1fv);
- GR_GL_GET_PROC(Uniform1i);
- GR_GL_GET_PROC(Uniform4fv);
- GR_GL_GET_PROC(UniformMatrix3fv);
- GR_GL_GET_PROC(UseProgram);
- GR_GL_GET_PROC(VertexAttrib4fv);
- GR_GL_GET_PROC(VertexAttribPointer);
-
- InitializeGLInterfaceExtensions(glBindings);
-}
-
-} // unnamed namespace
GR_API void GrGLSetGLInterface(GrGLInterface* gl_interface) {
gGLInterface = gl_interface;
return gGLInterface;
}
-void GrGLSetDefaultGLInterface() {
- static GrGLInterface gDefaultInterface;
- static bool gDefaultInitialized = false;
- GrAssert(!gDefaultInitialized);
-
- if (!gDefaultInitialized) {
- GrGLInitializeGLInterface(&gDefaultInterface);
- GrGLSetGLInterface(&gDefaultInterface);
- }
-}
-
bool has_gl_extension(const char* ext) {
const char* glstr = reinterpret_cast<const char*>(
- GrGLGetGLInterface()->fGetString(GL_EXTENSIONS));
+ GrGLGetGLInterface()->fGetString(GR_GL_EXTENSIONS));
return has_gl_extension_from_string(ext, glstr);
}
void gl_version(int* major, int* minor) {
const char* v = reinterpret_cast<const char*>(
- GrGLGetGLInterface()->fGetString(GL_VERSION));
+ GrGLGetGLInterface()->fGetString(GR_GL_VERSION));
gl_version_from_string(major, minor, v);
}
*/
#include "GrGLConfig.h"
+#include "GrGLInterface.h"
+
+void GrGLClearErr() {
+ while (GR_GL_NO_ERROR != GrGLGetGLInterface()->fGetError()) {}
+}
void GrGLCheckErr(const char* location, const char* call) {
uint32_t err = GrGLGetGLInterface()->fGetError();
}
}
+void GrGLRestoreResetRowLength() {
+ if (GR_GL_SUPPORT_DESKTOP) {
+ GR_GL(PixelStorei(GR_GL_UNPACK_ROW_LENGTH, 0));
+ }
+}
+
///////////////////////////////////////////////////////////////////////////////
bool gLogCallsGL = !!(GR_GL_LOG_CALLS_START);
#include "GrGpuGLShaders2.h"
GrGpu* GrGpu::Create(Engine engine, Platform3DContext context3D) {
- // If no GL bindings have been installed, fall-back to calling the
- // GL functions that have been linked with the executable.
- if (!GrGLGetGLInterface())
- GrGLSetDefaultGLInterface();
+
+ if (kOpenGL_Shaders_Engine == engine ||
+ kOpenGL_Fixed_Engine == engine) {
+ // If no GL bindings have been installed, fall-back to calling the
+ // GL functions that have been linked with the executable.
+ if (!GrGLGetGLInterface()) {
+ GrGLSetDefaultGLInterface();
+ // If there is no platform-default then just fail.
+ if (!GrGLGetGLInterface()) {
+ return NULL;
+ }
+ }
+ }
GrGpu* gpu = NULL;
GR_GL(CompressedTexImage2D(GR_GL_TEXTURE_2D, 0, glDesc.fUploadFormat,
glDesc.fAllocWidth, glDesc.fAllocHeight,
0, imageSize, srcData));
- GrGL_RestoreResetRowLength();
+ GrGLRestoreResetRowLength();
} else {
if (NULL != srcData && (glDesc.fAllocWidth != desc.fWidth ||
glDesc.fAllocHeight != desc.fHeight)) {
GR_GL(TexSubImage2D(GR_GL_TEXTURE_2D, 0, 0, 0, desc.fWidth,
desc.fHeight, glDesc.fUploadFormat,
glDesc.fUploadType, srcData));
- GrGL_RestoreResetRowLength();
+ GrGLRestoreResetRowLength();
uint32_t extraW = glDesc.fAllocWidth - desc.fWidth;
uint32_t extraH = glDesc.fAllocHeight - desc.fHeight;
GR_GL(TexImage2D(GR_GL_TEXTURE_2D, 0, internalFormat, glDesc.fAllocWidth,
glDesc.fAllocHeight, 0, glDesc.fUploadFormat,
glDesc.fUploadType, srcData));
- GrGL_RestoreResetRowLength();
+ GrGLRestoreResetRowLength();
}
}
#define GrGpuGL_DEFINED
#include "GrGpu.h"
-#include "GrGLConfig.h"
#include "GrGLIRect.h"
#include "GrGLTexture.h"
--- /dev/null
+/*
+ Copyright 2011 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#include "GrGLInterface.h"
+
+#include <OpenGL/gl.h>
+#include <OpenGL/glext.h>
+
+void GrGLSetDefaultGLInterface() {
+ static GrGLInterface gDefaultInterface;
+ static bool gDefaultInterfaceInit;
+ if (!gDefaultInterfaceInit) {
+ gDefaultInterface.fActiveTexture = glActiveTexture;
+ gDefaultInterface.fAttachShader = glAttachShader;
+ gDefaultInterface.fBindAttribLocation = glBindAttribLocation;
+ gDefaultInterface.fBindBuffer = glBindBuffer;
+ gDefaultInterface.fBindTexture = glBindTexture;
+ gDefaultInterface.fBlendColor = glBlendColor;
+ gDefaultInterface.fBlendFunc = glBlendFunc;
+ gDefaultInterface.fBufferData = glBufferData;
+ gDefaultInterface.fBufferSubData = glBufferSubData;
+ gDefaultInterface.fClear = glClear;
+ gDefaultInterface.fClearColor = glClearColor;
+ gDefaultInterface.fClearStencil = glClearStencil;
+ gDefaultInterface.fClientActiveTexture = glClientActiveTexture;
+ gDefaultInterface.fColorMask = glColorMask;
+ gDefaultInterface.fColorPointer = glColorPointer;
+ gDefaultInterface.fColor4ub = glColor4ub;
+ gDefaultInterface.fCompileShader = glCompileShader;
+ gDefaultInterface.fCompressedTexImage2D = glCompressedTexImage2D;
+ gDefaultInterface.fCreateProgram = glCreateProgram;
+ gDefaultInterface.fCreateShader = glCreateShader;
+ gDefaultInterface.fCullFace = glCullFace;
+ gDefaultInterface.fDeleteBuffers = glDeleteBuffers;
+ gDefaultInterface.fDeleteProgram = glDeleteProgram;
+ gDefaultInterface.fDeleteShader = glDeleteShader;
+ gDefaultInterface.fDeleteTextures = glDeleteTextures;
+ gDefaultInterface.fDepthMask = glDepthMask;
+ gDefaultInterface.fDisable = glDisable;
+ gDefaultInterface.fDisableClientState = glDisableClientState;
+ gDefaultInterface.fDisableVertexAttribArray =
+ glDisableVertexAttribArray;
+ gDefaultInterface.fDrawArrays = glDrawArrays;
+ gDefaultInterface.fDrawElements = glDrawElements;
+ gDefaultInterface.fEnable = glEnable;
+ gDefaultInterface.fEnableClientState = glEnableClientState;
+ gDefaultInterface.fEnableVertexAttribArray = glEnableVertexAttribArray;
+ gDefaultInterface.fFrontFace = glFrontFace;
+ gDefaultInterface.fGenBuffers = glGenBuffers;
+ gDefaultInterface.fGetBufferParameteriv = glGetBufferParameteriv;
+ gDefaultInterface.fGetError = glGetError;
+ gDefaultInterface.fGetIntegerv = glGetIntegerv;
+ gDefaultInterface.fGetProgramInfoLog = glGetProgramInfoLog;
+ gDefaultInterface.fGetProgramiv = glGetProgramiv;
+ gDefaultInterface.fGetShaderInfoLog = glGetShaderInfoLog;
+ gDefaultInterface.fGetShaderiv = glGetShaderiv;
+ gDefaultInterface.fGetString = glGetString;
+ gDefaultInterface.fGenTextures = glGenTextures;
+ gDefaultInterface.fGetUniformLocation = glGetUniformLocation;
+ gDefaultInterface.fLineWidth = glLineWidth;
+ gDefaultInterface.fLinkProgram = glLinkProgram;
+ gDefaultInterface.fLoadMatrixf = glLoadMatrixf;
+ gDefaultInterface.fMapBuffer = glMapBuffer;
+ gDefaultInterface.fMatrixMode = glMatrixMode;
+ gDefaultInterface.fPointSize = glPointSize;
+ gDefaultInterface.fPixelStorei = glPixelStorei;
+ gDefaultInterface.fReadPixels = glReadPixels;
+ gDefaultInterface.fScissor = glScissor;
+ gDefaultInterface.fShadeModel = glShadeModel;
+ gDefaultInterface.fShaderSource = glShaderSource;
+ gDefaultInterface.fStencilFunc = glStencilFunc;
+ gDefaultInterface.fStencilFuncSeparate = glStencilFuncSeparate;
+ gDefaultInterface.fStencilMask = glStencilMask;
+ gDefaultInterface.fStencilMaskSeparate = glStencilMaskSeparate;
+ gDefaultInterface.fStencilOp = glStencilOp;
+ gDefaultInterface.fStencilOpSeparate = glStencilOpSeparate;
+ gDefaultInterface.fTexCoordPointer = glTexCoordPointer;
+ gDefaultInterface.fTexEnvi = glTexEnvi;
+ // mac uses GLenum for internalFormat param (non-standard)
+ // amounts to int vs. uint.
+ gDefaultInterface.fTexImage2D =
+ (GrGLInterface::GrGLTexImage2DProc)glTexImage2D;
+ gDefaultInterface.fTexParameteri = glTexParameteri;
+ gDefaultInterface.fTexSubImage2D = glTexSubImage2D;
+ gDefaultInterface.fUniform1fv = glUniform1fv;
+ gDefaultInterface.fUniform1i = glUniform1i;
+ gDefaultInterface.fUniform4fv = glUniform4fv;
+ gDefaultInterface.fUniformMatrix3fv = glUniformMatrix3fv;
+ gDefaultInterface.fUnmapBuffer = glUnmapBuffer;
+ gDefaultInterface.fUseProgram = glUseProgram;
+ gDefaultInterface.fVertexAttrib4fv = glVertexAttrib4fv;
+ gDefaultInterface.fVertexAttribPointer = glVertexAttribPointer;
+ gDefaultInterface.fVertexPointer = glVertexPointer;
+ gDefaultInterface.fViewport = glViewport;
+
+#if GL_ARB_framebuffer_object
+ gDefaultInterface.fGenFramebuffers = glGenFramebuffers;
+ gDefaultInterface.fBindFramebuffer = glBindFramebuffer;
+ gDefaultInterface.fFramebufferTexture2D = glFramebufferTexture2D;
+ gDefaultInterface.fCheckFramebufferStatus = glCheckFramebufferStatus;
+ gDefaultInterface.fDeleteFramebuffers = glDeleteFramebuffers;
+ gDefaultInterface.fRenderbufferStorage = glRenderbufferStorage;
+ gDefaultInterface.fGenRenderbuffers = glGenRenderbuffers;
+ gDefaultInterface.fDeleteRenderbuffers = glDeleteRenderbuffers;
+ gDefaultInterface.fFramebufferRenderbuffer = glFramebufferRenderbuffer;
+ gDefaultInterface.fBindRenderbuffer = glBindRenderbuffer;
+ gDefaultInterface.fRenderbufferStorageMultisample =
+ glRenderbufferStorageMultisample;
+ gDefaultInterface.fBlitFramebuffer = glBlitFramebuffer;
+#elif GL_EXT_framebuffer_object
+ gDefaultInterface.fGenFramebuffers = glGenFramebuffersEXT;
+ gDefaultInterface.fBindFramebuffer = glBindFramebufferEXT;
+ gDefaultInterface.fFramebufferTexture2D = glFramebufferTexture2DEXT;
+ gDefaultInterface.fCheckFramebufferStatus = glCheckFramebufferStatusEXT;
+ gDefaultInterface.fDeleteFramebuffers = glDeleteFramebuffersEXT;
+ gDefaultInterface.fRenderbufferStorage = glRenderbufferStorageEXT;
+ gDefaultInterface.fGenRenderbuffers = glGenRenderbuffersEXT;
+ gDefaultInterface.fDeleteRenderbuffers = glDeleteRenderbuffers;
+ gDefaultInterface.fFramebufferRenderbuffer =
+ glFramebufferRenderbufferEXT;
+ gDefaultInterface.fBindRenderbuffer = glBindRenderbufferEXT;
+ #if GL_EXT_framebuffer_multisample
+ gDefaultInterface.fRenderbufferStorageMultisample =
+ glRenderbufferStorageMultisampleEXT;
+ #endif
+ #if GL_EXT_framebuffer_blit
+ gDefaultInterface.fBlitFramebuffer = glBlitFramebufferEXT;
+ #endif
+#endif
+ gDefaultInterface.fBindingsExported = kDesktop_GrGLBinding;
+
+ gDefaultInterfaceInit = true;
+ }
+ GrGLSetGLInterface(&gDefaultInterface);
+}
--- /dev/null
+/*
+ Copyright 2011 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#include "GrGLInterface.h"
+
+#include <Windows.h>
+#include <GL/GL.h>
+
+/*
+ * Windows makes the GL funcs all be __stdcall instead of __cdecl :(
+ * This implementation will only work if GR_GL_FUNCTION_TYPE is __stdcall.
+ * Otherwise, a springboard would be needed that hides the calling convention.
+ */
+
+#define GR_GL_GET_PROC(F) gDefaultInterface.f ## F = (GrGLInterface::GrGL ## F ## Proc) wglGetProcAddress("gl" #F);
+#define GR_GL_GET_PROC_SUFFIX(F, S) gDefaultInterface.f ## F = (GrGLInterface::GrGL ## F ## Proc) wglGetProcAddress("gl" #F #S);
+
+void GrGLSetDefaultGLInterface() {
+ static GrGLInterface gDefaultInterface;
+ static bool gDefaultInterfaceInit;
+ if (!gDefaultInterfaceInit) {
+
+ // wglGetProcAddress requires a context.
+ if (NULL != wglGetCurrentContext()) {
+ int major, minor;
+ const char* versionString = (const char*) glGetString(GL_VERSION);
+ const char* extString = (const char*) glGetString(GL_EXTENSIONS);
+ gl_version_from_string(&major, &minor, versionString);
+
+ if (major == 1 && minor < 5) {
+ // We must have array and element_array buffer objects.
+ return;
+ }
+
+ // Functions that are part of GL 1.1 will return NULL in
+ // wglGetProcAddress
+ gDefaultInterface.fBlendFunc = glBlendFunc;
+ gDefaultInterface.fClear = glClear;
+ gDefaultInterface.fClearColor = glClearColor;
+ gDefaultInterface.fClearStencil = glClearStencil;
+ gDefaultInterface.fColor4ub = glColor4ub;
+ gDefaultInterface.fColorMask = glColorMask;
+ gDefaultInterface.fColorPointer = glColorPointer;
+ gDefaultInterface.fCullFace = glCullFace;
+ gDefaultInterface.fDeleteTextures = glDeleteTextures;
+ gDefaultInterface.fDepthMask = glDepthMask;
+ gDefaultInterface.fDisable = glDisable;
+ gDefaultInterface.fDisableClientState = glDisableClientState;
+ gDefaultInterface.fDrawArrays = glDrawArrays;
+ gDefaultInterface.fDrawElements = glDrawElements;
+ gDefaultInterface.fEnable = glEnable;
+ gDefaultInterface.fEnableClientState = glEnableClientState;
+ gDefaultInterface.fFrontFace = glFrontFace;
+ gDefaultInterface.fGenTextures = glGenTextures;
+ gDefaultInterface.fGetError = glGetError;
+ gDefaultInterface.fGetIntegerv = glGetIntegerv;
+ gDefaultInterface.fGetString = glGetString;
+ gDefaultInterface.fLineWidth = glLineWidth;
+ gDefaultInterface.fLoadMatrixf = glLoadMatrixf;
+ gDefaultInterface.fMatrixMode = glMatrixMode;
+ gDefaultInterface.fPixelStorei = glPixelStorei;
+ gDefaultInterface.fPointSize = glPointSize;
+ gDefaultInterface.fReadPixels = glReadPixels;
+ gDefaultInterface.fScissor = glScissor;
+ gDefaultInterface.fShadeModel = glShadeModel;
+ gDefaultInterface.fStencilFunc = glStencilFunc;
+ gDefaultInterface.fStencilMask = glStencilMask;
+ gDefaultInterface.fStencilOp = glStencilOp;
+ gDefaultInterface.fTexImage2D = glTexImage2D;
+ gDefaultInterface.fTexParameteri = glTexParameteri;
+ gDefaultInterface.fTexCoordPointer = glTexCoordPointer;
+ gDefaultInterface.fTexEnvi = glTexEnvi;
+ gDefaultInterface.fTexSubImage2D = glTexSubImage2D;
+ gDefaultInterface.fViewport = glViewport;
+ gDefaultInterface.fVertexPointer = glVertexPointer;
+
+ GR_GL_GET_PROC(ActiveTexture);
+ GR_GL_GET_PROC(AttachShader);
+ GR_GL_GET_PROC(BindAttribLocation);
+ GR_GL_GET_PROC(BindBuffer);
+ GR_GL_GET_PROC(BindTexture);
+ GR_GL_GET_PROC(BlendColor);
+ GR_GL_GET_PROC(BufferData);
+ GR_GL_GET_PROC(BufferSubData);
+ GR_GL_GET_PROC(ClientActiveTexture);
+ GR_GL_GET_PROC(CompileShader);
+ GR_GL_GET_PROC(CompressedTexImage2D);
+ GR_GL_GET_PROC(CreateProgram);
+ GR_GL_GET_PROC(CreateShader);
+ GR_GL_GET_PROC(DeleteBuffers);
+ GR_GL_GET_PROC(DeleteProgram);
+ GR_GL_GET_PROC(DeleteShader);
+ GR_GL_GET_PROC(DisableVertexAttribArray);
+ GR_GL_GET_PROC(EnableVertexAttribArray);
+ GR_GL_GET_PROC(GenBuffers);
+ GR_GL_GET_PROC(GetBufferParameteriv);
+ GR_GL_GET_PROC(GetProgramInfoLog);
+ GR_GL_GET_PROC(GetProgramiv);
+ GR_GL_GET_PROC(GetShaderInfoLog);
+ GR_GL_GET_PROC(GetShaderiv);
+ GR_GL_GET_PROC(GetUniformLocation);
+ GR_GL_GET_PROC(LinkProgram);
+ GR_GL_GET_PROC(ShaderSource);
+ GR_GL_GET_PROC(StencilFuncSeparate);
+ GR_GL_GET_PROC(StencilMaskSeparate);
+ GR_GL_GET_PROC(StencilOpSeparate);
+ GR_GL_GET_PROC(Uniform1fv);
+ GR_GL_GET_PROC(Uniform1i);
+ GR_GL_GET_PROC(Uniform4fv);
+ GR_GL_GET_PROC(UniformMatrix3fv);
+ GR_GL_GET_PROC(UseProgram);
+ GR_GL_GET_PROC(VertexAttrib4fv);
+ GR_GL_GET_PROC(VertexAttribPointer);
+
+ // First look for GL3.0 FBO or GL_ARB_framebuffer_object (same since
+ // GL_ARB_framebuffer_object doesn't use ARB suffix.)
+ if (major >= 3 || has_gl_extension("GL_ARB_framebuffer_object")) {
+ GR_GL_GET_PROC(GenFramebuffers);
+ GR_GL_GET_PROC(BindFramebuffer);
+ GR_GL_GET_PROC(FramebufferTexture2D);
+ GR_GL_GET_PROC(CheckFramebufferStatus);
+ GR_GL_GET_PROC(DeleteFramebuffers);
+ GR_GL_GET_PROC(RenderbufferStorage);
+ GR_GL_GET_PROC(GenRenderbuffers);
+ GR_GL_GET_PROC(DeleteRenderbuffers);
+ GR_GL_GET_PROC(FramebufferRenderbuffer);
+ GR_GL_GET_PROC(BindRenderbuffer);
+ GR_GL_GET_PROC(RenderbufferStorageMultisample);
+ GR_GL_GET_PROC(BlitFramebuffer);
+ } else if (has_gl_extension_from_string("GL_EXT_framebuffer_object",
+ extString)) {
+ GR_GL_GET_PROC_SUFFIX(GenFramebuffers, EXT);
+ GR_GL_GET_PROC_SUFFIX(BindFramebuffer, EXT);
+ GR_GL_GET_PROC_SUFFIX(FramebufferTexture2D, EXT);
+ GR_GL_GET_PROC_SUFFIX(CheckFramebufferStatus, EXT);
+ GR_GL_GET_PROC_SUFFIX(DeleteFramebuffers, EXT);
+ GR_GL_GET_PROC_SUFFIX(RenderbufferStorage, EXT);
+ GR_GL_GET_PROC_SUFFIX(GenRenderbuffers, EXT);
+ GR_GL_GET_PROC_SUFFIX(DeleteRenderbuffers, EXT);
+ GR_GL_GET_PROC_SUFFIX(FramebufferRenderbuffer, EXT);
+ GR_GL_GET_PROC_SUFFIX(BindRenderbuffer, EXT);
+ if (has_gl_extension_from_string("GL_EXT_framebuffer_multisample",
+ extString)) {
+ GR_GL_GET_PROC_SUFFIX(RenderbufferStorageMultisample, EXT);
+ }
+ if (has_gl_extension_from_string("GL_EXT_framebuffer_blit",
+ extString)) {
+ GR_GL_GET_PROC_SUFFIX(BlitFramebuffer, EXT);
+ }
+ } else {
+ // we must have FBOs
+ return;
+ }
+ GR_GL_GET_PROC(MapBuffer);
+ GR_GL_GET_PROC(UnmapBuffer);
+
+ gDefaultInterface.fBindingsExported = kDesktop_GrGLBinding;
+
+ gDefaultInterfaceInit = true;
+ }
+ }
+ if (gDefaultInterfaceInit) {
+ GrGLSetGLInterface(&gDefaultInterface);
+ }
+}
'../include/images/SkJpegUtility.h',
'../src/images/SkFDStream.cpp',
+ '../src/images/SkImageDecoder_libgif.cpp',
'../src/images/SkImageDecoder_libjpeg.cpp',
'../src/images/SkImageDecoder_libpng.cpp',
'../src/images/SkImageDecoder_libpvjpeg.c',
'../gpu/include/GrGLIndexBuffer.h',
'../gpu/include/GrGLInterface.h',
'../gpu/include/GrGLIRect.h',
- '../gpu/include/GrGLPlatformIncludes.h',
'../gpu/include/GrGLTexture.h',
'../gpu/include/GrGLVertexBuffer.h',
'../gpu/include/GrGlyph.h',
'../gpu/include/GrPathIter.h',
'../gpu/include/GrPathRenderer.h',
'../gpu/include/GrPathSink.h',
- '../gpu/include/GrPathUtils.h',
'../gpu/include/GrPlotMgr.h',
'../gpu/include/GrPoint.h',
'../gpu/include/GrRandom.h',
'../gpu/src/GrCreatePathRenderer_none.cpp',
'../gpu/src/GrDrawTarget.cpp',
'../gpu/src/GrGLEffect.h',
+ '../gpu/src/GrGLDefaultInterface_none.cpp',
'../gpu/src/GrGLIndexBuffer.cpp',
'../gpu/src/GrGLInterface.cpp',
'../gpu/src/GrGLProgram.cpp',
'../gpu/src/GrPath.cpp',
'../gpu/src/GrPathRenderer.cpp',
'../gpu/src/GrPathUtils.cpp',
+ '../gpu/src/GrPathUtils.h',
'../gpu/src/GrPrintf_printf.cpp',
'../gpu/src/GrRectanizer.cpp',
'../gpu/src/GrRedBlackTree.h',
'../gpu/src/GrTextStrike_impl.h',
'../gpu/src/GrTextureCache.cpp',
'../gpu/src/gr_unittests.cpp',
+
+ '../gpu/src/mac/GrGLDefaultInterface_mac.cpp',
+
+ '../gpu/src/win/GrGLDefaultInterface_win.cpp',
],
'defines': [
'GR_IMPLEMENTATION=1',
'$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
],
},
+ 'sources!': [
+ '../gpu/src/GrGLDefaultInterface_none.cpp',
+ ],
}],
[ 'OS == "win"', {
'defines': [
'GR_WIN32_BUILD=1',
+ 'GR_GL_FUNCTION_TYPE=__stdcall',
+ ],
+ 'sources!': [
+ '../gpu/src/GrGLDefaultInterface_none.cpp',
],
},],
+ [ 'OS != "win"', {
+ 'sources!': [
+ '../gpu/src/win/GrGLDefaultInterface_win.cpp',
+ ],
+ }],
+ [ 'OS != "mac"', {
+ 'sources!': [
+ '../gpu/src/mac/GrGLDefaultInterface_mac.cpp',
+ ],
+ }],
],
'direct_dependent_settings': {
'conditions': [
[ 'OS == "win"', {
'defines': [
'GR_WIN32_BUILD=1',
+ 'GR_GL_FUNCTION_TYPE=__stdcall',
],
},],
],
<Optimization>Disabled</Optimization>\r
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;GR_DEBUG=1;GR_IMPLEMENTATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;GR_DEBUG=1;GR_IMPLEMENTATION=1;GR_GL_FUNCTION_TYPE=__stdcall;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<AdditionalIncludeDirectories>..\..\include\core;..\..\include\xml;..\..\include\utils;..\..\include\config;..\..\include\views;..\..\src\core;..\..\include\images;..\..\include\effects;..\..\include\gpu;..\..\include\pdf;..\..\gpu\include;..\..\include\ports</AdditionalIncludeDirectories>\r
</ClCompile>\r
<Link>\r
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
<FunctionLevelLinking>true</FunctionLevelLinking>\r
<IntrinsicFunctions>true</IntrinsicFunctions>\r
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;GR_RELEASE=1;GR_IMPLEMENTATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;GR_RELEASE=1;GR_IMPLEMENTATION=1;GR_GL_FUNCTION_TYPE=__stdcall;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<AdditionalIncludeDirectories>..\..\include\core;..\..\include\xml;..\..\include\utils;..\..\include\config;..\..\include\views;..\..\src\core;..\..\include\images;..\..\include\effects;..\..\include\gpu;..\..\include\pdf;..\..\gpu\include;..\..\include\ports</AdditionalIncludeDirectories>\r
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
</ClCompile>\r
<ClInclude Include="..\..\gpu\include\GrUserConfig.h" />\r
<ClInclude Include="..\..\gpu\include\GrVertexBuffer.h" />\r
<ClInclude Include="..\..\gpu\include\SkUIView.h" />\r
+ <ClInclude Include="..\..\gpu\src\GrBinHashKey.h" />\r
<ClInclude Include="..\..\gpu\src\GrBufferAllocPool.h" />\r
+ <ClInclude Include="..\..\gpu\src\GrGLEffect.h" />\r
<ClInclude Include="..\..\gpu\src\GrGpuGL.h" />\r
<ClInclude Include="..\..\gpu\src\GrGpuGLFixed.h" />\r
+ <ClInclude Include="..\..\gpu\src\GrGpuGLShaders.h" />\r
<ClInclude Include="..\..\gpu\src\GrGpuGLShaders2.h" />\r
+ <ClInclude Include="..\..\gpu\src\GrPathUtils.h" />\r
<ClInclude Include="..\..\gpu\src\GrRedBlackTree.h" />\r
<ClInclude Include="..\..\gpu\src\GrTextStrike_impl.h" />\r
<ClInclude Include="..\..\include\gpu\SkGpuCanvas.h" />\r
<ClCompile Include="..\..\gpu\src\GrMemory.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrPath.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrPathRenderer.cpp" />\r
+ <ClCompile Include="..\..\gpu\src\GrPathUtils.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrRectanizer.cpp" />\r
+ <ClCompile Include="..\..\gpu\src\GrResource.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrStencil.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrTextContext.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrTextStrike.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrTextureCache.cpp" />\r
<ClCompile Include="..\..\gpu\src\gr_unittests.cpp" />\r
+ <ClCompile Include="..\..\gpu\src\win\GrGLDefaultInterface_win.cpp" />\r
<ClCompile Include="..\..\samplecode\OverView.cpp" />\r
<ClCompile Include="..\..\samplecode\SampleAll.cpp" />\r
<ClCompile Include="..\..\samplecode\SampleApp.cpp" />\r
<ClCompile Include="..\..\src\core\SkMath.cpp" />\r
<ClCompile Include="..\..\src\core\SkMatrix.cpp" />\r
<ClCompile Include="..\..\src\core\SkMemory_stdlib.cpp" />\r
+ <ClCompile Include="..\..\src\core\SkMetaData.cpp" />\r
<ClCompile Include="..\..\src\core\SkPackBits.cpp" />\r
<ClCompile Include="..\..\src\core\SkPaint.cpp" />\r
<ClCompile Include="..\..\src\core\SkPath.cpp" />\r
<ClCompile Include="..\..\src\utils\win\SkOSWindow_Win.cpp" />\r
<ClCompile Include="..\..\src\views\SkEvent.cpp" />\r
<ClCompile Include="..\..\src\views\SkEventSink.cpp" />\r
- <ClCompile Include="..\..\src\views\SkMetaData.cpp" />\r
<ClCompile Include="..\..\src\views\SkOSMenu.cpp" />\r
<ClCompile Include="..\..\src\views\SkTagList.cpp" />\r
<ClCompile Include="..\..\src\views\SkTextBox.cpp" />\r
<ClCompile Include="..\..\src\utils\win\SkOSWindow_Win.cpp" />\r
<ClCompile Include="..\..\src\views\SkEvent.cpp" />\r
<ClCompile Include="..\..\src\views\SkEventSink.cpp" />\r
- <ClCompile Include="..\..\src\views\SkMetaData.cpp" />\r
<ClCompile Include="..\..\src\views\SkOSMenu.cpp" />\r
<ClCompile Include="..\..\src\views\SkTagList.cpp" />\r
<ClCompile Include="..\..\src\views\SkTextBox.cpp" />\r
<ClCompile Include="..\..\gpu\src\GrCreatePathRenderer_none.cpp">\r
<Filter>Gr\src</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\gpu\src\win\GrGLDefaultInterface_win.cpp">\r
+ <Filter>Gr\src</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\core\SkMetaData.cpp" />\r
+ <ClCompile Include="..\..\gpu\src\GrResource.cpp">\r
+ <Filter>Gr\src</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\gpu\src\GrPathUtils.cpp">\r
+ <Filter>Gr\src</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\..\gpu\include\FlingState.h" />\r
<ClInclude Include="..\..\gpu\include\GrPathRenderer.h">\r
<Filter>Gr\include</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\gpu\src\GrBinHashKey.h">\r
+ <Filter>Gr\src_headers</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\gpu\src\GrGLEffect.h">\r
+ <Filter>Gr\src_headers</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\gpu\src\GrGpuGLShaders.h">\r
+ <Filter>Gr\src_headers</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\gpu\src\GrPathUtils.h">\r
+ <Filter>Gr\src_headers</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<None Include="ReadMe.txt" />\r
00216E5E130F0B03009A2160 /* GrGLIRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 00216E5D130F0B03009A2160 /* GrGLIRect.h */; };
7D669346132ABD5D003AC2F5 /* GrGLInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D669345132ABD5D003AC2F5 /* GrGLInterface.cpp */; };
7D66934C132ABD8F003AC2F5 /* GrGLInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D66934B132ABD8F003AC2F5 /* GrGLInterface.h */; };
- 7D66934E132ABDA7003AC2F5 /* GrGLPlatformIncludes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D66934D132ABDA7003AC2F5 /* GrGLPlatformIncludes.h */; };
7D6EBF5A13330E8400AEAADD /* GrGLDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D6EBF5913330E8400AEAADD /* GrGLDefines.h */; };
D5134DB1134281FD0041146E /* GrResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D5134DB0134281FD0041146E /* GrResource.cpp */; };
D5134DB5134282410041146E /* GrResource.h in Headers */ = {isa = PBXBuildFile; fileRef = D5134DB4134282410041146E /* GrResource.h */; };
D58CAF9A12E7212100CB9277 /* GrGLUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D58CAF9812E7212100CB9277 /* GrGLUtil.cpp */; };
D59BD3F4133BBB49003B546A /* GrPathRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D59BD3F3133BBB49003B546A /* GrPathRenderer.h */; };
D59BD413133BD384003B546A /* GrCreatePathRenderer_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D59BD412133BD384003B546A /* GrCreatePathRenderer_none.cpp */; };
+ D5E5B5BC13462F1C00A1A3BF /* GrGLDefaultInterface_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D5E5B5BB13462F1C00A1A3BF /* GrGLDefaultInterface_mac.cpp */; };
D5ED886F1313F92C00B98D64 /* GrRedBlackTree.h in Headers */ = {isa = PBXBuildFile; fileRef = D5ED886E1313F92C00B98D64 /* GrRedBlackTree.h */; };
D5ED88EB13144FD600B98D64 /* GrPathRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D5ED88E913144FD600B98D64 /* GrPathRenderer.cpp */; };
D5FAF20C130726C6001550A4 /* GrGeometryBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = D5FAF20B130726C6001550A4 /* GrGeometryBuffer.h */; };
00216E5D130F0B03009A2160 /* GrGLIRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrGLIRect.h; path = ../../gpu/include/GrGLIRect.h; sourceTree = SOURCE_ROOT; };
7D669345132ABD5D003AC2F5 /* GrGLInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrGLInterface.cpp; path = ../../gpu/src/GrGLInterface.cpp; sourceTree = SOURCE_ROOT; };
7D66934B132ABD8F003AC2F5 /* GrGLInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrGLInterface.h; path = ../../gpu/include/GrGLInterface.h; sourceTree = SOURCE_ROOT; };
- 7D66934D132ABDA7003AC2F5 /* GrGLPlatformIncludes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrGLPlatformIncludes.h; path = ../../gpu/include/GrGLPlatformIncludes.h; sourceTree = SOURCE_ROOT; };
7D6EBF5913330E8400AEAADD /* GrGLDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrGLDefines.h; path = ../../gpu/include/GrGLDefines.h; sourceTree = SOURCE_ROOT; };
D2AAC046055464E500DB518D /* libgpu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgpu.a; sourceTree = BUILT_PRODUCTS_DIR; };
D5134DB0134281FD0041146E /* GrResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrResource.cpp; path = ../../gpu/src/GrResource.cpp; sourceTree = SOURCE_ROOT; };
D58CAF9812E7212100CB9277 /* GrGLUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrGLUtil.cpp; path = ../../gpu/src/GrGLUtil.cpp; sourceTree = SOURCE_ROOT; };
D59BD3F3133BBB49003B546A /* GrPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrPathRenderer.h; path = ../../gpu/include/GrPathRenderer.h; sourceTree = SOURCE_ROOT; };
D59BD412133BD384003B546A /* GrCreatePathRenderer_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrCreatePathRenderer_none.cpp; path = ../../gpu/src/GrCreatePathRenderer_none.cpp; sourceTree = SOURCE_ROOT; };
+ D5E5B5BB13462F1C00A1A3BF /* GrGLDefaultInterface_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrGLDefaultInterface_mac.cpp; path = ../../gpu/src/mac/GrGLDefaultInterface_mac.cpp; sourceTree = SOURCE_ROOT; };
D5ED886E1313F92C00B98D64 /* GrRedBlackTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrRedBlackTree.h; path = ../../gpu/src/GrRedBlackTree.h; sourceTree = SOURCE_ROOT; };
D5ED88E913144FD600B98D64 /* GrPathRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrPathRenderer.cpp; path = ../../gpu/src/GrPathRenderer.cpp; sourceTree = SOURCE_ROOT; };
D5FAF20B130726C6001550A4 /* GrGeometryBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrGeometryBuffer.h; path = ../../gpu/include/GrGeometryBuffer.h; sourceTree = SOURCE_ROOT; };
D5134DB4134282410041146E /* GrResource.h */,
D59BD3F3133BBB49003B546A /* GrPathRenderer.h */,
7D6EBF5913330E8400AEAADD /* GrGLDefines.h */,
- 7D66934D132ABDA7003AC2F5 /* GrGLPlatformIncludes.h */,
7D66934B132ABD8F003AC2F5 /* GrGLInterface.h */,
00216E5D130F0B03009A2160 /* GrGLIRect.h */,
00115E3912C116CA008296FE /* GrAllocator.h */,
08FB7795FE84155DC02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
+ D5E5B5BB13462F1C00A1A3BF /* GrGLDefaultInterface_mac.cpp */,
D5134DB0134281FD0041146E /* GrResource.cpp */,
D51B4C3A1342649500718A57 /* GrPathUtils.cpp */,
D51B4C3B1342649500718A57 /* GrPathUtils.h */,
D5ED886F1313F92C00B98D64 /* GrRedBlackTree.h in Headers */,
D542EAAD131C87E90065FC9D /* GrStencil.h in Headers */,
7D66934C132ABD8F003AC2F5 /* GrGLInterface.h in Headers */,
- 7D66934E132ABDA7003AC2F5 /* GrGLPlatformIncludes.h in Headers */,
7D6EBF5A13330E8400AEAADD /* GrGLDefines.h in Headers */,
D59BD3F4133BBB49003B546A /* GrPathRenderer.h in Headers */,
D51B4C3D1342649500718A57 /* GrPathUtils.h in Headers */,
D59BD413133BD384003B546A /* GrCreatePathRenderer_none.cpp in Sources */,
D51B4C3C1342649500718A57 /* GrPathUtils.cpp in Sources */,
D5134DB1134281FD0041146E /* GrResource.cpp in Sources */,
+ D5E5B5BC13462F1C00A1A3BF /* GrGLDefaultInterface_mac.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};