diff options
Diffstat (limited to 'libre-multilib/lib32-opencl-mesa/0001-i965-import-prime-buffers-in-the-current-context-not.patch')
-rw-r--r-- | libre-multilib/lib32-opencl-mesa/0001-i965-import-prime-buffers-in-the-current-context-not.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/libre-multilib/lib32-opencl-mesa/0001-i965-import-prime-buffers-in-the-current-context-not.patch b/libre-multilib/lib32-opencl-mesa/0001-i965-import-prime-buffers-in-the-current-context-not.patch deleted file mode 100644 index 0b37366f6..000000000 --- a/libre-multilib/lib32-opencl-mesa/0001-i965-import-prime-buffers-in-the-current-context-not.patch +++ /dev/null @@ -1,66 +0,0 @@ -From e180e9e3c830d3611a6cf7d32e988b4c28d20942 Mon Sep 17 00:00:00 2001 -From: Martin Peres <martin.peres@linux.intel.com> -Date: Wed, 3 Aug 2016 12:58:23 +0300 -Subject: [PATCH] i965: import prime buffers in the current context, not screen - -This mirrors the codepath taken by DRI2 in IntelSetTexBuffer2() and -fixes many applications when using DRI3: - - Totem with libva on hw-accelerated decoding - - obs-studio, using Window Capture (Xcomposite) as a Source - - gstreamer with VAAPI - -Cc: mesa-stable@lists.freedesktop.org -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71759 -Signed-off-by: Martin Peres <martin.peres@linux.intel.com> ---- - src/mesa/drivers/dri/i965/intel_screen.c | 25 +++++++++++++++++++++++-- - 1 file changed, 23 insertions(+), 2 deletions(-) - -diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c -index ae51c40..169d578 100644 ---- a/src/mesa/drivers/dri/i965/intel_screen.c -+++ b/src/mesa/drivers/dri/i965/intel_screen.c -@@ -702,8 +702,11 @@ intel_create_image_from_fds(__DRIscreen *screen, - int *fds, int num_fds, int *strides, int *offsets, - void *loaderPrivate) - { -+ GET_CURRENT_CONTEXT(ctx); - struct intel_screen *intelScreen = screen->driverPrivate; -+ struct brw_context *brw = brw_context(ctx); - struct intel_image_format *f; -+ dri_bufmgr *bufmgr; - __DRIimage *image; - int i, index; - -@@ -744,8 +747,26 @@ intel_create_image_from_fds(__DRIscreen *screen, - size = end; - } - -- image->bo = drm_intel_bo_gem_create_from_prime(intelScreen->bufmgr, -- fds[0], size); -+ /* Let's import the buffer into the current context instead of the current -+ * screen as some applications like gstreamer, totem, or obs create multiple -+ * X connections which end up creating multiple screens and thus multiple -+ * buffer managers. They then proceed to use a different X connection than -+ * the one used by the currently-bound context to call GLXBindTexImageExt() -+ * which should then import the buffer in the current bound context and not -+ * the current screen. This is done properly upstairs for texture management -+ * so we need to mirror this behaviour if we don't want the kernel rejecting -+ * our pushbuffers as the buffer would not have been imported by the same -+ * buffer manager that sent the pushbuffer referencing it. -+ * -+ * If there is no context currently bound, then revert to using the screen's -+ * buffer manager and hope for the best... -+ */ -+ if (brw) -+ bufmgr = brw->bufmgr; -+ else -+ bufmgr = intelScreen->bufmgr; -+ -+ image->bo = drm_intel_bo_gem_create_from_prime(bufmgr, fds[0], size); - if (image->bo == NULL) { - free(image); - return NULL; --- -2.9.0 - |