Remove dependence on platform GL headers. Remove code that attempts to infer GL funct...
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 4 Apr 2011 17:13:52 +0000 (17:13 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 4 Apr 2011 17:13:52 +0000 (17:13 +0000)
Review URL: http://codereview.appspot.com/4354048/

git-svn-id: http://skia.googlecode.com/svn/trunk@1045 2bbb7eff-a529-9590-31e7-b0007b416f81

20 files changed:
Makefile
gpu/include/GrGLConfig.h
gpu/include/GrGLConfig_chrome.h
gpu/include/GrGLIRect.h
gpu/include/GrGLIndexBuffer.h
gpu/include/GrGLInterface.h
gpu/include/GrGLPlatformIncludes.h [deleted file]
gpu/include/GrGLVertexBuffer.h
gpu/src/GrGLDefaultInterface_none.cpp [new file with mode: 0644]
gpu/src/GrGLInterface.cpp
gpu/src/GrGLUtil.cpp
gpu/src/GrGpuFactory.cpp
gpu/src/GrGpuGL.cpp
gpu/src/GrGpuGL.h
gpu/src/mac/GrGLDefaultInterface_mac.cpp [new file with mode: 0644]
gpu/src/win/GrGLDefaultInterface_win.cpp [new file with mode: 0644]
gyp/skia.gyp
vs/SampleApp/SampleApp.vcxproj
vs/SampleApp/SampleApp.vcxproj.filters
xcode/gpu/gpu.xcodeproj/project.pbxproj

index bd46b02..e51aedd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -103,6 +103,8 @@ ifeq ($(SKIA_BUILD_FOR),mac)
         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
@@ -124,6 +126,8 @@ else
         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.
index f43e88e..f251a23 100644 (file)
 #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;
@@ -138,14 +148,10 @@ static inline void GrGLClearErr() {
 ////////////////////////////////////////////////////////////////////////////////
 
 /**
- *  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();
 
 ////////////////////////////////////////////////////////////////////////////////
 
index 3e42027..08f7547 100644 (file)
@@ -1,20 +1,6 @@
 #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
 
index f9213e3..ec60029 100644 (file)
@@ -18,7 +18,7 @@
 #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
index 92aadcf..3565059 100644 (file)
@@ -19,7 +19,7 @@
 #define GrGLIndexBuffer_DEFINED
 
 #include "GrIndexBuffer.h"
-#include "GrGLConfig.h"
+#include "GrGLInterface.h"
 
 class GrGpuGL;
 
index 700ce9e..c9592a5 100644 (file)
@@ -18,8 +18,7 @@
 #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);
 
+
 ////////////////////////////////////////////////////////////////////////////////
 
 /*
@@ -43,10 +49,14 @@ GR_API GrGLInterface* GrGLGetGLInterface();
 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;
@@ -63,6 +73,8 @@ typedef float GrGLclampf;
 typedef double GrGLdouble;
 typedef double GrGLclampd;
 typedef void GrGLvoid;
+typedef long GrGLintptr;
+typedef long GrGLsizeiptr;
 
 enum GrGLBinding {
     kDesktop_GrGLBinding = 0x01,
@@ -88,8 +100,8 @@ struct GrGLInterface {
     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);
@@ -117,9 +129,9 @@ struct GrGLInterface {
     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);
@@ -191,8 +203,8 @@ struct GrGLInterface {
     GrGLBindAttribLocationProc fBindAttribLocation;
     GrGLBindBufferProc fBindBuffer;
     GrGLBindTextureProc fBindTexture;
-    GrGLBlendFuncProc fBlendFunc;
     GrGLBlendColorProc fBlendColor;
+    GrGLBlendFuncProc fBlendFunc;
     GrGLBufferDataProc fBufferData;
     GrGLBufferSubDataProc fBufferSubData;
     GrGLClearProc fClear;
@@ -286,6 +298,11 @@ struct GrGLInterface {
     // 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"
diff --git a/gpu/include/GrGLPlatformIncludes.h b/gpu/include/GrGLPlatformIncludes.h
deleted file mode 100644 (file)
index 13ce694..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-    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
index 183caba..b2ada31 100644 (file)
@@ -19,7 +19,7 @@
 #define GrGLVertexBuffer_DEFINED
 
 #include "GrVertexBuffer.h"
-#include "GrGLConfig.h"
+#include "GrGLInterface.h"
 
 class GrGpuGL;
 
diff --git a/gpu/src/GrGLDefaultInterface_none.cpp b/gpu/src/GrGLDefaultInterface_none.cpp
new file mode 100644 (file)
index 0000000..d355589
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+    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() {
+}
index 8be0f2b..5dfc03c 100644 (file)
  */
 
 
-#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) {
@@ -117,246 +72,6 @@ bool has_gl_extension_from_string(const char* ext,
     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;
@@ -366,26 +81,15 @@ GR_API GrGLInterface* GrGLGetGLInterface() {
     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);
 }
index 8b68845..5234453 100644 (file)
  */
 
 #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();
@@ -30,6 +35,12 @@ void GrGLCheckErr(const char* location, const char* call) {
     }
 }
 
+void GrGLRestoreResetRowLength() {
+    if (GR_GL_SUPPORT_DESKTOP) {
+        GR_GL(PixelStorei(GR_GL_UNPACK_ROW_LENGTH, 0));
+    }
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 
 bool gLogCallsGL = !!(GR_GL_LOG_CALLS_START);
index eb024f7..1715333 100644 (file)
 #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;
 
index 41cb32a..50e7386 100644 (file)
@@ -737,7 +737,7 @@ GrTexture* GrGpuGL::createTextureHelper(const TextureDesc& desc,
         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)) {
@@ -747,7 +747,7 @@ GrTexture* GrGpuGL::createTextureHelper(const TextureDesc& desc,
             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;
@@ -802,7 +802,7 @@ GrTexture* GrGpuGL::createTextureHelper(const TextureDesc& desc,
             GR_GL(TexImage2D(GR_GL_TEXTURE_2D, 0, internalFormat, glDesc.fAllocWidth,
                              glDesc.fAllocHeight, 0, glDesc.fUploadFormat,
                              glDesc.fUploadType, srcData));
-            GrGL_RestoreResetRowLength();
+            GrGLRestoreResetRowLength();
         }
     }
 
index bd6250b..25414e4 100644 (file)
@@ -19,7 +19,6 @@
 #define GrGpuGL_DEFINED
 
 #include "GrGpu.h"
-#include "GrGLConfig.h"
 #include "GrGLIRect.h"
 #include "GrGLTexture.h"
 
diff --git a/gpu/src/mac/GrGLDefaultInterface_mac.cpp b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
new file mode 100644 (file)
index 0000000..802d717
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+    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);
+}
diff --git a/gpu/src/win/GrGLDefaultInterface_win.cpp b/gpu/src/win/GrGLDefaultInterface_win.cpp
new file mode 100644 (file)
index 0000000..0a2c786
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+    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);
+    }
+}
index 850cb96..123a34d 100644 (file)
             '../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',
             ],
           },],
         ],
index 016c6ac..5eafc89 100644 (file)
@@ -54,7 +54,7 @@
       <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
@@ -72,7 +72,7 @@
       <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
index d8c1914..7f9e743 100644 (file)
     <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
index a852a0b..b51dcd1 100644 (file)
@@ -89,7 +89,6 @@
                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;
                };