Skip to content
  • Kristian Høgsberg's avatar
    DRI interface changes and DRI2 direct rendering support. · e82dd8c6
    Kristian Høgsberg authored
    Add DRI2 direct rendering support to libGL and add DRI2 client side
    protocol code.  Extend the GLX 1.3 create drawable functions in
    glx_pbuffer.c to call into the DRI driver when possible.
    
    Introduce __DRIconfig, opaque struct that represents a DRI driver
    configuration.  Get's rid of the open coded __GLcontextModes in the
    DRI driver interface and the context modes create and destroy
    functions that the loader was requires to provide.  glcore.h is no
    longer part of the DRI driver interface.  The DRI config is GL binding
    agnostic, that is, not specific to GLX, EGL or other bindings.
    
    The core API is now also an extension, and the driver exports a list
    of extensions as the symbol __driDriverExtensions, which the loader
    must dlsym() for.  The list of extension will always include the DRI
    core extension, which allows creating and manipulating DRI screens,
    drawables and contexts.  The DRI legacy extension, when available,
    provides alternative entry points for creating the DRI objects that
    work with the XF86DRI infrastructure.
    
    Change DRI2 client code to not use drm drawables or contexts.  We
    never used drm_drawable_t's and the only use for drm_context_t was as
    a unique identifier when taking the lock.  We now just allocate a
    unique lock ID out of the DRILock sarea block.  Once we get rid of the
    lock entirely, we can drop this hack.
    
    Change the interface between dri_util.c and the drivers, so that the
    drivers now export the DriverAPI struct as driDriverAPI instead of the
    InitScreen entry point.  This lets us avoid dlsym()'ing for the DRI2
    init screen function to see if DRI2 is supported by the driver.
    e82dd8c6