summaryrefslogtreecommitdiffstats
path: root/src/egl
Commit message (Collapse)AuthorAgeFilesLines
* egl: setup fds array correctly when exporting dmabufTapani Pälli2019-04-111-0/+12
| | | | | | | | | For formats with multiple planes, application will pass a num_planes sized fds array which should be initialized properly in case fds amount utilized by the driver is less than the number of planes. Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* egl: hide entrypoints that shouldn't be exported when using glvndEric Engestrom2019-03-291-0/+6
| | | | | | | | | | | From GLVND author: > From a functional standpoint, exporting additional symbols doesn't > really matter, since libglvnd will load the vendor libraries with > RTLD_LOCAL. Suggested-by: Kyle Brenneman <[email protected]> Signed-off-by: Eric Engestrom <[email protected]> Acked-by: Kyle Brenneman <[email protected]>
* egl/android: chose node type based on swrast and preprocessor flagsGurchetan Singh2019-03-271-3/+9
| | | | | | | | | kms_swrast can work with primary nodes out of the box, but also with rendernodes if the build environment specifies the EGL_FORCE_RENDERNODE flag. Suggested-by: Emil Velikov <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl/android: use software rendering when appropriateGurchetan Singh2019-03-271-5/+6
| | | | | | | | | Now the init logic fallbacks to or forces software rendering. v2: simplify flow (@eric) Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: use swrast option in droid_load_driverGurchetan Singh2019-03-271-0/+18
| | | | | | | | | | | Load the kms_swrast driver when specified. Doesn't work with drm_gralloc. v2: remove unneeded line (@eric) v3: Remove swrast_loader_extensions (@evelikov) Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: plumb swrast optionGurchetan Singh2019-03-271-9/+9
| | | | | | | It's good to have options. Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: refactor droid_load_driver a bitGurchetan Singh2019-03-271-24/+20
| | | | | | | | This way, we can use primary nodes with kms_swrast too. Also fix up some whitespace issues. Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: droid_open_device_drm_gralloc --> droid_open_deviceGurchetan Singh2019-03-271-7/+4
| | | | | | | | Makes things easier to follow. Suggested-by: Emil Velikov <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: move droid_open_device_drm_gralloc down a bitGurchetan Singh2019-03-271-27/+24
| | | | | | | | | 1) Removes a forward declaration. 2) Makes next patch easier. Suggested-by: Emil Velikov <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: move droid_image_loader_extension down a bitGurchetan Singh2019-03-271-10/+8
| | | | | | | This removes some #ifdefs. Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl: Add a 565 pbuffer-only EGL config under X11.Eric Anholt2019-03-221-0/+47
| | | | | | | | | | | | | | The CTS requires a 565-no-depth-no-stencil (meaning d/s not-required, not not-present) config for ES 3.0, but at depth 24 of X11 we wouldn't do so. We can satisfy that bad requirement using a pbuffer-only visual with whatever other buffers the driver happens to have given us. I've tried to raise this as an absurd requirement with Khronos and made no progress. v2: Make sure it's single sample, no depth, no stencil. Comment typo fix Reviewed-by: Adam Jackson <[email protected]>
* configure.ac/meson.build: Add options for library suffixesBenjamin Gordon2019-03-212-5/+5
| | | | | | | | | | | | | | | | | When building the Chrome OS Android container, we need to build copies of mesa that don't conflict with the Android system-supplied libraries. This adds options to create suffixed versions of EGL and GLES libraries: libEGL.so -> libEGL${egl-lib-suffix}.so libGLESv1_CM.so -> libGLESv1_CM${gles-lib-suffix}.so libGLESv2.so -> libGLES${gles-lib-suffix}.so This is similar to what happens when --enable-libglvnd is specified, but without the side effects of linking against libglvnd. To avoid unexpected clashes with the suffixed appended by libglvnd, make it an error to specify both --enable-libglvnd and --with-egl-lib-suffix. Reviewed-by: Eric Engestrom <[email protected]>
* android: Build fixes for OMR1Tapani Pälli2019-03-181-0/+7
| | | | | | | | | | | | | Some of the header file locations are changed between Android versions (when VNDK is used), patch makes sure we get all the required headers. v2: cleanups, put SDK version checks in all places (Tapani) Signed-off-by: Tapani Pälli <[email protected]> Signed-off-by: Chen Lin Z <[email protected]> Tested-by: Clayton Craft <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* egl/dri: Avoid out of bounds array accessKevin Strasser2019-03-131-2/+4
| | | | | | | | | | | indexConfigAttrib iterates over every index in the dri driver, possibly exceeding __DRI_ATTRIB_MAX. In other words, if the dri driver has newer attributes libEGL will end up reading from uninitialized memory through dri2_to_egl_attribute_map[]. Signed-off-by: Kevin Strasser <[email protected]> Cc: [email protected] Reviewed-by: Emil Velikov <[email protected]>
* egl: fix libdrm-less buildsEric Engestrom2019-03-052-15/+0
| | | | | | | | | | | | This function was never used, and isn't properly guarded by HAVE_LIBDRM, breaking the build on systems that don't have libdrm. Let's just remove it. Fixes: 7552fcb7b9b98392e6a8 "egl: add base EGL_EXT_device_base implementation" Reported-by: Timo Aaltonen <[email protected]> Signed-off-by: Eric Engestrom <[email protected]> Acked-by: Emil Velikov <[email protected]>
* egl/sl: also allow virtgpu to fallback to kms_swrastGurchetan Singh2019-03-041-2/+7
| | | | | | | | | | | virtio-gpu fallbacks to software rendering when 3D features are unavailable since 6c5ab, and kms_swrast is more feature complete than swrast. v2: Add comment (Emil) Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl/sl: use kms_swrast with vgem instead of a random GPUEmil Velikov2019-02-281-8/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | VGEM and kms_swrast were introduced to work with one another. All we do is CPU rendering to dumb buffers. There is no reason to carve out GPU memory, increasing the memory pressure on a device that could make a better use of it. Note: - The original code did not work out of the box, since the dumb buffer ioctls are not exposed to render nodes. - This requires libdrm commit 3df8a7f0 ("xf86drm: fallback to MODALIAS for OF less platform devices") - The non-kms, swrast is unaffected by this change. v2: - elaborate what and how is/isn't working (Eric) - simplify driver_name handling (Eric) v3: - move node_type outside of the loop (Eric) - kill no longer needed DRM_RENDER_DEV_NAME define Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Gurchetan Singh <[email protected]>
* egl/sl: use drmDevice API to enumerate available devicesEmil Velikov2019-02-281-36/+37
| | | | | | | | | | | | | | This provides for a more comprehensive iteration and slightly more straight-forward codebase. v2: - s/dpy/disp/ - keep original 64 devices (Eric) Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-by: Gurchetan Singh <[email protected]>
* egl/sl: split out swrast probe into separate functionEmil Velikov2019-02-281-16/+27
| | | | | | | | | | | | | | | | Make the code a bit easier to read. As a bonus point this makes it obvious that we forgot to call _eglAddDevice() for the device - do so. v2: - s/dpy/disp/ (Eric) - free(driver_name) on dri2_load_driver_swrast() failure (Eric) Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> (v1) Reviewed-by: Gurchetan Singh <[email protected]>
* egl/android: replace magic 0=CbCr,1=CrCb with simple enumEric Engestrom2019-02-281-18/+24
| | | | | Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
* dri: Add XYUV8888 formatKasireddy, Vivek2019-02-263-0/+3
| | | | | | | | | | In addition to adding this format to the dri_interface header, add an entry in the android and wayland backends as well. Signed-off-by: Vivek Kasireddy <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/android: bump the number of drmDevices to 64Emil Velikov2019-02-261-1/+1
| | | | | | | It's the current maximum supported by the kernel. Stay consistent with the rest of Mesa and use the same number. Signed-off-by: Emil Velikov <[email protected]>
* meson: egl: correctly manage loader/xmlconfigEmil Velikov2019-02-261-6/+5
| | | | | | | | | | | | | | | | | | | | | | | Earlier commit introduced support for haiku yet did not properly annotate the loader/xmlconfig dependencies. Thus we ended up adding inc_loader for each !haiku platform - see 659910eda01 9a96bf0ecd0 c731508b988 ec6cb01e216. One piece remained though - the wayland platform. Hence the following would fail: meson -Dgallium-drivers=etnaviv -Ddri-drivers=''\ -Dtools=etnaviv -Dplatforms=wayland -Dglx=disabled \ build/ Cc: Alexander von Gluck IV <[email protected]> Reported-by: Boris Brezillon <[email protected]> Fixes: 834d221512f ("meson: Add Haiku platform support v4") Signed-off-by: Emil Velikov <[email protected]> Tested-by: Boris Brezillon <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Dylan Baker <[email protected]>
* egl/dri: de-duplicate dri2_load_driver*Emil Velikov2019-02-261-34/+11
| | | | | | | | | The difference between the three functions is the list of mandatory driver extensions. Pass that as an argument to the common helper. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Frank Binns <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* wayland/egl: Ensure EGL surface is resized on DRI update_buffers()Carlos Garnacho2019-02-201-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fullscreening and unfullscreening a totem window while playing a video sometimes results in the video subsurface not changing size along. This is also reproducible with epiphany. If a surface gets resized while we have an active back buffer for it, the resized dimensions won't get neither immediately applied on the resize callback, nor correctly synchronized on update_buffers(), as the (now stale) surface size and currently attached buffer size still do match. There's actually 2 things to synchronize here, first the surface query size might not be updated yet to the wl_egl_window's (i.e. resize_callback happened while there is a back buffer), and second the wayland buffers would need dropping if new surface size differs with the currently attached buffer. These are done in separate steps now. https://bugzilla.redhat.com/show_bug.cgi?id=1650929 https://bugs.freedesktop.org/show_bug.cgi?id=109594 Fixes: a9fb331ea7d ("wayland/egl: update surface size on window resize") Signed-off-by: Carlos Garnacho <[email protected]> Reviewed-by: Juan A. Suarez <[email protected]> Reviewed-by: Daniel Stone <[email protected]> Tested-by: Bastien Nocera <[email protected]> Tested-by: Denys Kostin <[email protected]>
* drm-uapi: use local files, not system libdrmEric Engestrom2019-02-146-6/+4
| | | | | | | | | There was an issue recently caused by the system header being included by mistake, so let's just get rid of this include path and always explicitly #include "drm-uapi/FOO.h" Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Kristian H. Kristensen <[email protected]>
* egl: fix KHR_partial_update without EXT_buffer_ageChia-I Wu2019-02-121-1/+6
| | | | | | | | EGL_BUFFER_AGE_EXT can be queried without EXT_buffer_age. Signed-off-by: Chia-I Wu <[email protected]> Acked-by: Lionel Landwerlin <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* dri: add P010, P012, P016 for 10bit/12bit/16bit YUV420 formatsTapani Pälli2019-02-121-0/+17
| | | | | | Signed-off-by: Tapani Pälli <[email protected]> Signed-off-by: Lin Johnson <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]>
* egl: use coherent variable namesEric Engestrom2019-02-0624-383/+383
| | | | | | | | | | | | | | | | | `EGLDisplay` variables (the opaque Khronos type) have mostly been consistently called `dpy`, as this is the name used in the Khronos specs. However, `_EGLDisplay` variables (our internal struct) have been randomly called `dpy` when there was no local variable clash with `EGLDisplay`s, and `disp` otherwise. Let's be consistent and use `dpy` for the Khronos type, and `disp` for our struct. Signed-off-by: Eric Engestrom <[email protected]> Acked-by: Emil Velikov <[email protected]> Acked-by: Eric Anholt <[email protected]>
* egl/wayland-drm: Only announce formats via wl_drm which the driver supports.Mario Kleiner2019-01-295-5/+51
| | | | | | | | | | | | | | | | | | | | | Check if a pixel format is supported by the Wayland servers gpu driver before exposing it to the client via wl_drm, so we avoid reporting formats to the client which the server gpu can't handle. Restrict this reporting to the new color depth 30 formats for now, as the ARGB/XRGB8888 and RGB565 formats are probably supported by every gpu under the sun. Atm. this is mostly useful to allow proper PRIME renderoffload for depth 30 formats on the typical Intel iGPU + NVidia dGPU "NVidia Optimus" laptop combo. Tested on Intel, AMD, NVidia with single-gpu setup and on a Intel + NVidia Optimus setup. Signed-off-by: Mario Kleiner <[email protected]> Reviewed-by: Adam Jackson <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/wayland: Allow client->server format conversion for PRIME offload. (v2)Mario Kleiner2019-01-291-9/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support PRIME render offload between a Wayland server gpu and a Wayland client gpu with different channel ordering for their color formats, e.g., between Intel drivers which currently only support ARGB2101010 and XRGB2101010 import/display and nouveau which only supports ABGR2101010 rendering and display on nv-50 and later. In the wl_visuals table, we also store for each format an alternate sibling format which stores colors at the same precision, but with different channel ordering, e.g., ARGB2101010 <-> ABGR2101010. If a given client-gpu renderable format is not supported by the server for import, but the alternate format is supported by the server, expose the client-gpu renderable format as a valid EGLConfig to the client. At eglSwapBuffers time, during the blitImage() detiling blit from the client backbuffer to the linear buffer, the client format is converted to the server supported format. As we have to do a copy for PRIME anyway, this channel swizzling conversion comes essentially for free. Note that even if a server gpu in principle does support sampling from the clients native format, this conversion will be a performance advantage if it allows to convert to the servers preferred format for direct scanout, as the Wayland compositor may then be able to directly page-flip a fullscreen client wl_buffer onto the primary plane, or onto a hardware overlay plane, avoiding an extra data copy for desktop composition. Tested so far under Weston with: nouveau single-gpu, Intel single-gpu, AMD single-gpu, "Optimus" Intel server iGPU for display + NVidia client dGPU for rendering. v2: Implement minor review comments by Eric Engestrom: Add some comment and assert, and some style fixes for clarity. No functional change. Signed-off-by: Mario Kleiner <[email protected]> Reviewed-by: Adam Jackson <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* mapi: move genCommon.py to src/mapi/newEmil Velikov2019-01-244-229/+17
| | | | | | | | | | | The helper will also be used by the new Khronos gl.xml aware generator. v2: Move existing one, instead of duplicating it. v3: Correct genCommon.py references in meson [Erik] v4: Drop the file from the EGL EXTRA_DIST [Erik] Suggested-by: Kyle Brenneman <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* genCommon.py: Fix typo in _LIBRARY_FEATURE_NAMES.Emil Velikov2019-01-241-1/+1
| | | | | | | | Port glvnd commit 37fc6caa4b8 ("Fix typo in _LIBRARY_FEATURE_NAMES.") from Michal Srb. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]>
* egl/glvnd: sync egl.xml from KhronosEric Engestrom2019-01-241-18/+183
| | | | | | Fixes: 98984b7cdd79c15cc733 "egl: add glvnd entrypoints for EGL_MESA_query_driver" Signed-off-by: Eric Engestrom <[email protected]> Acked-by: Emil Velikov <[email protected]>
* egl: Implementation of egl dri2 drivers for MESA_query_driverVeluri Mithun2019-01-242-0/+38
| | | | | | | Signed-off-by: Veluri Mithun <[email protected]> Acked-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl: add glvnd entrypoints for EGL_MESA_query_driverEric Engestrom2019-01-241-0/+4
| | | | | | Fixes: fbdd7bde29863935106c "egl: Implement EGL API for MESA_query_driver" Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl: Implement EGL API for MESA_query_driverVeluri Mithun2019-01-244-0/+38
| | | | | | | Signed-off-by: Veluri Mithun <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* Revert "Implement EGL API for MESA_query_driver"Mark Janes2019-01-234-38/+0
| | | | | | | | | This reverts commit ff621a505594a3217f24fb785c51f43580f1bf78. with default warnings configuration, this commit generates: ../src/egl/main/eglapi.c:2654:1: error: no previous prototype for ‘eglGetDisplayDriverConfig’ [-Werror=missing-prototypes]
* Revert "Implementation of egl dri2 drivers for MESA_query_driver"Mark Janes2019-01-232-38/+0
| | | | This reverts commit 2720f78ef231a5a19ea69731755ee4242acbc580.
* Implementation of egl dri2 drivers for MESA_query_driverVeluri Mithun2019-01-232-0/+38
| | | | | | Signed-off-by: Veluri Mithun <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* Implement EGL API for MESA_query_driverVeluri Mithun2019-01-234-0/+38
| | | | | | | | | Signed-off-by: Veluri Mithun <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* egl: fix python lib deprecation warningEric Engestrom2019-01-133-14/+7
| | | | | | | | | DeprecationWarning: the imp module is deprecated in favour of importlib Instead of complicated logic, just import the file directly. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* egl: remove unused includeEric Engestrom2019-01-111-2/+0
| | | | | Signed-off-by: Eric Engestrom <[email protected]> Acked-by: Emil Velikov <[email protected]>
* egl: add missing includesEric Engestrom2019-01-116-0/+9
| | | | | Signed-off-by: Eric Engestrom <[email protected]> Acked-by: Emil Velikov <[email protected]>
* egl/haiku: Fix reference to disp vs dpyAlexander von Gluck IV2019-01-021-1/+2
| | | | | Reviewed-by: Eric Engestrom <[email protected]> Fixes: 00992700c9a812a54563 "egl: set the EGLDevice when creating a display"
* egl: add missing #include <stddef.h> in egldevice.hGurchetan Singh2018-11-281-1/+1
| | | | | | | | | | | | | | | | | | Otherwise, I get this error: main/egldevice.h:54:13: error: ‘NULL’ undeclared (first use in this function) dev = NULL; ^~~~ with this config: ./autogen.sh --enable-gles1 --enable-gles2 --with-platforms='surfaceless' --disable-glx --with-dri-drivers="i965" --with-gallium-drivers="" --enable-gbm v3: Use stddef.h (Matt) v4: Modify commit message (Eric) Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/wayland: rather obvious build fixNicolai Hähnle2018-11-281-2/+2
| | | | | Fixes: ce74a7bb8de7 ("egl/wayland: plug memory leak in drm_handle_device()") Fixes: c59d3aa4b9bc ("egl/wayland: bail out when drmGetMagic fails")
* egl/wayland: plug memory leak in drm_handle_device()Emil Velikov2018-11-281-0/+2
| | | | | | | | | | As we fail to open the node, we leak the node/device name. v2: Log and then free() (Eric) Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/wayland: bail out when drmGetMagic failsEmil Velikov2018-11-281-1/+8
| | | | | | | | | | | | | Currently as the function fails, we pass uninitialized data to the authentication function. Stop doing that and print an warning when the function fails. v2: Plug memory leak in error path (Eric) Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> (v1) Reviewed-by: Eric Engestrom <[email protected]>
* meson: Add tests to suitesDylan Baker2018-11-201-2/+4
| | | | | | | | | | | | | | | | Meson test has a concepts of suites, which allow tests to be grouped together. This allows for a subtest of tests to be run only (say only the tests for nir). A test can be added to more than one suite, but for the most part I've only added a test to a single suite, though I've added a compiler group that includes nir, glsl, and glcpp tests. To use this you'll need to invoke meson test directly, instead of ninja test (which always runs all targets). it can be invoked as: `meson test -C builddir --suite $suitename` (meson test has addition options that are pretty useful). Tested-By: Gert Wollny <[email protected]> Acked-by: Eric Engestrom <[email protected]>