summaryrefslogtreecommitdiffstats
path: root/src/glx
Commit message (Collapse)AuthorAgeFilesLines
* glxcmds: Fix a typo in the __APPLE__ codepathJeremy Huddleston Sequoia2017-08-171-1/+1
| | | | | | | s/DummyContext/dummyContext/ Regressed-in: 5d9b50e596c9d81c37ce0844ae0f8c9da3f6bea6 Signed-off-by: Jeremy Huddleston Sequoia <[email protected]>
* loader_dri3/glx/egl: Optionally use a blit context for blitting operationsThomas Hellstrom2017-08-171-0/+1
| | | | | | | | | | | | | The code was relying on us always having a current context for client local image blit operations. Otherwise the blit would be skipped. However, glxSwapBuffers, for example, doesn't require a current context and that was a common problem in the dri1 era. It seems the problem has resurfaced with dri3. If we don't have a current context when we want to blit, try creating a private dri context and maintain a context cache of a single context. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* loader_dri3/glx/egl: Remove the loader_dri3_vtable get_dri_screen callbackThomas Hellstrom2017-08-171-11/+0
| | | | | | | | | | | It's not very usable since in the rare, but definitely existing case that we don't have a current context, it will return NULL. Presumably it will always be safe to use the dri screen the drawable was created with for operations on that drawable. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* dri: Introduce SWAP_METHOD tokensThomas Hellstrom2017-08-101-0/+13
| | | | | | | | | | | | We shouldn't be using GLX tokens in the dri subsystem, so define dri SWAP_METHOD tokens and translate when necessary. Unfortunately the X server uses the dri swap method value untranslated as the GLX fbconfig swapMethod, so we can't enumerate these tokens arbitrarily, but rather need to make them have the same values as the corresponding GLX tokens. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* glx: Fix swap method config matchingThomas Hellstrom2017-08-101-3/+1
| | | | | | | | | | Due to bugs in dri swap method reporting, neither the fbconfigs received from the server nor the value reported from driconfigs were correct. Now that's been fixed and we can enable config swapmethod matching again. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* glx: Work around X servers reporting bogus values of GLX_SWAP_METHOD_OMLThomas Hellstrom2017-08-101-1/+11
| | | | | | | | | | | | | | | Due to the recently fixed bug where dri drivers didn't report a correct __DRI_ATTRIB_SWAP_METHOD value, and the fact that X servers just forward this incorrect value (from the AIGLX dri driver) untranslated as GLX_SWAP_METHOD_OML, the latter value might be undefined when old dri AIGLX drivers are used, which breaks client fbconfig matching with server fbconfigs. So work around this by assuming GLX_SWAP_METHOD_UNDEFINED when a bogus value is read. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* loader: drop the [gs]et_swap_interval callbacksEmil Velikov2017-08-041-18/+1
| | | | | | | | | | Having two callbacks to manage a single int seems like an overkill. Use a cached copy and update that when needed. Signed-off-by: Emil Velikov <[email protected]> --- Might want to look if the dimensions dance in .query_surface ... speaking of which close to nobody implements that ...
* loader: rework xmlconfig dependencyEmil Velikov2017-08-041-1/+3
| | | | | | | | | | | | | | | | | | | | | | Currently xmlconfig is conditionally used, only when --enable-dri is available. As the library has moved to src/util and has wider wisebase, this guard is no longer correct. Strictly speaking - it wasn't since the introduction of xmlconfig into st/nine a while ago. Unconditionally enable xmlconfig and drop the linking. As said before there's other users of the library, so depending on the configure options we will get multiple definitions of said symbols. NOTE: To avoid breaking other combinations, this commit adds the xmlconfig link to the required places - throughout gallium and the DRI loaders. Cc: Aaron Watry <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> Tested-by: Dieter Nützel <[email protected]>
* glx/dri3: Implement the flush_swapbuffers methodThomas Hellstrom2017-08-031-1/+29
| | | | | | | | Provide a dri3 implementation for the image loader extension method. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Sinclair Yeh <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glx: use v2 of DRI_ConfigOptionsNicolai Hähnle2017-08-021-14/+99
| | | | | | | | | Most of the change is concerned with avoiding memory leaks, since v2 of the DRI extension returns a malloc'ed string. This also allows us to resolve the long-standing issue of keeping drivers loaded when returning from glXGetDriverConfig. Reviewed-by: Marek Olšák <[email protected]>
* loader: remove clamp_swap_interval()Eric Engestrom2017-08-011-7/+0
| | | | | | | | | | As of last commit, no invalid swap interval can be stored, so there's no need to sanitize the values when reading them anymore. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Daniel Stone <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
* egl: turn one more boolean `int` into a `bool`Eric Engestrom2017-06-211-1/+1
| | | | | | | | | | Same as the previous commit, but this one was split out because it's a bit more complicated: this field is given as a pointer to a function, so the function had to be changed as well, and the function was use in a bunch of places, which needed updating as well. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* dri: Optionally turn off a couple of GLX extensions based on driconf optionsThomas Hellstrom2017-06-072-3/+15
| | | | | | | | | | | | With GLX_EXT_buffer_age turned on, gnome-shell will use full-screen damage with GLX, which severely hurts performance with architectures that emulate page-flips with copies. Like vmware. We would like to be able to turn off that extension. Similarly, typically the GLX_OML_sync_control doesn't make much sense on a virtual architecture since we don't really sync to the host's vertical retrace. We'd like to be able to turn it off as well. Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* dri3/GLX: Fix drawable invalidation v2Thomas Hellstrom2017-06-071-0/+6
| | | | | | | | | | | | | | | | | | | A number of internal VMware apitrace traces image comparisons fail with dri3 because the viewport transformation becomes incorrect after an X drawable resize. The incorrect viewport transformation sometimes persist until the second draw-call after a swapBuffer. Comparing with the dri2 glx code there are a couple of places where dri2 invalidates the drawable in the absence of server-triggered invalidation, where dri3 doesn't do that. When these invalidation points are added to dri3, the image comparisons become correct. v2: Addressed review comment by Michel Dänzer. Cc: <[email protected]> Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-and-tested-by: Michel Dänzer <[email protected]>
* glx: implement __DRIbackgroundCallableExtension.isThreadSafeGregory Hainaut2017-05-292-2/+25
| | | | | | | | | | | | | | | v2: bump version v3: Add code comment s/IsGlThread/IsThread/ (and variation) v4: DRI3 doesn't hit X through GL call so it is always safe Signed-off-by: Gregory Hainaut <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glxglvnddispatch: Add missing dispatch for GetDriverConfigHans de Goede2017-05-172-0/+15
| | | | | | | | | | | | | | | | | | Together with some fixes to xdriinfo this fixes xdriinfo not working with glvnd. Since apps (xdriinfo) expect GetDriverConfig to work without going to need through the dance to setup a glxcontext (which is a reasonable expectation IMHO), the dispatch for this ends up significantly different then any other dispatch function. This patch gets the job done, but I'm not really happy with how this patch turned out, suggestions for a better fix are welcome. Cc: Kyle Brenneman <[email protected]> Signed-off-by: Hans de Goede <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Cc: [email protected]
* glx/apple: remove empty variable SHARED_GLAPI_CFLAGSEmil Velikov2017-05-041-1/+0
| | | | | | Cc: Jeremy Huddleston Sequoia <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* glx/windows: remove empty variable SHARED_GLAPI_CFLAGSEmil Velikov2017-05-041-1/+0
| | | | | | Cc: Jon Turney <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* glx: automake: scons: remove unneeded GLX_SHARED_GLAPI defineEmil Velikov2017-05-042-5/+0
| | | | | | | There's no users in-tree that use it. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* glx: glX_proto_send.py: use correct compile guard GLX_INDIRECT_RENDERINGEmil Velikov2017-05-041-1/+1
| | | | | | | | | | | | | The code itself has nothing to do with shared glapi, thus having it behind GLX_SHARED_GLAPI is misleading. Use GLX_INDIRECT_RENDERING instead. The latter macro is set at global scope by the Autotools and Scons build systems. Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* glx: add missing sRGB attribute check in fbconfigs_compatible()Neha Bhende2017-04-281-0/+1
| | | | | | | | This patch will allow driver to choose srgb capable FBconfig if GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB attribute is 1 Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Charmaine Lee <[email protected]>
* EGL: Implement the libglvnd interface for EGL (v3)Kyle Brenneman2017-04-172-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The new interface mostly just sits on top of the existing library. The only change to the existing EGL code is to split the client extension string into platform extensions and everything else. On non-glvnd builds, eglQueryString will just concatenate the two strings. The EGL dispatch stubs are all generated. The script is based on the one used to generate entrypoints in libglvnd itself. v2: [Kyle] - Rebased against master. - Reworked the EGL makefile to use separate libraries - Made the EGL code generation scripts work with Python 2 and 3. - Change gen_egl_dispatch.py to use argparse for the command line arguments. - Assorted formatting and style cleanup in the Python scripts. v3: [Emil Velikov] - Rebase - Remove separate glvnd glx/egl configure toggles Signed-off-by: Emil Velikov <[email protected]>
* glx: silence uninitialized var warningBrian Paul2017-04-071-1/+1
| | | | Signed-off-by: Brian Paul <[email protected]>
* glx: Remove #include <GL/glxint.h>Adam Jackson2017-03-281-1/+0
| | | | | | | We're not using anything in it, and we don't want to inherit struct definitions from some other package anyway. Signed-off-by: Adam Jackson <[email protected]>
* glx: Prefer library path given by pkgconfig over the systemTopi Pohjolainen2017-03-231-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Recent change to use drmGetDevices2() made me realize that build configured using PKG_CONFIG_PATH=my_drm_lib_path/pkgconfig ./autogen.sh considers the libdrm path gotten from pkgconfig only during make. When invoking "make install" the relink command puts system library ahead of the path gotten from pkgconfig (and starts to fail as system libdrm isn't new enough). This change forces the relink command to respect pkgconfig settings. It looks to me that in https://bugs.freedesktop.org/show_bug.cgi?id=100259 with Emil et al considering it a libtool bug. Signed-off-by: Topi Pohjolainen <[email protected]> [Emil Velikov: add inline comment] Signed-off-by: Emil Velikov <[email protected]>
* glx: Implement __DRI_BACKGROUND_CALLABLEPaul Berry2017-03-162-1/+30
| | | | | | | | | | | v2: Marek: Add DRI3 support. v3: (Timothy Arceri) use C99 initializers. Acked-by: Timothy Arceri <[email protected]> Acked-by: Marek Olšák <[email protected]> Tested-by: Dieter Nützel <[email protected]> Tested-by: Mike Lothian <[email protected]>
* glx: don't expose systemTimeExtension for DRI2/DRI3/DRISWEmil Velikov2017-03-153-4/+0
| | | | | | Used/applicable to only dri1 drivers. Signed-off-by: Emil Velikov <[email protected]>
* glx/tests: automake: add dispatch-index-check to the tarballEmil Velikov2017-02-281-0/+1
| | | | | | | Otherwise we'll fail at `make distcheck' Fixes: 3cc33e76401 ("glx: add GLXdispatchIndex sort check") Signed-off-by: Emil Velikov <[email protected]>
* check: add support for running test as standaloneEric Engestrom2017-02-261-0/+5
| | | | Signed-off-by: Eric Engestrom <[email protected]>
* check: make any failure fatalEric Engestrom2017-02-261-0/+1
| | | | | | | Previously, only the last error code was returned. Using `set -e` makes the script quit on any unhandled error. Signed-off-by: Eric Engestrom <[email protected]>
* check: mark two tests are requiring bashEric Engestrom2017-02-261-1/+1
| | | | | | | Requirement was removed just before pushing, but it's actually needed for heredocs (`<<<`). Signed-off-by: Eric Engestrom <[email protected]>
* glx: add GLXdispatchIndex sort checkEric Engestrom2017-02-242-1/+25
| | | | | Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glx/glvnd: Fix GLXdispatchIndex sortingHans de Goede2017-02-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Commit 8bca8d89ef3b ("glx/glvnd: Fix dispatch function names and indices") fixed the sorting of the array initializers in g_glxglvnddispatchfuncs.c because FindGLXFunction's binary search needs these to be sorted alphabetically. That commit also mostly fixed the sorting of the DI_foo defines in g_glxglvnddispatchindices.h, which is what actually matters as the arrays are initialized using "[DI_foo] = glXfoo," but a small error crept in which at least causes glXGetVisualFromFBConfigSGIX to not resolve, breaking games such as "The Binding of Isaac: Rebirth" and "Crypt of the NecroDancer" from Steam not working and possible causes other problems too. This commit fixes the last of the sorting errors, fixing these mentioned games not working. Fixes: 8bca8d89ef3b ("glx/glvnd: Fix dispatch function names and indices") Cc: "13.0" <[email protected]> Cc: "17.0" <[email protected]> Cc: Adam Jackson <[email protected]> Signed-off-by: Hans de Goede <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* glx: remove always true XDAMAGE_1_1_INTERFACE guardEmil Velikov2017-02-131-4/+0
| | | | | Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* glx: remove DRI2DriverPrimeShift compile guardsEmil Velikov2017-02-131-2/+0
| | | | | | | | DRI2DriverPrimeShift was added in dri2proto-2.8, which we now require as of the previous commit. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* glx: remove always true ifdef guardsEmil Velikov2017-02-131-4/+0
| | | | | | | | The two symbols referenced were introduced with v2.2 and 2.3 of the dri2proto package and we require dri2proto >= 2.6. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* glx: guard swap-interval functions against destroyed drawablesNicolai Hähnle2017-02-062-3/+19
| | | | | | | | | | | | | | | | The GLX specification says about glXDestroyPixmap: "The storage for the GLX pixmap will be freed when it is not current to any client." So arguably, functions like glXSwapIntervalMESA can be called after glXDestroyPixmap has been called for the currently bound GLXPixmap. In that case, the GLXDRIDrawable no longer exists, and so we just skip those calls. Cc: 17.0 <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glx/dri3: guard in_current_context against a disappeared drawableNicolai Hähnle2017-02-061-0/+4
| | | | | | Cc: 17.0 <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* glx/dri3: handle NULL pointers in loader-to-DRI3 drawable conversionNicolai Hähnle2017-02-061-0/+2
| | | | | | | | | | | | | With a subsequent patch, we might see NULL loaderPrivates, e.g. when a DRIdrawable is flushed whose corresponding GLXDRIdrawable was destroyed. This resulted in a crash, since the loader vs. DRI3 drawable structures have a non-zero offset. Fixes glx-visuals-{depth,stencil} -pixmap Cc: 17.0 <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glx/windows: automake: include builddir prior to srcdirEmil Velikov2017-01-271-1/+1
| | | | | | | | Analogous to previous commit. Cc: "12.0 13.0" <[email protected]> Cc: Jon Turney <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* glx/apple: automake: include builddir prior to srcdirEmil Velikov2017-01-271-2/+2
| | | | | | | | | Analogous to previous commit. Cc: "12.0 13.0" <[email protected]> Cc: Jeremy Huddleston Sequoia <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jeremy Sequoia <[email protected]>
* glx: automake: include builddir prior to srcdirEmil Velikov2017-01-271-2/+2
| | | | | | | Analogous to previous commit. Cc: "12.0 13.0" <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* glx: unify GLX_SGIX_pbuffer aliased declarationsEmil Velikov2017-01-182-18/+0
| | | | | | | | | | | | | No point in having an identical code in two places. Not to mention that the Apple one incorrectly uses GLXDrawable as pbuf type. This change is both API and ABI safe since the header uses the correct GLXPbufferSGIX and both types are a typedef of the same primitive XID. Cc: Jeremy Huddleston Sequoia <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jeremy Sequoia <[email protected]>
* glx: use GLX_ALIAS for glXGetProcAddressEmil Velikov2017-01-181-13/+4
| | | | | | Use the macro, rather than open-coding it. Signed-off-by: Emil Velikov <[email protected]>
* mesa: make use of HAVE_FUNC_ATTRIBUTE_ALIAS macroEmil Velikov2017-01-182-4/+4
| | | | | | | | | | | We must make sure that xserver has an equivalent one-line change to its configure.ac as the glx/glapi headers get copied over. Then again, xserver does _not_ seem to set HAVE_ALIAS to begin with so one might want to look into that first. Cc: Adam Jackson <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* glx: remove always false ifdef GLX_NO_STATIC_EXTENSION_FUNCTIONSEmil Velikov2017-01-181-5/+0
| | | | | | | Quick search through git history (of both mesa and xserver) hows no instances where this was ever set. Signed-off-by: Emil Velikov <[email protected]>
* dri3: Fix MakeCurrent without a default framebufferFredrik Höglund2017-01-051-4/+10
| | | | | | | | | | In OpenGL 3.0 and later it is legal to make a context current without a default framebuffer. This has been broken since DRI3 support was introduced. Cc: "13.0 12.0" <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* dri: make use of loader_get_extensions_name(..) helperChristian Gmeiner2016-11-151-3/+2
| | | | | | | | | | | | Changes since v1: - removed not needed includes - use the loader version of the helper v2 [Emil Velikov] - Keep the includes - they are required. Signed-off-by: Christian Gmeiner <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* Revert "dri: make use of dri_get_extensions_name(..) helper"Emil Velikov2016-11-151-2/+3
| | | | | | This reverts commit 1a21d21580965eff751414d140b3c176eeee2eb3. Pushed the wrong version of the patch.
* dri: make use of dri_get_extensions_name(..) helperChristian Gmeiner2016-11-151-3/+2
| | | | | Signed-off-by: Christian Gmeiner <[email protected]> Reviewed-by: Emil Velikov <[email protected]>