diff options
author | Beth Flanagan <elizabeth.flanagan@intel.com> | 2011-02-24 14:34:59 -0800 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2011-03-01 11:46:41 +0000 |
commit | 926560497bef54a06a39850fcf551c5c1bba9bfc (patch) | |
tree | 178c897ca39685d456b0b0fd1c1ae62885087dfa /meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch | |
parent | 9f9e981ca20fe341a27765390fa723295b74a389 (diff) | |
download | openembedded-core-926560497bef54a06a39850fcf551c5c1bba9bfc.tar.gz openembedded-core-926560497bef54a06a39850fcf551c5c1bba9bfc.tar.bz2 openembedded-core-926560497bef54a06a39850fcf551c5c1bba9bfc.tar.xz openembedded-core-926560497bef54a06a39850fcf551c5c1bba9bfc.zip |
Emenlow Removal from Poky Core: meta-emenlow
Removing Emenlow from poky core as it is now in meta-intel as a BSP layer
[BUGID #769]
Signed-off-by: Beth Flanagan <elizabeth.flanagan@intel.com>
Diffstat (limited to 'meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch')
-rw-r--r-- | meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch | 542 |
1 files changed, 0 insertions, 542 deletions
diff --git a/meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch deleted file mode 100644 index ce7f10653..000000000 --- a/meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch +++ /dev/null @@ -1,542 +0,0 @@ -commit fb6ccda5984eda96bcb394b23255143dcbc21f18 -Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com> -Date: Thu Sep 10 12:22:17 2009 +0000 - - Don't link against libdrm to workaround XvBA / fglrx >= 8.66-RC1 bugs. - -commit ab3c0f65182462b54729d2d82d4d645c8be5b2d1 -Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com> -Date: Wed Sep 9 13:24:46 2009 +0000 - - Fix DRM device opening with fglrx >= 8.66-RC1. - -diff --git a/src/x11/Makefile.am b/src/x11/Makefile.am -index c70380d..b6916f2 100644 ---- a/src/x11/Makefile.am -+++ b/src/x11/Makefile.am -@@ -25,6 +25,6 @@ noinst_LTLIBRARIES = libva_x11.la - libva_x11includedir = ${includedir}/va - libva_x11include_HEADERS = va_x11.h va_dri.h va_dri2.h va_dricommon.h - --libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c -+libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c libdrm_glue.c - --EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h -+EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h libdrm_glue.h -diff --git a/src/x11/dri1_util.c b/src/x11/dri1_util.c -index b3db5b4..3bd490f 100644 ---- a/src/x11/dri1_util.c -+++ b/src/x11/dri1_util.c -@@ -1,10 +1,12 @@ -+#include "config.h" -+#include <stdio.h> - #include <stdlib.h> - #include <fcntl.h> - #include <unistd.h> - #include <sys/mman.h> - #include <assert.h> - --#include <xf86drm.h> -+#include "libdrm_glue.h" - - #include "X11/Xlib.h" - #include "va.h" -@@ -21,6 +23,75 @@ struct dri1_drawable - int height; - }; - -+static int -+firegl_drmOpenMinor(int minor) -+{ -+ char buf[64]; -+ int fd; -+ -+ sprintf(buf, "/dev/ati/card%d", minor); -+ if ((fd = open(buf, O_RDWR, 0)) >= 0) -+ return fd; -+ return -1; -+} -+ -+static int -+firegl_drmOpenByBusID(const char *busid) -+{ -+ int i, fd; -+ drmSetVersion sv; -+ const char *buf; -+ -+ for (i = 0; i < DRM_MAX_MINOR; i++) { -+ if ((fd = firegl_drmOpenMinor(i)) < 0) -+ continue; -+ sv.drm_di_major = 1; -+ sv.drm_di_minor = 1; -+ sv.drm_dd_major = -1; -+ sv.drm_dd_minor = -1; -+ libdrm_drmSetInterfaceVersion(fd, &sv); -+ buf = libdrm_drmGetBusid(fd); -+ if (buf && strcasecmp(buf, busid) == 0) { /* XXX: drmMatchBusID() */ -+ libdrm_drmFreeBusid(buf); -+ return fd; -+ } -+ if (buf) -+ libdrm_drmFreeBusid(buf); -+ close(fd); -+ } -+ return -1; -+} -+ -+static int -+drm_open_once(struct dri_state *dri_state, const char *BusID, int *newlyopened) -+{ -+ dri_state->driConnectedFlag = VA_NONE; -+ dri_state->fd = libdrm_drmOpenOnce(NULL, BusID, newlyopened); -+ if (dri_state->fd < 0) { -+ dri_state->fd = firegl_drmOpenByBusID(BusID); -+ if (dri_state->fd >= 0) { -+ *newlyopened = 1; -+ dri_state->driConnectedFlag |= VA_DRI_AMD; -+ } -+ } -+ return dri_state->fd; -+} -+ -+static void -+drm_close_once(struct dri_state *dri_state) -+{ -+ /* XXX: dri_state->close() doesn't seem to be called, thus this -+ function is never called either */ -+ if (dri_state->fd < 0) -+ return; -+ if (dri_state->driConnectedFlag & VA_DRI_AMD) -+ close(dri_state->fd); -+ else -+ libdrm_drmCloseOnce(dri_state->fd); -+ dri_state->fd = -1; -+ dri_state->driConnectedFlag = VA_NONE; -+} -+ - static struct dri_drawable * - dri1CreateDrawable(VADriverContextP ctx, XID x_drawable) - { -@@ -64,9 +135,9 @@ dri1Close(VADriverContextP ctx) - free_drawable_hashtable(ctx); - VA_DRIDestroyContext(ctx->x11_dpy, ctx->x11_screen, dri_state->hwContextID); - assert(dri_state->pSAREA != MAP_FAILED); -- drmUnmap(dri_state->pSAREA, SAREA_MAX); -+ libdrm_drmUnmap(dri_state->pSAREA, SAREA_MAX); - assert(dri_state->fd >= 0); -- drmCloseOnce(dri_state->fd); -+ drm_close_once(dri_state); - VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen); - } - -@@ -104,21 +175,20 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name) - &dri_state->hSAREA, &BusID)) - goto err_out0; - -- -- dri_state->fd = drmOpenOnce(NULL, BusID, &newlyopened); -+ drm_open_once(dri_state, BusID, &newlyopened); - XFree(BusID); - - if (dri_state->fd < 0) - goto err_out1; - - -- if (drmGetMagic(dri_state->fd, &magic)) -+ if (libdrm_drmGetMagic(dri_state->fd, &magic)) - goto err_out1; - - if (newlyopened && !VA_DRIAuthConnection(ctx->x11_dpy, ctx->x11_screen, magic)) - goto err_out1; - -- if (drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA)) -+ if (libdrm_drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA)) - goto err_out1; - - if (!VA_DRICreateContext(ctx->x11_dpy, ctx->x11_screen, -@@ -127,7 +196,8 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name) - &dri_state->hwContextID, &dri_state->hwContext)) - goto err_out1; - -- dri_state->driConnectedFlag = VA_DRI1; -+ dri_state->driConnectedFlag &= VA_DRI_AMD; /* clear flags but AMD bit */ -+ dri_state->driConnectedFlag |= VA_DRI1; - dri_state->createDrawable = dri1CreateDrawable; - dri_state->destroyDrawable = dri1DestroyDrawable; - dri_state->swapBuffer = dri1SwapBuffer; -@@ -138,10 +208,10 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name) - - err_out1: - if (dri_state->pSAREA != MAP_FAILED) -- drmUnmap(dri_state->pSAREA, SAREA_MAX); -+ libdrm_drmUnmap(dri_state->pSAREA, SAREA_MAX); - - if (dri_state->fd >= 0) -- drmCloseOnce(dri_state->fd); -+ drm_close_once(dri_state); - - VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen); - -diff --git a/src/x11/dri2_util.c b/src/x11/dri2_util.c -index ebe7a2c..b727e97 100644 ---- a/src/x11/dri2_util.c -+++ b/src/x11/dri2_util.c -@@ -3,7 +3,7 @@ - #include <unistd.h> - #include <assert.h> - --#include <xf86drm.h> -+#include "libdrm_glue.h" - - #include <X11/Xlibint.h> - #include <X11/Xlib.h> -@@ -166,7 +166,7 @@ isDRI2Connected(VADriverContextP ctx, char **driver_name) - if (dri_state->fd < 0) - goto err_out; - -- if (drmGetMagic(dri_state->fd, &magic)) -+ if (libdrm_drmGetMagic(dri_state->fd, &magic)) - goto err_out; - - if (!VA_DRI2Authenticate(ctx->x11_dpy, RootWindow(ctx->x11_dpy, ctx->x11_screen), -diff --git a/src/x11/libdrm_glue.c b/src/x11/libdrm_glue.c -new file mode 100644 -index 0000000..b72a2d1 ---- /dev/null -+++ b/src/x11/libdrm_glue.c -@@ -0,0 +1,208 @@ -+/* -+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sub license, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice (including the -+ * next paragraph) shall be included in all copies or substantial portions -+ * of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#define _GNU_SOURCE 1 -+#include "libdrm_glue.h" -+#include <stdio.h> -+#include <string.h> -+#include <dlfcn.h> -+#include <assert.h> -+ -+#define LOAD_FUNC_(NAME, RET, ARGS, FALLBACK) \ -+ static RET (*lib_##NAME) ARGS; \ -+ if (lib_##NAME == NULL) { \ -+ lib_##NAME = libdrm_symbol(#NAME); \ -+ if (!lib_##NAME) \ -+ lib_##NAME = FALLBACK; \ -+ } \ -+ assert(lib_##NAME != NULL) -+ -+#define LOAD_FUNC(NAME, RET, ARGS) \ -+ LOAD_FUNC_(NAME, RET, ARGS, NULL) -+ -+static void *libdrm_handle; -+static int libdrm_handle_ok = -1; -+ -+static inline void *libdrm_symbol(const char *name) -+{ -+ if (!libdrm_open()) -+ return NULL; -+ return dlsym(libdrm_handle, name); -+} -+ -+int libdrm_open(void) -+{ -+ if (libdrm_handle_ok < 0) { -+ libdrm_handle = dlopen("libdrm.so.2", RTLD_LOCAL|RTLD_LAZY); -+ libdrm_handle_ok = libdrm_handle != NULL; -+ } -+ assert(libdrm_handle); -+ return libdrm_handle_ok; -+} -+ -+void libdrm_close(void) -+{ -+ if (libdrm_handle) -+ dlclose(libdrm_handle); -+} -+ -+// Default drmOpenOnce() and drmCloseOnce() implementations based on current GIT -+#define DRM_MAX_FDS 16 -+static struct { -+ char *BusID; -+ int fd; -+ int refcount; -+} connection[DRM_MAX_FDS]; -+ -+static int nr_fds = 0; -+ -+// Default implementation for drmOpenOnce() if none exists in the library -+static int -+libdrm_default_drmOpenOnce(void *unused, const char *BusID, int *newlyopened) -+{ -+ int i; -+ int fd; -+ -+ for (i = 0; i < nr_fds; i++) -+ if (strcmp(BusID, connection[i].BusID) == 0) { -+ connection[i].refcount++; -+ *newlyopened = 0; -+ return connection[i].fd; -+ } -+ -+ fd = libdrm_drmOpen(unused, BusID); -+ if (fd <= 0 || nr_fds == DRM_MAX_FDS) -+ return fd; -+ -+ connection[nr_fds].BusID = strdup(BusID); -+ connection[nr_fds].fd = fd; -+ connection[nr_fds].refcount = 1; -+ *newlyopened = 1; -+ -+ if (0) -+ fprintf(stderr, "saved connection %d for %s %d\n", -+ nr_fds, connection[nr_fds].BusID, -+ strcmp(BusID, connection[nr_fds].BusID)); -+ nr_fds++; -+ return fd; -+} -+ -+// Default implementation for drmCloseOnce() if none exists in the library -+static void libdrm_default_drmCloseOnce(int fd) -+{ -+ int i; -+ -+ for (i = 0; i < nr_fds; i++) { -+ if (fd == connection[i].fd) { -+ if (--connection[i].refcount == 0) { -+ libdrm_drmClose(connection[i].fd); -+ free(connection[i].BusID); -+ if (i < --nr_fds) -+ connection[i] = connection[nr_fds]; -+ return; -+ } -+ } -+ } -+} -+ -+// Determine whether the DRM kernel driver has been loaded -+int libdrm_drmAvailable(void) -+{ -+ LOAD_FUNC(drmAvailable, int, (void)); -+ return lib_drmAvailable(); -+} -+ -+// Open the DRM device -+int libdrm_drmOpen(const char *name, const char *busid) -+{ -+ LOAD_FUNC(drmOpen, int, (const char *, const char *)); -+ return lib_drmOpen(name, busid); -+} -+ -+// Close the device -+int libdrm_drmClose(int fd) -+{ -+ LOAD_FUNC(drmClose, int, (int)); -+ return lib_drmClose(fd); -+} -+ -+// Open the DRM device (re-use an existing connection) -+int libdrm_drmOpenOnce(void *unused, const char *BusID, int *newlyopened) -+{ -+ LOAD_FUNC_(drmOpenOnce, int, (void *, const char *, int *), -+ libdrm_default_drmOpenOnce); -+ return lib_drmOpenOnce(unused, BusID, newlyopened); -+} -+ -+// Close the device (unref an existing connection prior to actually closing it) -+void libdrm_drmCloseOnce(int fd) -+{ -+ LOAD_FUNC_(drmCloseOnce, void, (int), libdrm_default_drmCloseOnce); -+ lib_drmCloseOnce(fd); -+} -+ -+// DRM connection cookie -+int libdrm_drmGetMagic(int fd, drm_magic_t * magic) -+{ -+ LOAD_FUNC(drmGetMagic, int, (int, drm_magic_t *)); -+ return lib_drmGetMagic(fd, magic); -+} -+ -+// Issue a set-version ioctl -+int libdrm_drmSetInterfaceVersion(int fd, drmSetVersion *version) -+{ -+ LOAD_FUNC(drmSetInterfaceVersion, int, (int, drmSetVersion *)); -+ return lib_drmSetInterfaceVersion(fd, version); -+} -+ -+// Get the bus ID of the device -+char *libdrm_drmGetBusid(int fd) -+{ -+ LOAD_FUNC(drmGetBusid, char *, (int)); -+ return lib_drmGetBusid(fd); -+} -+ -+// Free the bus ID information -+void libdrm_drmFreeBusid(const char *busid) -+{ -+ LOAD_FUNC(drmFreeBusid, void, (const char *)); -+ lib_drmFreeBusid(busid); -+} -+ -+// Map a region of memory -+int libdrm_drmMap(int fd, -+ drm_handle_t handle, -+ drmSize size, -+ drmAddressPtr address) -+{ -+ LOAD_FUNC(drmMap, int, (int, drm_handle_t, drmSize, drmAddressPtr)); -+ return lib_drmMap(fd, handle, size, address); -+} -+ -+// Unmap mappings obtained with drmMap() -+int libdrm_drmUnmap(drmAddress address, drmSize size) -+{ -+ LOAD_FUNC(drmUnmap, int, (drmAddress, drmSize)); -+ return lib_drmUnmap(address, size); -+} -diff --git a/src/x11/libdrm_glue.h b/src/x11/libdrm_glue.h -new file mode 100644 -index 0000000..878470b ---- /dev/null -+++ b/src/x11/libdrm_glue.h -@@ -0,0 +1,73 @@ -+/* -+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sub license, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice (including the -+ * next paragraph) shall be included in all copies or substantial portions -+ * of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#ifndef LIBDRM_GLUE_H -+#define LIBDRM_GLUE_H -+ -+#include "config.h" -+#include <xf86drm.h> -+ -+int libdrm_open(void) -+ ATTRIBUTE_HIDDEN; -+ -+void libdrm_close(void) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmAvailable(void) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmOpen(const char *name, const char *busid) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmClose(int fd) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmOpenOnce(void *unused, const char *BusID, int *newlyopened) -+ ATTRIBUTE_HIDDEN; -+ -+void libdrm_drmCloseOnce(int fd) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmGetMagic(int fd, drm_magic_t * magic) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmSetInterfaceVersion(int fd, drmSetVersion *version) -+ ATTRIBUTE_HIDDEN; -+ -+char *libdrm_drmGetBusid(int fd) -+ ATTRIBUTE_HIDDEN; -+ -+void libdrm_drmFreeBusid(const char *busid) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmMap(int fd, -+ drm_handle_t handle, -+ drmSize size, -+ drmAddressPtr address) -+ ATTRIBUTE_HIDDEN; -+ -+int libdrm_drmUnmap(drmAddress address, drmSize size) -+ ATTRIBUTE_HIDDEN; -+ -+#endif /* LIBDRM_GLUE_H */ -diff --git a/src/x11/va_dricommon.h b/src/x11/va_dricommon.h -index a2a51a6..0da35fe 100644 ---- a/src/x11/va_dricommon.h -+++ b/src/x11/va_dricommon.h -@@ -13,7 +13,8 @@ enum - { - VA_NONE = 0, - VA_DRI1 = 1, -- VA_DRI2 = 2 -+ VA_DRI2 = 2, -+ VA_DRI_AMD = 4 /* AMD DRI implementation */ - }; - - union dri_buffer -diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c -index b8c60fa..414c261 100644 ---- a/src/x11/va_x11.c -+++ b/src/x11/va_x11.c -@@ -31,6 +31,7 @@ - #include "va_dri2.h" - #include "va_dricommon.h" - #include "va_nvctrl.h" -+#include "libdrm_glue.h" - #include <stdio.h> - #include <stdarg.h> - #include <string.h> -@@ -94,6 +75,8 @@ static void va_DisplayContextDestroy ( - } - ctx = &((*ctx)->pNext); - } -+ -+ libdrm_close(); - free(pDisplayContext->pDriverContext->dri_state); - free(pDisplayContext->pDriverContext); - free(pDisplayContext); -diff --git a/src/Makefile.am b/src/Makefile.am -index e50a15f..d1f8f70 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -45,7 +45,7 @@ libva_la_LDFLAGS = $(LDADD) -no-undefined - libva_la_LIBADD = $(LIBVA_LIBS) -ldl - - libva_x11_la_SOURCES = --libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(DRM_LIBS) $(XFIXES_LIBS) -+libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(XFIXES_LIBS) -ldl - libva_x11_la_LDFLAGS = $(LDADD) - libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la - |