Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / gpu / gl / unix / GrGLCreateNativeInterface_unix.cpp
index ddbfe5d..b3c7a3c 100644 (file)
@@ -8,9 +8,19 @@
 
 #include "gl/GrGLInterface.h"
 #include "gl/GrGLAssembleInterface.h"
+#include "gl/GrGLUtil.h"
 
 #include <GL/glx.h>
 
+#define GET_PROC(F) functions->f ## F = (GrGL ## F ## Proc) get(ctx, "gl" #F)
+#define GET_PROC_SUFFIX(F, S) functions->f ## F = (GrGL ## F ## Proc) get(ctx, "gl" #F #S)
+#define GET_PROC_LOCAL(F) GrGL ## F ## Proc F = (GrGL ## F ## Proc) get(ctx, "gl" #F)
+
+#define GET_LINKED GET_PROC
+#define GET_LINKED_SUFFIX GET_PROC_SUFFIX
+
+#include "gl/GrGLAssembleGLESInterface.h"
+
 static GrGLFuncPtr glx_get(void* ctx, const char name[]) {
     SkASSERT(NULL == ctx);
     SkASSERT(NULL != glXGetCurrentContext());
@@ -21,5 +31,14 @@ const GrGLInterface* GrGLCreateNativeInterface() {
     if (NULL == glXGetCurrentContext()) {
         return NULL;
     }
-    return GrGLAssembleGLInterface(NULL, glx_get);
+
+    const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION));
+    GrGLStandard standard = GrGLGetStandardInUseFromString(verStr);
+
+    if (kGLES_GrGLStandard == standard) {
+        return GrGLAssembleGLESInterface(NULL, glx_get);
+    } else if (kGL_GrGLStandard == standard) {
+        return GrGLAssembleGLInterface(NULL, glx_get);
+    }
+    return NULL;
 }