path: root/src/glx
AgeCommit message (Collapse)AuthorFilesLines
2017-06-21egl: turn one more boolean `int` into a `bool`Eric Engestrom1-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 <> Reviewed-by: Emil Velikov <>
2017-06-07dri: Optionally turn off a couple of GLX extensions based on driconf optionsThomas Hellstrom2-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 <> Reviewed-by: Marek Olšák <>
2017-06-07dri3/GLX: Fix drawable invalidation v2Thomas Hellstrom1-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: <> Signed-off-by: Thomas Hellstrom <> Reviewed-and-tested-by: Michel Dänzer <>
2017-05-29glx: implement __DRIbackgroundCallableExtension.isThreadSafeGregory Hainaut2-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 <> Reviewed-by: Emil Velikov <>
2017-05-17glxglvnddispatch: Add missing dispatch for GetDriverConfigHans de Goede2-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 <> Signed-off-by: Hans de Goede <> Reviewed-by: Emil Velikov <> Cc:
2017-05-04glx/apple: remove empty variable SHARED_GLAPI_CFLAGSEmil Velikov1-1/+0
Cc: Jeremy Huddleston Sequoia <> Signed-off-by: Emil Velikov <> Reviewed-by: Nicolai Hähnle <>
2017-05-04glx/windows: remove empty variable SHARED_GLAPI_CFLAGSEmil Velikov1-1/+0
Cc: Jon Turney <> Signed-off-by: Emil Velikov <> Reviewed-by: Nicolai Hähnle <>
2017-05-04glx: automake: scons: remove unneeded GLX_SHARED_GLAPI defineEmil Velikov2-5/+0
There's no users in-tree that use it. Signed-off-by: Emil Velikov <> Reviewed-by: Nicolai Hähnle <>
2017-05-04glx: use correct compile guard GLX_INDIRECT_RENDERINGEmil Velikov1-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: Signed-off-by: Emil Velikov <> Reviewed-by: Nicolai Hähnle <>
2017-04-28glx: add missing sRGB attribute check in fbconfigs_compatible()Neha Bhende1-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 <> Reviewed-by: Charmaine Lee <>
2017-04-17EGL: Implement the libglvnd interface for EGL (v3)Kyle Brenneman2-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 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 <>
2017-04-07glx: silence uninitialized var warningBrian Paul1-1/+1
Signed-off-by: Brian Paul <>
2017-03-28glx: Remove #include <GL/glxint.h>Adam Jackson1-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 <>
2017-03-23glx: Prefer library path given by pkgconfig over the systemTopi Pohjolainen1-0/+3
Recent change to use drmGetDevices2() made me realize that build configured using PKG_CONFIG_PATH=my_drm_lib_path/pkgconfig ./ 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 with Emil et al considering it a libtool bug. Signed-off-by: Topi Pohjolainen <> [Emil Velikov: add inline comment] Signed-off-by: Emil Velikov <>
2017-03-16glx: Implement __DRI_BACKGROUND_CALLABLEPaul Berry2-1/+30
v2: Marek: Add DRI3 support. v3: (Timothy Arceri) use C99 initializers. Acked-by: Timothy Arceri <> Acked-by: Marek Olšák <> Tested-by: Dieter Nützel <> Tested-by: Mike Lothian <>
2017-03-15glx: don't expose systemTimeExtension for DRI2/DRI3/DRISWEmil Velikov3-4/+0
Used/applicable to only dri1 drivers. Signed-off-by: Emil Velikov <>
2017-02-28glx/tests: automake: add dispatch-index-check to the tarballEmil Velikov1-0/+1
Otherwise we'll fail at `make distcheck' Fixes: 3cc33e76401 ("glx: add GLXdispatchIndex sort check") Signed-off-by: Emil Velikov <>
2017-02-26check: add support for running test as standaloneEric Engestrom1-0/+5
Signed-off-by: Eric Engestrom <>
2017-02-26check: make any failure fatalEric Engestrom1-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 <>
2017-02-26check: mark two tests are requiring bashEric Engestrom1-1/+1
Requirement was removed just before pushing, but it's actually needed for heredocs (`<<<`). Signed-off-by: Eric Engestrom <>
2017-02-24glx: add GLXdispatchIndex sort checkEric Engestrom2-1/+25
Signed-off-by: Eric Engestrom <> Reviewed-by: Emil Velikov <>
2017-02-15glx/glvnd: Fix GLXdispatchIndex sortingHans de Goede1-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" <> Cc: "17.0" <> Cc: Adam Jackson <> Signed-off-by: Hans de Goede <> Reviewed-by: Eric Engestrom <>
2017-02-13glx: remove always true XDAMAGE_1_1_INTERFACE guardEmil Velikov1-4/+0
Signed-off-by: Emil Velikov <> Reviewed-by: Matt Turner <>
2017-02-13glx: remove DRI2DriverPrimeShift compile guardsEmil Velikov1-2/+0
DRI2DriverPrimeShift was added in dri2proto-2.8, which we now require as of the previous commit. Signed-off-by: Emil Velikov <> Reviewed-by: Matt Turner <>
2017-02-13glx: remove always true ifdef guardsEmil Velikov1-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 <> Reviewed-by: Matt Turner <>
2017-02-06glx: guard swap-interval functions against destroyed drawablesNicolai Hähnle2-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 <> Reviewed-by: Marek Olšák <> Reviewed-by: Emil Velikov <>
2017-02-06glx/dri3: guard in_current_context against a disappeared drawableNicolai Hähnle1-0/+4
Cc: 17.0 <> Reviewed-by: Emil Velikov <> Reviewed-by: Marek Olšák <>
2017-02-06glx/dri3: handle NULL pointers in loader-to-DRI3 drawable conversionNicolai Hähnle1-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 <> Reviewed-by: Marek Olšák <> Reviewed-by: Emil Velikov <>
2017-01-27glx/windows: automake: include builddir prior to srcdirEmil Velikov1-1/+1
Analogous to previous commit. Cc: "12.0 13.0" <> Cc: Jon Turney <> Signed-off-by: Emil Velikov <>
2017-01-27glx/apple: automake: include builddir prior to srcdirEmil Velikov1-2/+2
Analogous to previous commit. Cc: "12.0 13.0" <> Cc: Jeremy Huddleston Sequoia <> Signed-off-by: Emil Velikov <> Reviewed-by: Jeremy Sequoia <>
2017-01-27glx: automake: include builddir prior to srcdirEmil Velikov1-2/+2
Analogous to previous commit. Cc: "12.0 13.0" <> Signed-off-by: Emil Velikov <>
2017-01-18glx: unify GLX_SGIX_pbuffer aliased declarationsEmil Velikov2-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 <> Signed-off-by: Emil Velikov <> Reviewed-by: Jeremy Sequoia <>
2017-01-18glx: use GLX_ALIAS for glXGetProcAddressEmil Velikov1-13/+4
Use the macro, rather than open-coding it. Signed-off-by: Emil Velikov <>
2017-01-18mesa: make use of HAVE_FUNC_ATTRIBUTE_ALIAS macroEmil Velikov2-4/+4
We must make sure that xserver has an equivalent one-line change to its 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 <> Signed-off-by: Emil Velikov <>
2017-01-18glx: remove always false ifdef GLX_NO_STATIC_EXTENSION_FUNCTIONSEmil Velikov1-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 <>
2017-01-05dri3: Fix MakeCurrent without a default framebufferFredrik Höglund1-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" <> Reviewed-by: Marek Olšák <>
2016-11-15dri: make use of loader_get_extensions_name(..) helperChristian Gmeiner1-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 <> Signed-off-by: Emil Velikov <>
2016-11-15Revert "dri: make use of dri_get_extensions_name(..) helper"Emil Velikov1-2/+3
This reverts commit 1a21d21580965eff751414d140b3c176eeee2eb3. Pushed the wrong version of the patch.
2016-11-15dri: make use of dri_get_extensions_name(..) helperChristian Gmeiner1-3/+2
Signed-off-by: Christian Gmeiner <> Reviewed-by: Emil Velikov <>
2016-11-04glx: make interop ABI visible againMarek Olšák1-2/+2
This was broken when the GLAPI use was removed from mesa_glinterop.h. Cc: 12.0 13.0 <> Acked-by: Alex Deucher <> Reviewed-by: Nicolai Hähnle <> Reviewed-by: Emil Velikov <>
2016-11-03glx/windows: Add wgl.h to the sources listAndreas Boll1-1/+2
Otherwise it won't be picked in the tarball and the build will fail. Fixes: 533b3530c12 ("direct-to-native-GL for GLX clients on Cygwin ("Windows-DRI")") Cc: "13.0" <> Signed-off-by: Andreas Boll <> Reviewed-by: Jon Turney <>
2016-11-02glx/glvnd: Use bsearch() in FindGLXFunction instead of open-coding itAdam Jackson1-18/+16
Reviewed-by: Eric Engestrom <> Signed-off-by: Adam Jackson <>
2016-11-02glx/glvnd: Fix dispatch function names and indicesAdam Jackson2-146/+144
As this array was not actually sorted, FindGLXFunction's binary search would only sometimes work. Cc: "13.0" <> Reviewed-by: Eric Engestrom <> Signed-off-by: Adam Jackson <>
2016-11-02glx/glvnd: Don't modify the dummy slot in the dispatch tableAdam Jackson1-0/+3
Cc: "13.0" <> Reviewed-by: Eric Engestrom <> Signed-off-by: Adam Jackson <>
2016-10-18loader: remove loader_get_driver_for_fd() driver_typeEmil Velikov2-2/+2
Reminiscent from the pre-loader days, were we had multiple instances of the loader logic in separate places and one could build a "GALLIUM_ONLY" version. Since that is no longer the case and the loaders (glx/egl/gbm) do not (and should not) require to know any classic/gallium specific we can drop the argument and the related code. Signed-off-by: Emil Velikov <> Reviewed-by: Axel Davy <> Reviewed-by: Nicolai Hähnle <>
2016-10-14loader/dri3: constify the loader_dri3_vtableEmil Velikov1-1/+1
Signed-off-by: Emil Velikov <> Reviewed-by: Eric Engestrom <>
2016-10-14glx: Perform check for valid fbconfig against proper X-Screen.Mario Kleiner1-2/+1
Commit cf804b4455fac9e585b3600a8318caaced9c23de ('glx: fix crash with bad fbconfig') introduced a check in glXCreateNewContext() if the given config is a valid fbconfig. Unfortunately the check always checks the given config against the fbconfigs of the DefaultScreen(dpy), instead of the actual X-Screen specified in the config config->screen. This leads to failure whenever a GL context is created on a non-DefaultScreen(dpy), e.g., on X-Screen 1 of a multi-x-screen setup, where the default screen is typically 0. Fix this by using config->screen instead of DefaultScreen(dpy). Tested to fix context creation failure on a dual-x-screen setup. Signed-off-by: Mario Kleiner <> Cc: "11.2 12.0" <> Reviewed-by: Emil Velikov <>
2016-10-07loader/dri3: add get_dri_screen() to the vtableMartin Peres1-0/+11
This allows querying the current active screen from the loader's common code. Cc: Reviewed-by: Emil Velikov <> Signed-off-by: Martin Peres <>
2016-10-06glx: rename choose_visual(), drop const argumentEmil Velikov1-15/+11
The function deals with fb (style) configs, thus using "visual" in the name is misleading. Which in itself had led to the use of fbconfig_style_tags argument. Rename the function to reflect what it does and drop the unneeded argument. Signed-off-by: Emil Velikov <> Reviewed-by: Marek Olšák <> Reviewed-by: Ian Romanick <>
2016-10-06glx: return GL_FALSE from glx_screen_init where applicable.Emil Velikov1-2/+5
Return GL_FALSE if we fail to find any fb/visual configs, otherwise we end up with all sorts of chaos further down the GLX stack. Signed-off-by: Emil Velikov <> Reviewed-by: Marek Olšák <> Reviewed-by: Ian Romanick <>