Home | History | Annotate | Download | only in glx
      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 
     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 
     27 const GrGLInterface* GrGLCreateNativeInterface() {
     28     if (nullptr == glXGetCurrentContext()) {
     29         return nullptr;
     30     }
     31 
     32     return GrGLAssembleInterface(nullptr, glx_get);
     33 }
     34