1 /*
2  * Copyright 2014 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 
9 #include "gl/GrGLInterface.h"
10 #include "gl/GrGLAssembleInterface.h"
11 #include "gl/GrGLUtil.h"
12 
13 #include <GL/glx.h>
14 
glx_get(void * ctx,const char name[])15 static GrGLFuncPtr glx_get(void* ctx, const char name[]) {
16     // Avoid calling glXGetProcAddress() for EGL procs.
17     // We don't expect it to ever succeed, but somtimes it returns non-null anyway.
18     if (0 == strncmp(name, "egl", 3)) {
19         return nullptr;
20     }
21 
22     SkASSERT(nullptr == ctx);
23     SkASSERT(glXGetCurrentContext());
24     return glXGetProcAddress(reinterpret_cast<const GLubyte*>(name));
25 }
26 
GrGLCreateNativeInterface()27 const GrGLInterface* GrGLCreateNativeInterface() {
28     if (nullptr == glXGetCurrentContext()) {
29         return nullptr;
30     }
31 
32     return GrGLAssembleInterface(nullptr, glx_get);
33 }
34