Mike Blumenkrantz
50fc7cc290
glx: directly link to gallium
...
this eliminates the loader interface, which avoids an entire class
of issues and simplifies a bunch of code
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29771 >
2024-07-18 20:30:43 +00:00
Luc Ma
3825e24085
loader: silence implicit-load zink error by the loader
...
Since commit 7d9ea77b45
("glx: add automatic zink fallback loading between hw
and sw drivers"), zink could be tried as a fallback. It'd better silence
if the zink loading is implicit and on fail as what commit 4cc975c6e9
("glx: silence
more implicit-load zink errors") has done. But there seems to be one
left bebind, which is spit when building swrast but no zink with -Dglx=dri.
v2: plumb the flag through from egl/glx to the loader (zmike)
Signed-off-by: Luc Ma <luc@sietium.com >
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28970 >
2024-05-10 14:19:59 +00:00
Mike Blumenkrantz
2efa1ae0d5
dri: rename 'implicit' param from earlier series
...
I accidentally merged the wrong version of this, and this was supposed
to be the correct and more informative name
Acked-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29066 >
2024-05-07 15:19:23 +00:00
Mike Blumenkrantz
14c44aacff
dri: plumb a 'implicit' param through createNewScreen interfaces
...
Acked-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28139 >
2024-04-22 23:25:58 +00:00
Mike Blumenkrantz
91c757bda1
glx: add an 'implicit' param to createScreen
...
Acked-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28139 >
2024-04-22 23:25:58 +00:00
duncan.hopkins
97b6851815
apple: Extended Apple feature support using GLX_USE_APPLE.
...
On MacOS/Apple/Dawin you can only get MESA to forward the GL funtions to
the systems OpenGL.framework or run SWRast directly. There is no way to use a gallium driver, even if they have been compiled.
The two gallium drivers of interest are SWRast and Zink, as the rest are hardware drivers and not relavent on MacOS.
The code changes add a new define GLX_USE_APPLE. This is used in combination with the existing GLX_USE_APPLEGL.
GLX_USE_APPLEGL calls the systems OpenGL.framework, Apple's OpenGL.
GLX_USE_APPLE calls the non-system OpenGL code, i.e. Gallium, hence the subtle naming difference. Apple systems are still used, just not the GL ones.
When GLX_USE_APPLE is defined the code will use the DRI/gallium driver sub-system so SWRast and Zink can selected at runtime on MacOS.
This also allows Zink to be run on MacOS, once it is fixed up.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28205 >
2024-03-18 18:06:45 +00:00
Sylvain Munaut
8ee8788208
glx: Advertise GLX_MESA_gl_interop extension if support present
...
Signed-off-by: Sylvain Munaut <tnt@246tNt.com >
Acked-by: Antonio Gomes <antoniospg100@gmail.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24573 >
2023-08-19 01:08:30 +00:00
Xi Ruoyao
bbd4284016
Revert "glx: Remove pointless GLX_INTEL_swap_event paranoia"
...
This reverts commit 19c57ea3bf
.
This commit is causing a reproducible crash of GNOME shell on Xorg
server. Revert it for now and we may investigate it further in the
future.
Fixes #8542 .
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23589 >
2023-06-12 15:35:45 +00:00
Harri Nieminen
608ed04cc1
glx: fix typos
...
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22663 >
2023-04-26 23:52:21 +00:00
Adam Jackson
5dba6726f7
glx/dri: Fix error generation for invalid GLX_RENDER_TYPE
...
This needs to throw BadValue.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12006 >
2023-04-06 21:29:54 +00:00
Adam Jackson
9c76682d80
glx/dri: Use X/GLX error codes for our create_context_attribs
...
This has no functional change because everyone calling this is
discarding the error code, because we're relying on the server to
generate the right thing for us. But we create the direct context first
and the server isn't going to enforce everything we want it to
(supported GL versions for example). Convert out from DRI error codes to
X/GLX error codes so we can fail the right way on the client side. We're
still throwing the error away in all of the callers but that'll change
shortly.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12006 >
2023-04-06 21:29:54 +00:00
Adam Jackson
cf9debb639
glx: Clean up some funny business from context bind/unbind
...
We always fully unbind the old context before binding the new one, so
there's no point in passing both contexts to both the unbind and then
the bind.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20549 >
2023-01-13 19:59:26 +00:00
Pierre-Eric Pelloux-Prayer
31d95dd3c6
dri: get rid of LIBGL_SHOW_FPS
...
The same functionnality can be achieved using GALLIUM_HUD=stdout,fps (and for
now a fallback is doing this if LIBGL_SHOW_FPS=1 is used).
This removes one entry from the vtable and simplify dri3_handle_present_event.
Reviewed-by: Emma Anholt <emma@anholt.net >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20494 >
2023-01-09 14:25:51 +01:00
Adam Jackson
19c57ea3bf
glx: Remove pointless GLX_INTEL_swap_event paranoia
...
It's not our job to filter this out, it's the server's job to not send
events that haven't been selected for. We'll still throw the event away
if we don't have any client-side state for it though.
Acked-by: David Heidelberg <david.heidelberg@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20300 >
2023-01-03 23:36:26 +00:00
Emma Anholt
a42feab5ae
egl+glx: Always support no_error contexts.
...
Since we know we're loading this Mesa build, we know that no_error is
always supported (the renderer query always returned true).
Reviewed-by: Adam Jackson <ajax@redhat.com >
Acked-by: Eric Engestrom <eric@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20069 >
2022-12-05 19:26:41 +00:00
Emma Anholt
1026d29344
dri: Introduce internal Mesa DRI driver loader extension.
...
All DRI loaders in Mesa (EGL, GLX, gbm) now require this ext and that the
driver come from a matching build. This will let us use Mesa-internal
types and enums across the loader-driver bounary inside of Mesa.
Reviewed-by: Adam Jackson <ajax@redhat.com >
Acked-by: Eric Engestrom <eric@igalia.com >
LOL-YESed-by: Kristian Høgsberg <krh@bitplanet.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20069 >
2022-12-05 19:26:41 +00:00
Emma Anholt
3ae6ec9f60
glx: Use loader_bind_extensions().
...
This adds more consistent logging on failure and gives us a spot for
version checks.
Reviewed-by: Adam Jackson <ajax@redhat.com >
Acked-by: Eric Engestrom <eric@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20069 >
2022-12-05 19:26:41 +00:00
Emma Anholt
f4af33a36c
glx: Require __DRI_DRI2 v2 for doing X11 DRI2.
...
The only implementer in tree is v4.
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20044 >
2022-12-01 09:17:31 +00:00
Marek Olšák
8cb8a3c03d
glx,dri: simplify indirect function call syntax
...
just remove () and * and the space
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19741 >
2022-11-27 02:52:41 +00:00
Martin Roukala (né Peres)
ea3f73ba85
Revert "glx/dri: Fix DRI drawable release at MakeCurrent time"
...
This reverts commit 31b04e420b
which
is also breaking KDE in some ways.
Fixes : #7674
Acked-by: Michel Dänzer <mdaenzer@redhat.com >
Acked-by: Tapani Pälli <tapani.palli@intel.com >
Acked-by: Adam Jackson <ajax@redhat.com >
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19972 >
2022-11-25 20:08:45 +00:00
Jesse Natalie
8d55fb54b1
glx: Implement the new flush method
...
Reviewed-by: Adam Jackson <ajax@redhat.com >
Acked-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19242 >
2022-11-02 18:11:41 +00:00
Adam Jackson
333895bebc
glx/dri*: Unify glx_context subclassing
...
The AppleGLX way reads a little nicer than the DRI wrapping way, I
think. First time for everything.
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18473 >
2022-09-17 03:06:10 +00:00
Adam Jackson
4d8420dcb4
Revert "glx: Use XSaveContext, delete glxhash.c"
...
This reverts commit 057c58b39b
.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7242
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18556 >
2022-09-12 21:18:15 +00:00
Adam Jackson
057c58b39b
glx: Use XSaveContext, delete glxhash.c
...
libX11 has a perfectly good XID-based hash table we can be using, let's.
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18474 >
2022-09-08 23:43:42 +00:00
Emma Anholt
ff18be0872
glx: Unify dri2/dri3 vblank_mode logic.
...
We need it from kopper, as well.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17470 >
2022-07-12 21:57:23 +00:00
Adam Jackson
11c30fcad0
glx/dri2: Stop tracking the protocol version in the display state
...
We only use it at init time, no need to keep it around.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17422 >
2022-07-12 18:43:24 +00:00
Adam Jackson
31b04e420b
glx/dri: Fix DRI drawable release at MakeCurrent time
...
We want to release the drawables of the context we're coming from, but
we were releasing them from the context we're switching to. This is
probably not a big deal normally because both contexts are likely to be
on the same display, which is all that driReleaseDrawables is really
sensitive to. But if the contexts are on different Displays this would
go quite wrong.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17176 >
2022-06-27 20:03:26 +00:00
Adam Jackson
4d0179af32
glx/dri2: Require DRI2 >= 1.3 for working buffer invalidation
...
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10808 >
2022-05-17 20:31:50 +00:00
Adam Jackson
b6ea787903
glx/kopper: Enable GLX_EXT_swap_control etc.
...
This requires newly tracking the max swap interval since kopper can't do
abs(interval) > 1 yet.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15800 >
2022-05-04 15:06:51 +00:00
Adam Jackson
bab8d97ea9
glx: Learn about kopper
...
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14541 >
2022-04-07 00:17:40 +00:00
Yonggang Luo
24bc6c51e1
glx/egl: improve dri null screen related error messages.
...
Convert from `failed to create dri screen` to more exact error message
for easier debugging
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15480 >
2022-03-21 09:31:31 +00:00
Adam Jackson
538356e3e6
glx: Use the new no-error driver interface
...
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12474 >
2022-02-04 18:36:24 +00:00
Thomas H.P. Andersen
7daba1fe65
replace 0 with NULL for NULL pointers
...
This updates many places where 0 is used as NULL pointer.
There are a few warnings left when I build the default
configuration but they either relate to code
outside of mesa or where "None" is used instead.
Found with static analysis (smatch)
Reviewed-by: Matt Turner <mattst88@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12174 >
2022-01-10 22:53:32 +00:00
Qiang Yu
887f5a6320
glx: add drawable type argument when create drawable
...
For distinguish different behavior of pixmap and pbuffer
in latter commits.
Reviewed-by: Adam Jackson <ajax@redhat.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13750 >
2021-12-07 03:26:13 +00:00
Marek Olšák
83278b5661
glx: add a workaround to glXDestroyWindow for Viewperf2020/Sw
...
This fixes:
X Error of failed request: GLXBadWindow
Major opcode of failed request: 152 (GLX)
Minor opcode of failed request: 32 (X_GLXDestroyWindow)
Serial number of failed request: 9667
Current serial number in output stream: 9674
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13611 >
2021-11-17 21:26:54 +00:00
Pierre-Eric Pelloux-Prayer
fc3ef76eec
glx/drirc: add a force_direct_glx_context option
...
Some applications may request an indirect context but this feature is
disabled by default on Xorg and thus context creation will fail.
This commit adds a drirc setting to force the creation of direct glx
context, regardless of what the app is requesting.
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13246 >
2021-11-04 13:59:00 +01:00
Sergii Melikhov
71e748ad24
dri2: Fix Null pointer dereferences
...
Fix defect reported by Coverity Scan CID-1490794
Fixes: 0d42033b26
("glx/dri2: Require the driver to support v4 of __DRI_DRI2")
Signed-off-by: Sergii Melikhov <sergii.v.melikhov@globallogic.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12563 >
2021-08-26 17:09:23 +03:00
Adam Jackson
a521b502b9
glx/dri: Collect the GLX context attributes in a struct
...
dri2_convert_glx_attribs had way too many arguments, let's fix that.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12456 >
2021-08-18 21:11:02 +00:00
Adam Jackson
0d42033b26
glx/dri2: Require the driver to support v4 of __DRI_DRI2
...
Mesa has supported this unconditionally since 10.1.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12456 >
2021-08-18 21:11:02 +00:00
Adam Jackson
bfad9e75c0
glx: Store the context vtable on the glx screen
...
Again this is rewriting part of driX_create_context_attribs to be
caller-agnostic, so that we can eventually unify it among the DRI
backends.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12456 >
2021-08-18 21:11:02 +00:00
Adam Jackson
145992890c
glx: Fix and simplify the share context compatibility check
...
We only end up with one DRI provider per screen, so the only way the
context vtable can differ is if they're not the same directness. Rewrite
the test in those terms to help us unify some of this code away in the
future. Also apply the same logic to the indirect context creation path.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12456 >
2021-08-18 21:11:02 +00:00
Adam Jackson
f5d6a1b916
Revert "glx: s/Display */struct glx_display */ over internal API"
...
This broke texture-from-pixmap in OBS Studio so I must have done
something wrong and also we need better tfp testing.
This reverts commit b02b26b87c
.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4718
Acked-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10593 >
2021-05-03 15:00:41 -04:00
Adam Jackson
b02b26b87c
glx: s/Display */struct glx_display */ over internal API
...
We'd like to avoid __glXInitialize as much as possible since it involves
taking a global lock. This means converting internal APIs to operate as
much as possible in terms of something other than a Display *, since if
that's all you have then you're forced to call __glXInitialize to get to
the glx_display.
The contortions in DRI2 displease me, but DRI2 displeases me, so.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10418 >
2021-04-29 20:34:25 +00:00
Adam Jackson
2c8a85b712
glx: Stash a copy of the XExtCodes in the glx_display
...
Instead of a pointer into xlib's state for it. Mostly because it lets us
remove our copy of majorOpcode from the display without taking another
pointer indirection.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10418 >
2021-04-29 20:34:25 +00:00
Adam Jackson
01ba8a8d02
glx: Implement GLX_EXT_no_config_context
...
This is the GLX counterpart to EGL_KHR_no_config_context. Contexts may
now be created without reference to an fbconfig, in which case it is
treated as compatible with any fbconfig (and thus any GLX drawable).
Khronos: https://github.com/KhronosGroup/OpenGL-Registry/pull/102
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Acked-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8999 >
2021-04-23 21:15:19 +00:00
Adam Jackson
a2b474c333
glx: Move {Bind,Release}TexImage from context to screen vtable
...
All the other operations on drawables live there, be consistent.
Acked-by: Eric Engestrom <eric@engestrom.ch >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9992 >
2021-04-13 22:58:58 +00:00
Adam Jackson
621b3a4041
glx: Pull get_proc_address out of the context vtable
...
One, only applegl needs this. Two, this isn't a function of the context
in any way so it doesn't belong in the context vtable. Just special-case
applegl for now, we can revisit applegl's dispatch later.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9690 >
2021-03-19 11:13:07 -04:00
Adam Jackson
cba1d6de22
glx: Pull use_x_font out of the context vtable
...
The client-side implementation of this operates entirely in terms of the
GL and X client APIs. There's nothing DRI-specific about it, evidenced
by apple and windows using it unchanged. Save a little code size by
handling the direct/indirect difference directly.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9690 >
2021-03-19 11:13:07 -04:00
Adam Jackson
63822802ef
glx: Handle create_context in terms of create_context_attribs
...
For the DRI backends we factor this out to a dri_common_create_context
method. Indirect gets the same transformation but doesn't use the common
method since it can't rely on DRI being built.
Reviewed-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7660 >
2020-12-01 18:40:18 +00:00
Adam Jackson
c4ed0e8f3f
glx: Check share ctx compatibility in ::create_context_attribs
...
Most of the legacy CreateContext paths already did this, this is just
aligning the two so we can implement one in terms of the other.
Reviewed-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7660 >
2020-12-01 18:40:18 +00:00