"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/egl/main/eglglvnd.c" (16 Sep 2020, 2159 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "eglglvnd.c" see the Fossies "Dox" file reference documentation.

    1 #include <string.h>
    2 #include <assert.h>
    3 
    4 #include <glvnd/libeglabi.h>
    5 
    6 #include "eglcurrent.h"
    7 #include "egldispatchstubs.h"
    8 #include "eglglobals.h"
    9 
   10 static const __EGLapiExports *__eglGLVNDApiExports = NULL;
   11 
   12 static const char * EGLAPIENTRY
   13 __eglGLVNDQueryString(EGLDisplay dpy, EGLenum name)
   14 {
   15    // For client extensions, return the list of non-platform extensions. The
   16    // platform extensions are returned by __eglGLVNDGetVendorString.
   17    if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS)
   18       return _eglGlobal.ClientOnlyExtensionString;
   19 
   20    // For everything else, forward to the normal eglQueryString function.
   21    return eglQueryString(dpy, name);
   22 }
   23 
   24 static const char *
   25 __eglGLVNDGetVendorString(int name)
   26 {
   27    if (name == __EGL_VENDOR_STRING_PLATFORM_EXTENSIONS)
   28       return _eglGlobal.PlatformExtensionString;
   29 
   30    return NULL;
   31 }
   32 
   33 static EGLDisplay
   34 __eglGLVNDGetPlatformDisplay(EGLenum platform, void *native_display,
   35       const EGLAttrib *attrib_list)
   36 {
   37    if (platform == EGL_NONE) {
   38       assert(native_display == (void *) EGL_DEFAULT_DISPLAY);
   39       assert(attrib_list == NULL);
   40       return eglGetDisplay((EGLNativeDisplayType) native_display);
   41    } else {
   42       return eglGetPlatformDisplay(platform, native_display, attrib_list);
   43    }
   44 }
   45 
   46 static void *
   47 __eglGLVNDGetProcAddress(const char *procName)
   48 {
   49    if (strcmp(procName, "eglQueryString") == 0)
   50       return (void *) __eglGLVNDQueryString;
   51 
   52    return (void *) eglGetProcAddress(procName);
   53 }
   54 
   55 EGLAPI EGLBoolean
   56 __egl_Main(uint32_t version, const __EGLapiExports *exports,
   57      __EGLvendorInfo *vendor, __EGLapiImports *imports)
   58 {
   59    if (EGL_VENDOR_ABI_GET_MAJOR_VERSION(version) !=
   60        EGL_VENDOR_ABI_MAJOR_VERSION)
   61       return EGL_FALSE;
   62 
   63    __eglGLVNDApiExports = exports;
   64    __eglInitDispatchStubs(exports);
   65 
   66    imports->getPlatformDisplay = __eglGLVNDGetPlatformDisplay;
   67    imports->getSupportsAPI = _eglIsApiValid;
   68    imports->getVendorString = __eglGLVNDGetVendorString;
   69    imports->getProcAddress = __eglGLVNDGetProcAddress;
   70    imports->getDispatchAddress = __eglDispatchFindDispatchFunction;
   71    imports->setDispatchIndex = __eglSetDispatchIndex;
   72 
   73    return EGL_TRUE;
   74 }
   75