From f432f3ca7afa2da4172042307edeccf8ed62992e Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 21 Dec 2009 05:23:07 +0000 Subject: [PATCH] - upstream released 2.4.17 --- .cvsignore | 2 +- libdrm-page-flip.patch | 174 ----------------------------------------- libdrm.spec | 13 +-- sources | 2 +- 4 files changed, 10 insertions(+), 181 deletions(-) delete mode 100644 libdrm-page-flip.patch diff --git a/.cvsignore b/.cvsignore index de11151..8822f6c 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -libdrm-20091221.tar.bz2 +libdrm-2.4.17.tar.bz2 diff --git a/libdrm-page-flip.patch b/libdrm-page-flip.patch deleted file mode 100644 index ba4d39f..0000000 --- a/libdrm-page-flip.patch +++ /dev/null @@ -1,174 +0,0 @@ -diff --git a/libdrm/xf86drm.h b/libdrm/xf86drm.h -index c1d173c..67bea37 100644 ---- a/libdrm/xf86drm.h -+++ b/libdrm/xf86drm.h -@@ -667,4 +667,22 @@ extern void drmMsg(const char *format, ...); - extern int drmSetMaster(int fd); - extern int drmDropMaster(int fd); - -+#define DRM_EVENT_CONTEXT_VERSION 1 -+ -+typedef struct _drmEventContext { -+ -+ /* This struct is versioned so we can add more pointers if we -+ * add more events. */ -+ int version; -+ -+ void (*page_flip_handler)(int fd, -+ unsigned int frame, -+ unsigned int tv_sec, -+ unsigned int tv_usec, -+ void *user_data); -+ -+} drmEventContext, *drmEventContextPtr; -+ -+extern int drmHandleEvent(int fd, drmEventContextPtr evctx); -+ - #endif -diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c -index ea11207..f601a00 100644 ---- a/libdrm/xf86drmMode.c -+++ b/libdrm/xf86drmMode.c -@@ -664,3 +664,56 @@ int drmModeCrtcSetGamma(int fd, uint32_t crtc_id, uint32_t size, - - return 0; - } -+ -+int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id, void *user_data) -+{ -+ struct drm_mode_page_flip flip; -+ -+ flip.fb_id = fb_id; -+ flip.crtc_id = crtc_id; -+ flip.user_data = VOID2U64(user_data); -+ flip.flags = 0; -+ -+ return drmIoctl(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip); -+} -+ -+int drmHandleEvent(int fd, drmEventContextPtr evctx) -+{ -+ char buffer[1024]; -+ int len, i; -+ struct drm_event *e; -+ struct drm_event_page_flip *page_flip; -+ -+ /* The DRM read semantics guarantees that we always get only -+ * complete events. */ -+ -+ len = read(fd, buffer, sizeof buffer); -+ if (len == 0) -+ return 0; -+ if (len < sizeof *e) -+ return -1; -+ -+ i = 0; -+ while (i < len) { -+ e = (struct drm_event *) &buffer[i]; -+ switch (e->type) { -+ case DRM_EVENT_MODE_PAGE_FLIP: -+ if (evctx->version < 1 || -+ evctx->page_flip_handler == NULL) -+ break; -+ page_flip = (struct drm_event_page_flip *) e; -+ evctx->page_flip_handler(fd, -+ page_flip->frame, -+ page_flip->tv_sec, -+ page_flip->tv_usec, -+ U642VOID (page_flip->user_data)); -+ break; -+ -+ default: -+ break; -+ } -+ i += e->length; -+ } -+ -+ return 0; -+} -diff --git a/libdrm/xf86drmMode.h b/libdrm/xf86drmMode.h -index 62304bb..fe64707 100644 ---- a/libdrm/xf86drmMode.h -+++ b/libdrm/xf86drmMode.h -@@ -259,8 +259,6 @@ typedef struct _drmModeConnector { - uint32_t *encoders; /**< List of encoder ids */ - } drmModeConnector, *drmModeConnectorPtr; - -- -- - extern void drmModeFreeModeInfo( drmModeModeInfoPtr ptr ); - extern void drmModeFreeResources( drmModeResPtr ptr ); - extern void drmModeFreeFB( drmModeFBPtr ptr ); -@@ -362,3 +360,4 @@ extern int drmModeCrtcSetGamma(int fd, uint32_t crtc_id, uint32_t size, - uint16_t *red, uint16_t *green, uint16_t *blue); - extern int drmModeCrtcGetGamma(int fd, uint32_t crtc_id, uint32_t size, - uint16_t *red, uint16_t *green, uint16_t *blue); -+extern int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id, void *user_data); -diff --git a/shared-core/drm.h b/shared-core/drm.h -index 97fab9a..8b504cb 100644 ---- a/shared-core/drm.h -+++ b/shared-core/drm.h -@@ -1113,6 +1113,7 @@ struct drm_gem_open { - #define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd) - #define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd) - #define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, uint32_t) -+#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOW( 0xB0, struct drm_mode_page_flip) - - /*@}*/ - -@@ -1128,6 +1129,30 @@ struct drm_gem_open { - #define DRM_COMMAND_BASE 0x40 - #define DRM_COMMAND_END 0xA0 - -+/** -+ * Header for events written back to userspace on the drm fd. The -+ * type defines the type of event, the length specifies the total -+ * length of the event (including the header), and user_data is -+ * typically a 64 bit value passed with the ioctl that triggered the -+ * event. A read on the drm fd will always only return complete -+ * events, that is, if for example the read buffer is 100 bytes, and -+ * there are two 64 byte events pending, only one will be returned. -+ */ -+struct drm_event { -+ uint32_t type; -+ uint32_t length; -+}; -+ -+#define DRM_EVENT_MODE_PAGE_FLIP 0x01 -+ -+struct drm_event_page_flip { -+ struct drm_event base; -+ uint64_t user_data; -+ uint32_t tv_sec; -+ uint32_t tv_usec; -+ uint32_t frame; -+}; -+ - /* typedef area */ - #ifndef __KERNEL__ - typedef struct drm_clip_rect drm_clip_rect_t; -diff --git a/shared-core/drm_mode.h b/shared-core/drm_mode.h -index 9b92733..bebe4e7 100644 ---- a/shared-core/drm_mode.h -+++ b/shared-core/drm_mode.h -@@ -270,4 +270,20 @@ struct drm_mode_crtc_lut { - uint64_t blue; - }; - -+#define DRM_MODE_PAGE_FLIP_WAIT (1<<0) /* block on previous page flip */ -+#define DRM_MODE_PAGE_FLIP_FLAGS_MASK (DRM_MODE_PAGE_FLIP_WAIT) -+ -+struct drm_mode_page_flip { -+ /** Handle of new front buffer */ -+ uint32_t fb_id; -+ uint32_t crtc_id; -+ -+ /* 64 bit cookie returned to userspace in the page flip event. */ -+ uint64_t user_data; -+ /** -+ * page flip flags (wait on flip only for now) -+ */ -+ uint32_t flags; -+}; -+ - #endif diff --git a/libdrm.spec b/libdrm.spec index 9875f48..96c1ede 100644 --- a/libdrm.spec +++ b/libdrm.spec @@ -3,12 +3,12 @@ Summary: Direct Rendering Manager runtime library Name: libdrm Version: 2.4.17 -Release: 0.1%{?dist} +Release: 1%{?dist} License: MIT Group: System Environment/Libraries URL: http://dri.sourceforge.net -#Source0: http://dri.freedesktop.org/libdrm/%{name}-%{version}.tar.bz2 -Source0: %{name}-%{gitdate}.tar.bz2 +Source0: http://dri.freedesktop.org/libdrm/%{name}-%{version}.tar.bz2 +#Source0: %{name}-%{gitdate}.tar.bz2 Source1: make-git-snapshot.sh BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -42,8 +42,8 @@ Requires: pkgconfig Direct Rendering Manager development package %prep -%setup -q -n %{name}-%{gitdate} -#%setup -q +#%setup -q -n %{name}-%{gitdate} +%setup -q %patch3 -p1 -b .forceperms %patch4 -p1 -b .no-bc @@ -105,6 +105,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/libdrm_nouveau.pc %changelog +* Mon Dec 21 2009 Dave Airlie 2.4.17-1 +- upstream released 2.4.17 + * Mon Dec 21 2009 Dave Airlie 2.4.17-0.1 - new radeon API from upstream rebase diff --git a/sources b/sources index f96878d..0243f15 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -4aa85099bb189436a3325733720cc3ab libdrm-20091221.tar.bz2 +667d81f993f7fd8a1b1b1b830a28a748 libdrm-2.4.17.tar.bz2