1. 25 Jan, 2017 1 commit
  2. 15 Sep, 2016 1 commit
    • Jon Turney's avatar
      Add Windows-DRI extension · f5f4d32a
      Jon Turney authored
      
      
      If windowsdriproto headers are available, build a Windows-DRI extension,
      which supports requests to enable local clients to directly render GL to a
      Windows drawable:
      
      - a query to check if WGL is being used on a screen
      - a query to map a fbconfigID to a native pixelformatindex
      - a query to map a drawable to a native handle
      
      Windows-DRI can only be useful if we are using WGL, so make an note if WGL
      is active on a screen.
      
      Make validGlxDrawable() public
      
      Adjust glxWinSetPixelFormat() so it doesn't require a context, just a
      screen and config.
      
      That enables factoring out the deferred drawable creation code as
      glxWinDeferredCreateDrawable()
      
      Enhance glxWinDeferredCreateDrawable(), so that pixmaps are placed into a
      file mapping, so they exist in memory which can be shared with the direct
      rendering process.
      
      Currently, this file mapping is accessed by a name generated from the XID.
      This will not be unique across multiple server instances. It would perhaps
      be better, although more complicated, to use an anonymous file mapping, and
      then duplicate the handle for the direct rendering process.
      
      Use glxWinDeferredCreateDrawable() to ensure the native handle exists for
      the Windows-DRI query to map a drawable to native handle.
      
      v2:
      Various printf format warning fixes
      
      v3:
      Fix format warnings on x86
      Move some uninteresting windows-dri output to debug log level
      
      v4:
      check for windowsdriproto when  --enable-windowsdri
      use windowsdriproto_CFLAGS
      Signed-off-by: Jon Turney's avatarJon Turney <jon.turney@dronecode.org.uk>
      Reviewed-by: default avatarColin Harrison <colin.harrison@virgin.net>
      f5f4d32a
  3. 06 Sep, 2016 1 commit
    • Adam Jackson's avatar
      glx: Fix computation of GLX_X_RENDERABLE fbconfig attribute · 392da389
      Adam Jackson authored
      
      
      >From the GLX spec:
      
          "GLX_X_RENDERABLE is a boolean indicating whether X can be used to
          render into a drawable created with the GLXFBConfig. This attribute
          is True if the GLXFBConfig supports GLX windows and/or pixmaps."
      
      Every backend was setting this to true unconditionally, and then the
      core ignored that value and sent true unconditionally on its own. This
      is broken for ARB_fbconfig_float and EXT_fbconfig_packed_float, which
      only apply to pbuffers, which are not renderable from non-GLX APIs.
      
      Instead compute GLX_X_RENDERABLE from the supported drawable types. The
      dri backends were getting _that_ wrong too, so fix that as well.
      
      This is not a functional change, as there are no mesa drivers that claim
      to support __DRI_ATTRIB_{UNSIGNED_,}FLOAT_BIT yet.
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Reviewed-by: Emma Anholt's avatarEric Anholt <eric@anholt.net>
      392da389
  4. 11 May, 2016 2 commits
  5. 30 Mar, 2016 2 commits
  6. 10 Mar, 2016 3 commits
  7. 08 Mar, 2016 1 commit
  8. 19 Oct, 2015 1 commit
  9. 08 Jul, 2015 1 commit
    • Adam Jackson's avatar
      glx: Implement GLX_ARB_context_flush_control · 995ff114
      Adam Jackson authored
      
      
      This extension allows clients to opt out of the implicit glFlush on
      context release, which is quite nice for performance for clients using
      multiple contexts.  The server doesn't really need to be aware of the
      client's decision, at least for direct contexts, but it does need to not
      reject the context attribute out of hand.
      
      This patch won't do anything unless built against a Mesa that defines
      the __DRI2_FLUSH_CONTROL extension (and a new enough glxext.h, but
      that's been there since 10.3 at least).
      Reviewed-by: James Jones's avatarJames Jones <jajones@nvidia.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      995ff114
  10. 10 Dec, 2014 2 commits
  11. 09 Dec, 2014 5 commits
  12. 05 Dec, 2014 1 commit
    • Jon Turney's avatar
      Revert "glx: Simplify glXDestroyContext" · 437b2749
      Jon Turney authored
      This reverts commit 7f5adf73
      
      .
      
      This seems to miss the whole point of the idExists flag, as it makes the
      lifetime of that being true the same as the lifetime of the Context resource.
      
      The previously current context tag is always given in a MakeContextCurrent
      request, even if that context tag is no longer valid (for example, the context
      has been deleted), so this leads to BadContextTag errors.
      
      See fd.o bug #30089 for the makecurrenttest.c testcase, and some discussion of
      previous manifestations of this bug.
      Signed-off-by: Jon Turney's avatarJon TURNEY <jon.turney@dronecode.org.uk>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      437b2749
  13. 12 Nov, 2014 1 commit
  14. 12 Sep, 2014 1 commit
  15. 23 Apr, 2014 3 commits
  16. 12 Jan, 2014 1 commit
  17. 05 Dec, 2013 1 commit
  18. 01 Nov, 2013 1 commit
    • Adam Jackson's avatar
      glx: Lie about GLX_Y_INVERTED_EXT · 17ed7ac1
      Adam Jackson authored
      
      
      Well, that was lame.  The problem with reporting y inversion honestly is
      that libGL asks the driver _its_ opinion of Y inversion, which it just
      fabricates from whole cloth.  So then when libGL goes to compare the
      driver's idea of fbconfigs with that of the server - a fairly dumb idea
      to begin with - nothing matches, and direct rendering fails, and
      sadness.
      
      So until the DRI drivers are fixed we should just continue to lie about
      Y inversion.  GLX_DONT_CARE is what libGL would make up for that
      attribute if we hadn't sent it, so just send that instead.
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Tested-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      17ed7ac1
  19. 29 Oct, 2013 4 commits
    • Adam Jackson's avatar
      glx: convert to direct GL dispatch (v2) · be668096
      Adam Jackson authored
      
      
      We now expect to be linked against something that provides the GL API,
      instead of manually grubbing about in the DRI driver's dispatch table.
      Since the GLX we expose calls GL functions that are meant to be looked
      up dynamically, also add a way to thunk through to GetProcAddress.
      
      This includes a refresh of the generated sources, which requires a
      correspondingly new Mesa.
      
      The GetProcAddress stubs are at the moment merely enough to make this
      link against Mesa 9.2, but should really be provided for everything not
      in the OpenGL 1.2 ABI.
      
      v2: Explicitly hide the GetProcAddress stubs so we can't conflict with
      libGL symbols; fix leading tab/space issues [anholt]
      Reviewed-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      be668096
    • Adam Jackson's avatar
      glx: Simplify glXDestroyContext · 7f5adf73
      Adam Jackson authored
      
      
      We can just free the resource unconditionally here.  ContextGone (which
      FreeResourceByType will call) already does:
      
          cx->idExists = GL_FALSE;
          if (!cx->currentClient) {
              __glXFreeContext(cx);
          }
      Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      7f5adf73
    • Adam Jackson's avatar
      glx: Fix memory leak in context garbage collection (v2) · 276d8057
      Adam Jackson authored
      I broke this, back in:
      
          commit a48dadc9
          Author: Adam Jackson <ajax@redhat.com>
          Date:   Mon Mar 21 11:59:29 2011 -0400
      
      	glx: Reimplement context tags
      
      In that, I changed the glx client state to not explicitly track the list
      of current contexts for the client (since that was what we were deriving
      tags from).  The bug was that I removed the code for same from
      glxClientCallback without noticing that it had the side effect of
      effectively de-currenting those contexts, so that ContextGone could free
      them.  So, if you had a client exit with a context still current, the
      context's memory would leak.  Not a huge deal for direct clients, but
      viciously bad for indirect, since the swrast context state at the bottom
      of Mesa is like 15M.
      
      Fix this by promoting Bool isCurrent to ClientPtr currentClient, so that
      we have a back-pointer to chase when walking the list of contexts when
      ClientStateGone happens.
      
      v2: Explicitly call __glXFreeContext on the ClientStateGone path.  Our
      current context might be one we got from EXT_import_context and whose
      creating client has since died.  Without the explicit call, the creating
      client's FreeClientResources would not free the context because it's
      still current, and the using client's FreeClientResources would not free
      the context because it's not an XID it created.  This matches the logic
      from a48dadc9
      
      .
      Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      276d8057
    • Adam Jackson's avatar
  20. 11 Sep, 2013 7 commits