Commit graph

2375 commits

Author SHA1 Message Date
Antonio Gomes
1396dc1c38 mesa/st, dri2, wgl, glx: Modify flush_objects interop func to export a fence_fd
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Acked-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21305>
2023-11-04 01:28:42 +00:00
Tapani Pälli
c7e522a9f3 egl: fix leaking drmDevicePtr in _eglFindDevice
Fixes: 3a9e1014e1 ("egl: Rename _eglAddDevice() to _eglFindDevice()")
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25524>
2023-10-25 12:37:30 +00:00
Mike Blumenkrantz
e36e9bd392 egl/wayland: only add more registry listeners for hardware devices
these extensions shouldn't be exposed for pure software drivers

fixes #9948

Fixes: 1b4e877def ("egl/wayland: use more registry listeners to better handle device init")

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25817>
2023-10-19 21:10:43 +00:00
Mike Blumenkrantz
8cd44b8843 egl: add automatic zink fallback loading between hw and sw drivers
if loading the default hardware driver fails, implicitly loading zink
should now be preferable to hitting the software fallback now that zink
has all the same capabilities

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25640>
2023-10-19 17:41:42 +00:00
Mike Blumenkrantz
cedb534a17 egl/glx: don't load non-sw zink without dri3 support
this is going to be broken, so don't bother trying

also add LIBGL_KOPPER_DRI2 so people can continue to footgun if they
really really want to

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25640>
2023-10-19 17:41:42 +00:00
Mike Blumenkrantz
ee04799d82 egl: init dri3 version info during screen creation
no functional changes

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25640>
2023-10-19 17:41:42 +00:00
Mike Blumenkrantz
1d149575ea egl: unify dri2_egl_display creation
this is the same for all platforms

no functional changes

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25640>
2023-10-19 17:41:42 +00:00
Leandro Ribeiro
2be404f557 egl: error out if we can't find an EGLDevice in _eglFindDevice()
Follow up of "egl/drm: get compatible render-only device fd for kms-only
device". Now we can properly error out when we don't find the EGLDevice
in _eglFindDevice().

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24825>
2023-10-17 20:31:13 +00:00
Leandro Ribeiro
88c03ddd34 egl/drm: get compatible render-only device fd for kms-only device
Things have been working by accident for split display/render SoCs when
using the GBM platform.

The device fd given to the GBM platform may be associated with a
KMS-only device, so _eglFindDevice() should find nothing (because the
global EGLDevice list only has render-capable devices). The only thing
making it work is that we don't error out when we go through the
EGLDevice list and can't find the device we are looking for. We simply
return the last EGLDevice from the list.

This patch fixes that. Now we look for a compatible render-only device
for the KMS-only in the GBM platform.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24825>
2023-10-17 20:31:13 +00:00
Mike Blumenkrantz
78f3db760d egl: don't set ForceSoftware for all zink loading
sometimes this is desired, other times it isn't

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25526>
2023-10-09 18:43:09 +00:00
Ian Douglas Scott
1950481d08 egl/wayland: Don't segfault if create_wl_buffer returns NULL
Normally, this shouldn't fail, but it has various cases where it returns
`NULL`. Without this change, it would result in a segfault when
`wl_buffer_add_listener` is called.

This instead makes `EGLSwapBuffers` return a `EGL_BAD_ALLOC` error.

The other place `create_wl_buffer` is called already checks the return
value, and the Vulkan WSI code doesn't seem to have an issue like this.

Signed-off-by: Ian Douglas Scott <ian@iandouglasscott.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24915>
2023-10-06 18:31:29 +00:00
Mike Blumenkrantz
548d088c26 egl/wayland: return sooner from swrast_update_buffers() if zink
Fixes: 0f50cc03ef0 ("egl/wayland: don't block in swrast when updating buffers for zink")

Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24700>
2023-10-06 04:53:40 +00:00
Mike Blumenkrantz
8aa43d70e1 egl/wayland: don't block in swrast when updating buffers for zink
this is broken, let vulkan wsi handle buffer management

Fixes: 74451ed3f0 ("egl/wayland: wait for compositor to release shm buffers")

Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24700>
2023-10-06 04:53:40 +00:00
Mike Blumenkrantz
e213623a8c Revert "egl/wayland: Add image loader extension for swrast"
This reverts commit 45b9b0ba32.

Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24700>
2023-10-06 04:53:40 +00:00
Leandro Ribeiro
e90b5385a0 egl: move is_render_node flag to platform_wayland
This flag is being used only by platform_wayland. So move it to be
included by the #ifdef HAVE_WAYLAND_PLATFORM in struct dri2_egl_display.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25504>
2023-10-04 17:01:42 +00:00
Leandro Ribeiro
394c3b97f1 egl: make explicit that we don't support render nodes for software EGLDevice
Currently we verify that by checking if the EGLDevice has a NULL
drmDevicePtr.

We have a proper way of checking that with _eglDeviceSupports(dev,
_EGL_DEVICE_SOFTWARE), so use that to make things more explicit.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25504>
2023-10-04 17:01:42 +00:00
Leandro Ribeiro
950825cb36 egl: simplify _eglAddDRMDevice()
We only create EGLDevice's for render-capable devices, so it's better
to document that in the code and simplify this function.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25504>
2023-10-04 17:01:42 +00:00
Leandro Ribeiro
f0861645bb egl: remove unused parameter from _eglAddDRMDevice()
No callers are using the _EGLDevice **out_dev parameter which is being
set by this function. So just drop it.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25504>
2023-10-04 17:01:41 +00:00
Leandro Ribeiro
7de445e69a egl: rewrite outdated comment in _eglFindDevice()
_eglAddDevice() has been renamed to _eglFindDevice(). But the comment
describing what this function does is outdated. Rewrite this comment.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25504>
2023-10-04 17:01:41 +00:00
Mike Blumenkrantz
d6748c72d8 egl/wayland: enable WL_bind_wayland_display for zink
Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24975>
2023-09-19 02:47:31 +00:00
Mike Blumenkrantz
1b4e877def egl/wayland: use more registry listeners to better handle device init
this handles globals like dmabuf and wl_drm and also enables creating
egl devices with valid fds

Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24975>
2023-09-19 02:47:31 +00:00
Mike Blumenkrantz
7ac0dbd73b egl/wayland: split out wl drm extension init
no functional changes

Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24975>
2023-09-19 02:47:31 +00:00
Mike Blumenkrantz
e0e812f34a egl/swrast: expose EXT_swap_buffers_with_damage and EXT_present_opaque
Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24975>
2023-09-19 02:47:31 +00:00
Alba Mendez
e3aab80d4f meson: support installation tags
the only thing missing is to tag custom install targets, namely:
 - ICDs (vulkan, glvnd, OpenCL, VA-API, VDPAU)
 - Vulkan layers
 - custom install script for megadrivers
 - drirc file

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24911>
2023-09-11 13:00:45 +00:00
Mike Blumenkrantz
9bd2fabee9 egl: bind dri2_set_WL_bind_wayland_display for zink when necessary
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24701>
2023-08-31 17:54:26 +00:00
Mike Blumenkrantz
4e7c7656f3 egl: call dri3_x11_connect() for zink
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24701>
2023-08-31 17:54:26 +00:00
Mike Blumenkrantz
a31922b785 egl/dri3: only set driver_name if not already set
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24701>
2023-08-31 17:54:26 +00:00
Simon Ser
5ceba97c2e vulkan/wsi/wayland: add support for IMMEDIATE
Use the tearing-control-unstable-v1 protocol to indicate to the
Wayland compositor that tearing is acceptable.

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18268>
2023-08-24 09:38:54 +00:00
Simon Ser
f7da5e3e38 wayland: enable use of wayland-protocols as a subproject
This allows developers to link subprojects/wayland-protocols/ to
a repository checkout. Useful when adding support for new protocols.

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18268>
2023-08-24 09:38:53 +00:00
Bas Nieuwenhuizen
d980f311b7 egl,venus,vulkan,turnip,freedreno: Update CPU trace init to init more than perfetto.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22505>
2023-08-19 23:09:45 +02:00
Sylvain Munaut
caf15a3276 egl: Advertise EGL_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>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24573>
2023-08-19 01:08:30 +00:00
Sylvain Munaut
48e416ee2f egl: Export the MESA GL Interop functions through eglGetProcAddress
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Acked-by: Antonio Gomes <antoniospg100@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24573>
2023-08-19 01:08:30 +00:00
Eric Engestrom
51a911cfa1 egl: bump extension string length
We've actually been over the 1000 char limit for a while, but we didn't
have a driver in CI that enabled enough extensions to notice it.

If all currently supported extensions are enabled, we need 1441 chars.
Let's bump the string to 2048 to have a little bit of margin.

Signed-off-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24781>
2023-08-18 23:37:36 +00:00
Italo Nicola
2edf222abd egl: reenable partial redraw with a warning when using gallium hud
Partial revert of e516a0a94f ("egl: disable partial redraw when gallium
hud is active").

We shouldn't change the behavior of the application when the hud is
enabled, doing so could make it harder do diagnose issues. Instead, now
we warn and ask the user to manually disable the extension if he
considers it to be worth it.

Fixes: e516a0a94f ("egl: disable partial redraw when gallium hud is active")
Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23456>
2023-08-15 08:18:52 +00:00
Konstantin Seurer
e2a02f3910 clang-format: Disable formatting by default
This should make `git clang-format` usable for patches that modify
clang formatted and manually formatted code.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9492
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24645>
2023-08-13 16:48:49 +02:00
Erico Nunes
c43135d740 egl/drm: fix EGL_EXT_buffer_age with gbm contexts
Fix remaining dri2 check from 3d59f4cfcb, which caused gbm contexts to
not expose EGL_EXT_buffer_age anymore.

Fixes: 3d59f4cfcb ("egl/drm: Use IMAGE_DRIVER instead of DRI2_LOADER")

Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24630>
2023-08-11 21:50:21 +00:00
Eric Engestrom
6db246c960 egl: fixup _eglFilterConfigArray() params and drop _eglFallbackMatch() wrapper
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24292>
2023-08-07 19:58:30 +00:00
Eric Engestrom
78714a4328 egl: make _eglFilterConfigArray static
Signed-off-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24292>
2023-08-07 19:58:30 +00:00
Sylvain Munaut
a0a5d0f02e egl/dri2: Add a couple of missing mutex release in error path
This is causing a hang in the intel compute runtime when
trying to cl/gl share an unsupported texture format.

Fixes: f1efe037df ("egl/dri2: Add display lock")

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24487>
2023-08-04 18:34:56 +00:00
Robert Foss
71db99e566 egl: Always set _EGLDisplay->Device during eglGetPlatformDisplay()
Make sure that all platform specific implementations of
eglGetPlatformDisplay() overwrite the Device field.

Fixes: c237539d62 ("egl: Implement EGL_EXT_explicit_device")

Signed-off-by: Robert Foss <rfoss@kernel.org>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24394>
2023-08-01 11:21:59 +00:00
Robert Foss
1efaa85889 egl: Fix attrib_list[0] == EGL_NONE check
_eglGetSurfacelessDisplay(), _eglGetWaylandDisplay() and
_eglGetGbmDisplay() handle the attrib_list[0] == EGL_NONE
case incorrectly by returning an EGL_BAD_ATTRIBUTE error.

Fix this bug, and switch the functions to use switch/case
in order to have the same structure as the sibling
_eglGetXXXDisplay() functions which support multiple attributes.

Fixes: c237539d62 ("egl: Implement EGL_EXT_explicit_device")

Signed-off-by: Robert Foss <rfoss@kernel.org>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24394>
2023-08-01 11:21:59 +00:00
Adam Jackson
c237539d62 egl: Implement EGL_EXT_explicit_device
Implement support for EGL_EXT_explicit_device[1].

[1] https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_explicit_device.txt

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Robert Foss <rfoss@redhat.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23873>
2023-07-28 18:00:34 +00:00
Roman Stratiienko
41e664f825 egl: android: Remove legacy name-based shared buffers support
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3415
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16578>
2023-07-28 17:09:14 +00:00
Daniel Stone
3d59f4cfcb egl/drm: Use IMAGE_DRIVER instead of DRI2_LOADER
We always have this extension available to us, since we demand matching
Mesa builds, and it's much better. Just use it always when we're not on
swrast.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24347>
2023-07-28 12:25:19 +00:00
Daniel Stone
0b976bd48d egl/wayland: Assume modern DRI interface versions
We know what version the DRI_IMAGE extension is, and it's higher than 7.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24347>
2023-07-28 12:25:19 +00:00
Daniel Stone
b3ec7c2a9e egl/wayland: Never use DRI2_LOADER extension
We don't need this anymore; the image loader extension does everything
we want it to and more, and is mandatory when we load.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24347>
2023-07-28 12:25:19 +00:00
Daniel Stone
45b9b0ba32 egl/wayland: Add image loader extension for swrast
It doesn't hurt to have it here, so might as well.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24347>
2023-07-28 12:25:19 +00:00
Daniel Stone
449e5bad7c egl/wayland: Always initialise fd_display_gpu
Set it to an invalid value, rather than leaving it to be stdout or
something.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24347>
2023-07-28 12:25:19 +00:00
Daniel Stone
08bfc7395e egl/dri2: Don't look up image extension twice
We already look up the image driver extension inside
dri2_core_extensions, so don't do it again in the optional extensions -
just do it in the swrast path so we have it covered for both.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24347>
2023-07-28 12:25:19 +00:00
Daniel Stone
00aa095d53 dri: Support 1555/4444 formats
Add support for 1555 and 4444 formats, both in RGB/BGR ordering, with
and without alpha.

These are already supported by Gallium and drivers, but not yet for
winsys surfaces. Adding these is enough to make them renderable when
using Weston on iris.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24331>
2023-07-28 12:44:01 +01:00