summaryrefslogtreecommitdiffstats
path: root/src/egl/drivers/dri2
Commit message (Collapse)AuthorAgeFilesLines
* wayland-drm: constify the callbacks struct, take 2Emil Velikov2017-10-131-9/+5
| | | | | | | | | | | Now that wayland-drm (correctly) keeps a local copy of the callbacks, this should not longer cause explosions. After all the symbol is a local, constant data. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]> Tested-by: Derek Foreman <[email protected]>
* egl/dri: don't crash when createImageFromRenderbuffer2 is NULLEmil Velikov2017-10-131-1/+2
| | | | | | | | | | | The __DRI_IMAGE version can be 17 or over, while the function pointer is NULL. Guard for that instead of crashing. Fixes: bad24395d91 ("egl/dri: use createImageFromRenderbuffer2 when available") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* egl: replace _egl_driver->Unload() callback with a simple free()Eric Engestrom2017-10-121-9/+0
| | | | | | | Bonus: fixes a memleak on haiku when unloading the driver Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl/dri: remove old left-oversNicolai Hähnle2017-10-101-2/+0
| | | | Reviewed-by: Eric Engestrom <[email protected]>
* egl/dri: use createImageFromRenderbuffer2 when availableNicolai Hähnle2017-10-101-3/+20
| | | | Reviewed-by: Eric Engestrom <[email protected]>
* egl/dri: factor out egl_error_from_dri_image_errorNicolai Hähnle2017-10-101-28/+26
| | | | Reviewed-by: Eric Engestrom <[email protected]>
* egl: Simplify the "driver" interfaceAdam Jackson2017-10-051-3/+1
| | | | | | | | | | | | | | | | | | "Driver" isn't a great word for what this layer is, it's effectively a build-time choice about what OS you're targeting. Despite that both of the extant backends totally ignore the display argument, the old code would only set up the backend relative to a display. That causes problems! One problem is it means eglGetProcAddress can generate X or Wayland protocol when it tries to connect to a default display so it can call into the backend, which is, you know, completely bonkers. Any other EGL API that doesn't reference a display, like EGL_EXT_device_query, would have the same issue. Fortunately this is a problem that can be solved with the delete key. Reviewed-by: Eric Anholt <[email protected]> Signed-off-by: Adam Jackson <[email protected]>
* egl/wayland: Don't use dmabuf with no modifiersDaniel Stone2017-10-041-7/+11
| | | | | | | | | | | | | | | | | The dmabuf interface requires a valid modifier to be sent. If we don't explicitly get a modifier from the driver, we can't know what to send; it must be inferred from legacy side-channels (or assumed to linear, if none exists). If we have no modifier, then we can only have a single-plane format anyway, so fall back to the old wl_drm buffer import path. Fixes: a65db0ad1c ("st/dri: don't expose modifiers in EGL if the driver doesn't implement them") Fixes: 02cc359372 ("egl/wayland: Use linux-dmabuf interface for buffers") Signed-off-by: Daniel Stone <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reported-by: Andy Furniss <[email protected]> Cc: Marek Olšák <[email protected]>
* egl/wayland: Check queryImage return for wl_bufferDaniel Stone2017-10-041-15/+41
| | | | | | | | | | | | | | | When creating a wl_buffer from a DRIImage, we extract all the DRIImage information via queryImage. Check whether or not it actually succeeds, either bailing out if the query was critical, or providing sensible fallbacks for information which was not available in older DRIImage versions. Fixes: a65db0ad1c ("st/dri: don't expose modifiers in EGL if the driver doesn't implement them") Fixes: 02cc359372 ("egl/wayland: Use linux-dmabuf interface for buffers") Signed-off-by: Daniel Stone <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reported-by: Andy Furniss <[email protected]> Cc: Marek Olšák <[email protected]>
* egl/surfaceless: Use KMS swrast fallbackGurchetan Singh2017-10-031-4/+16
| | | | | | | | | | | | The kms_swrast extension is an actively developed software fallback, and platform_surfaceless can use it if there are no available hardware drivers. v2: Split into 2 patches, use booleans, check LIBGL_ALWAYS_SOFTWARE, and modify the eglLog level (Emil, Eric, Tomasz). Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/surfaceless: add probe device helper functionGurchetan Singh2017-10-031-28/+39
| | | | | | | | This will help us initialize a software driver, if it's needed or requested. Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* wayland-egl: rename wayland-egl-{priv,backend}.hEmil Velikov2017-10-021-1/+1
| | | | | | | | In preparation to lifting the whole thing out as a separate library. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]> Reviewed-by: Miguel A. Vico <[email protected]>
* egl/dri: link directly to libglapi.soEmil Velikov2017-10-022-40/+4
| | | | | | | | | | | | | | | | | | | | | | | Shared glapi (libglapi.so) has been a requirement for years, in order to build EGL. Remove the no longer necessary dlopen/dlsym dance and link to the library directly. This allows us to remove a handful of platform specific workarounds, due to the different name of the library. v2: - Android: export the include dir (RobH) - Drop unused local variable (Eric) Cc: Jonathan Gray <[email protected]> Cc: Jon Turney <[email protected]> Cc: Julien Isorce <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> (v1) Tested-by: Tomasz Figa <[email protected]> (v1) Tested-by: Rob Herring <[email protected]>
* egl/wayland: simplify LIBGL_ALWAYS_SOFTWARE logicEric Engestrom2017-10-021-8/+4
| | | | | | Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl/dri2: don't use the template keywordMarek Olšák2017-09-301-3/+3
| | | | | | for C++ editors Reviewed-by: Brian Paul <[email protected]>
* egl/dri2: Implement swapInterval fallback in a conformant way (v2)Tomasz Figa2017-09-276-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dri2_fallback_swap_interval() currently used to stub out swap interval support in Android backend does nothing besides returning EGL_FALSE. This causes at least one known application (Android Snapchat) to fail due to an unexpected error and my loose interpretation of the EGL 1.5 specification justifies it. Relevant quote below: The function EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval); specifies the minimum number of video frame periods per buffer swap for the draw surface of the current context, for the current rendering API. [...] The parameter interval specifies the minimum number of video frames that are displayed before a buffer swap will occur. The interval specified by the function applies to the draw surface bound to the context that is current on the calling thread. [...] interval is silently clamped to minimum and maximum implementation dependent values before being stored; these values are defined by EGLConfig attributes EGL_MIN_SWAP_INTERVAL and EGL_MAX_SWAP_INTERVAL respectively. The default swap interval is 1. Even though it does not specify the exact behavior if the platform does not support changing the swap interval, the default assumed state is the swap interval of 1, which I interpret as a value that eglSwapInterval() should succeed if called with, even if there is no ability to change the interval (but there is no change requested). Moreover, since the behavior is defined to clamp the requested value to minimum and maximum and at least the default value of 1 must be present in the range, the implementation might be expected to have a valid range, which in case of the feature being unsupported, would correspond to {1} and any request might be expected to be clamped to this value. Fix this by defaulting dri2_dpy's min_swap_interval, max_swap_interval and default_swap_interval to 1 in dri2_setup_screen() and let platforms, which support this functionality set their own values after this function returns. Thanks to patches merged earlier, we can also remove the dri2_fallback_swap_interval() completely, as with a singular range it would not be called anyway. v2: Remove dri2_fallback_swap_interval() completely thanks to higher layer already clamping the requested interval and not calling the driver layer if the clamped value is the same as current. Signed-off-by: Tomasz Figa <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Chad Versace <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
* Revert "wayland-drm: constify the callbacks struct"Daniel Stone2017-09-261-5/+9
| | | | | | | | | | | | | | | The wayland-drm callback struct is referenced, rather than duplicated, inside wayland-drm. Constifying this struct involved moving it on to the stack; as a result, starting any EGL client on Wayland called into random stack memory, and killed the compositor. This reverts commit 1d0be5b3fe548ee33d4520092f583c76d42510a6 and 39d539e321c6c97433a15660c9d9a20ad8657ff0. Signed-off-by: Daniel Stone <[email protected]> Cc: Emil Velikov <[email protected]> Cc: Krzysztof Sobiecki <[email protected]> Fixes: 1d0be5b3fe54 ("wayland-drm: constify the callbacks struct")
* egl: fix build fallouts from 1d0be5b3fe5Krzysztof Sobiecki2017-09-191-1/+1
| | | | | Fixes: 1d0be5b3fe5 ("wayland-drm: constify the callbacks struct") Reviewed-by: Emil Velikov <[email protected]>
* wayland-drm: constify the callbacks structEmil Velikov2017-09-191-9/+5
| | | | | Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* configure.ac: define WL_HIDE_DEPRECATED at global scaleEmil Velikov2017-09-191-2/+0
| | | | | | | | | | | | | | | Due to GCC feature described in previous commit, the expected deprecation warnings may be missing. Set the WL_HIDE_DEPRECATED macro which will omit the deprecated functionality, resulting in more distinct build issues. That is safe since the symbols guarded within the macro is static. Signed-off-by: Emil Velikov <[email protected]> Suggested-by: Pekka Paalanen <[email protected]> Acked-by: Pekka Paalanen <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/android: Use per surface out fenceZhongmin Wu2017-09-191-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | Use the plumbing introduced with previous patch to interact with the Android framework. Namely: currently we use an invalid fd of -1 for our calls to ANativeWindow::{queue,cancel}Buffer. At the same time applications (like flatland) may rely on it being a valid one. Thus as they attempt to query the timestamp of the fence, they get unexpected results/behaviour. In the case of flatland - the benchmark hang inside getSignalTime(). Make use of the out fence and pass the correct fd to Android. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101655 Signed-off-by: Zhongmin Wu <[email protected]> Signed-off-by: Yogesh Marathe <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Tomasz Figa <[email protected]> [Emil Velikov: split from larger patch] Signed-off-by: Emil Velikov <[email protected]>
* egl: Allow creation of per surface out fenceZhongmin Wu2017-09-198-6/+93
| | | | | | | | | | | | | | Add plumbing to allow creation of per display surface out fence. This can be used to implement explicit sync. One user of which is Android - which will be addressed with next commit. Signed-off-by: Zhongmin Wu <[email protected]> Signed-off-by: Yogesh Marathe <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Tomasz Figa <[email protected]> [Emil Velikov: reorder so there's no intermetent regressions, split] Signed-off-by: Emil Velikov <[email protected]>
* egl: Wrap dri3 surface primitive around dri2 egl surfaceYogesh Marathe2017-09-192-11/+11
| | | | | | | | | | | | | | | | Originally dri3 egl surface was wrapped around _EGLSurface. With next commit we'll add additional attributes, which will be checked from generic code. Thus in order to access that we need to use dri2_egl_surface. The name of the latter is a misnomer - it should really be dri or dri_common... Signed-off-by: Yogesh Marathe <[email protected]> [Emil Velikov: commit message, squash the patches appropriately, add relevant _eglInitSurface hunk to prevent build breakage] Signed-off-by: Emil Velikov <[email protected]>
* egl+glx: turn LIBGL_DRI3_DISABLE into a booleanEric Engestrom2017-09-121-1/+1
| | | | | | | | Instead of setting based on set/unset, allow users to use boolean values. In the docs, use `DISABLE=true` instead of `DISABLE=1` as it's clearer IMO. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl+glx: turn LIBGL_ALWAYS_SOFTWARE into a booleanEric Engestrom2017-09-122-2/+4
| | | | | | | | Instead of setting based on set/unset, allow users to use boolean values. In the docs, use `ALWAYS=true` instead of `ALWAYS=1` as it's clearer IMO. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl/x11: advertise __DRI_USE_INVALIDATE for DRI2Emil Velikov2017-09-061-0/+1
| | | | | | | | | | | | | | | | | | | Back in 2012 (commit 1e7776ca2bc - egl: Remove bogus invalidate code.) the loader use of invalidate() was purged as "bogus". One of the factors defining that statement was the lack of the loader-side invalidate extension - __DRI_USE_INVALIDATE. Since then the commit was reverted (commit eed0a80137d - egl: Restore "bogus" DRI2 invalidate event code.), always performing the driver invalidate call, although the loader was never updated to expose the extension. Do so allowing the driver to do fine grained tuning. Cc: Eric Anholt <[email protected]> Cc: Kenneth Graunke <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Anholt <[email protected]
* egl/x11/dri3: adding missing __DRI_BACKGROUND_CALLABLE extensionEmil Velikov2017-09-061-0/+1
| | | | | | | Fixes: 3b7b6adf3ac ("egl: Implement __DRI_BACKGROUND_CALLABLE") Cc: Timothy Arceri <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* Revert "egl: Allow creation of per surface out fence"Mark Janes2017-08-308-106/+18
| | | | | | | | | This reverts commit 13c23b19d0b3b965d666498eb759e63fc4a625d9. Mesa CI was brought down by this commit, with: mesa/drivers/dri/i965/brw_sync.c:491: brw_dri_create_fence_fd: Assertion `brw->screen->has_exec_fence' failed.
* egl/dri2: only destroy created objectsMichael Olbrich2017-08-301-3/+6
| | | | | | | | | | dri2_display_destroy may be called by dri2_initialize_wayland_drm() if initialization fails. In this case, these objects may not be initialized. Cc: [email protected] Signed-off-by: Michael Olbrich <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* egl: Allow creation of per surface out fenceZhongmin Wu2017-08-308-18/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add plumbing to allow creation of per display surface out fence. Currently enabled only on android, since the system expects a valid fd in ANativeWindow::{queue,cancel}Buffer. We pass a fd of -1 with which native applications such as flatland fail. The patch enables explicit sync on android and fixes one of the functional issue for apps or buffer consumers which depend upon fence and its timestamp. v2: a) Also implement the fence in cancelBuffer. b) The last sync fence is stored in drawable object rather than brw context. c) format clear. v3: a) Save the last fence fd in DRI Context object. b) Return the last fence if the batch buffer is empty and nothing to be flushed when _intel_batchbuffer_flush_fence c) Add the new interface in vbtl to set the retrieve fence v3.1 a) close fd in the new vbtl interface on none Android platform v4: a) The last fence is saved in brw context. b) The retrieve fd is for all the platform but not just Android c) Add a uniform dri2 interface to initialize the surface. v4.1: a) make some changes of variable name. b) the patch is broken into two patches. v4.2: a) Add a deinit interface for surface to clear the out fence v5: a) Add enable_out_fence to init, platform sets it true or false b) Change get fd to update fd and check for fence c) Commit description updated v6: a) Heading and commit description updated b) enable_out_fence is set only if fence is supported c) Review comments on function names d) Test with standalone patch, resolves the bug v6.1: Check for old display fence reverted v6.2: enable_out_fence initialized to false by default, dri2_surf_update_fence_fd updated, deinit changed to fini Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101655 Signed-off-by: Zhongmin Wu <[email protected]> Signed-off-by: Yogesh Marathe <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Tomasz Figa <[email protected]>
* egl/wayland: make sure HAS_$FORMAT is set for wl_dmabufEmil Velikov2017-08-291-0/+3
| | | | | | | | | Otherwise eglCreateWaylandBufferFromImageWL will fail, since we have no "supported" format. Fixes: 02cc35937277 ("egl/wayland: Use linux-dmabuf interface for buffers") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/wayland: group wl_win specific code togetherEmil Velikov2017-08-291-4/+3
| | | | | | | | | Make the code a bit easier to follow. There should be no functional change since none of the bits set are accessible until the eglCreateWindowSurface call is complete. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/wayland: remove dri2_surf width/height double init.Emil Velikov2017-08-291-3/+0
| | | | | | | | | | | The dimensions are already set [to 0 or the value provided by the attributes list] by the _eglInitSurface() call further up. The values are updated, as the DRI driver calls the DRI2/IMAGE_LOADER' get_buffers, shortly before making use of the values. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Daniel Stone <[email protected]>
* egl/wayland: set correct format with wl_dmabuf as wl_drm is missingEmil Velikov2017-08-291-1/+1
| | | | | | | | | | For most/all cases today, we have wl_drm available alongside wl_dmabuf. Yet in the long run, we want to make sure the latter can operate without any traces of the former. Fixes: 02cc35937277 ("egl/wayland: Use linux-dmabuf interface for buffers") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/wayland: update comment to reflect wl_dmabuf presenceEmil Velikov2017-08-291-1/+1
| | | | | Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/wayland: polish object teardown in dri2_wl_destroy_surfaceEmil Velikov2017-08-291-2/+2
| | | | | | | | | | The wl_drm wrapper is created before the wl display/surface ones. Thus make sure we destroy it after them. In reality it should not make any difference either way. Fixes: 03dd9a88b0b ("egl/wayland: Use per-surface event queues") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl/wayland: plug leaks in dri2_wl_create_window_surface() error pathEmil Velikov2017-08-291-2/+6
| | | | | | | | We forgot to teardown the wl display/surface wrappers. Fixes: 03dd9a88b0b ("egl/wayland: Use per-surface event queues") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* egl: simplify refcounting after screen creationEmil Velikov2017-08-291-9/+5
| | | | | | | | | | If the specific initialize was successfull, dri2_egl_display() will return a non NULL pointer. Thus we can drop the check and flatten the codeflow. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Acked-by: Daniel Stone <[email protected]>
* egl: don't NULL deref the .get_capabilities function pointerEmil Velikov2017-08-261-1/+2
| | | | | | | | | | | | | One could easily introduce version 3 of the DRI2fenceExtension, extending the struct, while not implementing the above function. Thus we'll end up with NULL pointer, and dereferencing it won't fare too well. Fixes: 0201f01dc4e ("egl: add EGL_ANDROID_native_fence_sync") Cc: Rob Clark <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
* egl/drm: Don't "fall back" to /dev/dri/card0 if the first open failsAdam Jackson2017-08-251-2/+0
| | | | | | | | The snprintf stuff here already constructs the right name for the device node, and if it doesn't, you configured Mesa wrong, don't do that. Signed-off-by: Adam Jackson <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* Revert "egl/android: add missing include"Eric Engestrom2017-08-251-1/+0
| | | | | | | | | | | | | | This reverts commit 688d866eca8943f09cd846ffb045e18f6ec0677c. The include I added in 688d866eca isn't actually useful, as it only declares the opaque struct ANativeWindow. However, this caused build issues for android-x86 [1] due to the header being moved in Android O. [1] https://lists.freedesktop.org/archives/mesa-dev/2017-August/167626.html Fixes: 688d866eca8943f09cd8 "egl/android: add missing include" Signed-off-by: Eric Engestrom <[email protected]>
* egl/wayland: Use roundtrips when awaiting buffer releaseKai Chen2017-08-251-2/+7
| | | | | | | | | | | | | | | | | | In get_back_bo, we use wl_display_dispatch_queue() to block and wait for a buffer release event. However, not all Wayland compositors flush the client socket on posting a buffer-release event, so by only blocking client-side, we may block indefinitely, or at least need to wait for an input event / frame completion to arrive for the compositor to flush. We now use dispatch_queue as a first pass, but if our entire buffer pool is exhausted, use a roundtrip (an immediately-triggered wl_callback) to ensure that the compositor flushes out our release event immediately. [daniels: Modified comment and commit message.] Signed-off-by: Kai Chen <[email protected]> Reviewed-by: Daniel Stone <[email protected]> CC: <[email protected]>
* egl/android: add missing includeEric Engestrom2017-08-241-0/+1
| | | | | Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Rob Herring <[email protected]>
* egl: deduplicate allocations of local buffer over each platform backend (v2)Gwan-gyeong Mun2017-08-225-115/+71
| | | | | | | | | | | | | | | | | | | | | | | | | platform_drm, platform_wayland and platform_android have similiar local buffer allocation routines. For deduplicating, it unifies dri2_egl_surface's local buffer allocation routines. And it polishes inconsistent indentations. Note that as dri2_wl_get_buffers_with_format() have not make a __DRI_BUFFER_BACK_LEFT attachment buffer for local_buffers, new helper function, dri2_egl_surface_free_local_buffers(), will drop the __DRI_BUFFER_BACK_LEFT check. So if other platforms use new helper functions, we have to ensure not to make __DRI_BUFFER_BACK_LEFT attachment buffer for local_buffers. v2: Fixes from Emil's review: a) Make local_buffers variable, dri2_egl_surface_alloc_local_buffer() and dri2_egl_surface_free_local_buffers() unconditionally. b) Preserve the original codeflow for error_path and normal_path. c) Add note on commit messages for dropping of __DRI_BUFFER_BACK_LEFT check. c) Rollback the unrelated whitespace changes. d) Add a missing blank line. Signed-off-by: Mun Gwan-gyeong <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Tomasz Figa <[email protected]>
* egl: Fix inclusion of egl.h+mesa_glinterop.hMatt Turner2017-08-211-1/+1
| | | | | | | | Previously clang would warn about redefinition of typedef EGLDisplay. Avoid this by adding preprocessor guards to mesa_glinterop.h and including it after EGL.h is indirectly included. Reviewed-by: Jordan Justen <[email protected]>
* loader_dri3/glx/egl: Optionally use a blit context for blitting operationsThomas Hellstrom2017-08-173-1/+15
| | | | | | | | | | | | | 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-12/+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]>
* egl/dri2: Allow modifiers to add FDs to importsDaniel Stone2017-08-111-19/+19
| | | | | | | | | When using dmabuf import, make sure that the modifier is actually allowed to add planes to the base format, as implied by the comment. Signed-off-by: Daniel Stone <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Philipp Zabel <[email protected]>
* egl/drm: rename dri2_drm_create_surface()Emil Velikov2017-08-101-13/+4
| | | | | | | | | | | | The function can handle only window surfaces, so let's rename it accordingly, killing the wrapper around it. v2: Use native_window in the function args. list. Suggested-by: Eric Engestrom <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* egl/drm: remove unreachable code in dri2_drm_create_surface()Emil Velikov2017-08-101-13/+7
| | | | | | | | | | | The function can be called only when the type is EGL_WINDOW_BIT. Remove the unneeded switch statement. v2: Rename the local variable window to surface (Eric) Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> (v1)