summaryrefslogtreecommitdiff
path: root/libre-multilib/lib32-opencl-mesa/0001-i965-import-prime-buffers-in-the-current-context-not.patch
diff options
context:
space:
mode:
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.patch66
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
-