Commit graph

18 commits

Author SHA1 Message Date
Brian Nguyen f0aa610a3d [GLX] Include libglxmapping.c and libglxnoop.h in build
libglxmapping.c implements functions needed for libGLX to map function
calls to vendors for dispatching.

libglxnoop.h contains a pointer to a no-op dispatch table.

These will be re-implemented in a later change.
2013-08-26 11:03:41 -07:00
Brian Nguyen fff1fcc0c0 [GLX] Hook up glvnd_pthread
This sets up GLX to use the glvnd_pthread wrapper library, and
implements real locking around the glXGetClientString() implementation.
2013-08-26 11:03:41 -07:00
Brian Nguyen 8dad6e57f8 Implement glvnd_pthread
This is a wrapper library around libpthread which implements
single-threaded fallbacks in case the API library is loaded in an
application which does not link against pthreads.
2013-08-26 11:03:41 -07:00
Brian Nguyen c51b191aef [GLX] Implement MakeContextCurrentInternal()
This does the work of glXMake{,Context}Current().
2013-08-26 11:03:41 -07:00
Brian Nguyen ec9be3bfac [GLX] Implement glXQueryVersion()
This function directly packs protocol to get the version from
server-side GLX.
2013-08-26 11:03:41 -07:00
Brian Nguyen 8ec20e11d5 [GLX] Implement glXGetClientString()
This takes the "union" (concatenation) of the vendor libraries' client
strings.
2013-08-26 11:03:41 -07:00
Brian Nguyen 3db1e19fcf [GLX] Begin implementing glXMake{,Context}Current()
This makes use of a (still unimplemented) helper function called
MakeContextCurrentInternal() to actually perform the required API
library work for make current.
2013-08-26 11:03:41 -07:00
Brian Nguyen 4ee8d21ae6 Implement tracing
This implements a small tracing convenience library for debugging
purposess.
2013-08-26 11:03:41 -07:00
Brian Nguyen 31817fbb9b [GLX] Define internal APIs needed for looking up mappings, getting current state
- libglxabipriv.h: This is a simple wrapper around libglxabi.h which
  defines the static dispatch table to be the same as the set of
  functions exported by the vendor (they could potentially differ).

- libglxcurrent.h: This defines a current "API state" struct which
  encapsulates the API library's knowledge of the current display,
  read/draw drawables, dispatch tables, and vendor (owning the current
  context).  The glXGetCurrent*() functions are implemented by
  retrieving various fields from this API state.

- libglxmapping.h: This defines a "vendor info" struct which contains
  information about a loaded vendor. It also provides accessor functions
  for retrieving the dispatch table given a screen, and functions for
  adding/removing mappings from various keys (Context, FBConfig,
  Drawable) to screens.

- libglx.c: Replace the dummy GetStaticDispatch() function with calls to
  the API in libglxmapping.h to retrieve the right dispatch table.
2013-08-26 11:03:41 -07:00
Brian Nguyen ac7b7054a5 Add a header file for various utility functions 2013-08-26 11:03:41 -07:00
Brian Nguyen a72dfae91a [GLX] First pass at implementing libGLX.so
Add a makefile to build libGLX.

Update dispatch functions for each of the GLX 1.4 entrypoints
as well as stubs for glXGetProcAddress() and glXMake{Context,}Current()
to use the new vendor library ABI.
2013-08-26 11:03:41 -07:00
Brian Nguyen 99d433e7d1 [GLX] Re-define the libGLX vendor library ABI
This adds additional functionality for interacting with vendor
libraries, required for dispatch table management, GetProcAddress,
and MakeCurrent.
2013-08-26 10:29:08 -07:00
Andy Ritger d85ec3427d Add initial libGLX implementation 2013-08-26 10:29:08 -07:00
Brian Nguyen 492fec0668 Add glvnd_list.h
This is a copy of list.h from xserver commit
74469895e39fa38337f59edd64c4031ab9bb51d8, modified to prevent namespace
clashes with list.h.
2013-08-26 10:29:08 -07:00
Brian Nguyen 3d045c28bc Add mesa GL headers from git commit fa7829c36b78b8ecc42238cbc0a02d1059320c77 2013-08-26 10:29:08 -07:00
Brian Nguyen 05e64e91cb Add autotools infrastructure for libglvnd 2013-08-26 10:29:08 -07:00
Brian Nguyen 843eba20e8 Add placeholder directories for the libglvnd component libraries 2013-08-12 13:12:09 -07:00
Brian Nguyen 1d545f656d Initial commit 2013-08-12 13:11:45 -07:00