Hello community, here is the log from the commit of package libdrm for openSUSE:Factory checked in at Fri Sep 3 13:02:21 CEST 2010. -------- --- libdrm/libdrm.changes 2010-07-07 01:24:49.000000000 +0200 +++ /mounts/work_src_done/STABLE/libdrm/libdrm.changes 2010-08-28 16:11:31.000000000 +0200 @@ -1,0 +2,8 @@ +Sat Aug 28 14:02:09 UTC 2010 - sndirsch@novell.com + +- updated to git master commit #23287f0 (still 2.4.21) +- "--enable-nouveau-experimental-api" configure option appears to + be obsolete meanwhile +- enabled build of VMWare's experimental API + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- libdrm-2.4.21-726210f.tar.bz2 New: ---- libdrm-2.4.21-23287f0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libdrm.spec ++++++ --- /var/tmp/diff_new_pack.NEn6cf/_old 2010-09-03 13:01:06.000000000 +0200 +++ /var/tmp/diff_new_pack.NEn6cf/_new 2010-09-03 13:01:06.000000000 +0200 @@ -25,7 +25,7 @@ Group: System/Libraries AutoReqProv: on Version: 2.4.21 -Release: 2 +Release: 5 Provides: libdrm23 = %{version} Obsoletes: libdrm23 < %{version} # bug437293 @@ -35,7 +35,7 @@ %endif # Summary: Userspace Interface for Kernel DRM Services -Source: %{name}-%{version}-726210f.tar.bz2 +Source: %{name}-%{version}-23287f0.tar.bz2 Source2: baselibs.conf Patch: enable_test_tools.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -68,7 +68,7 @@ %build autoreconf -fi export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" -%configure --with-pic --enable-nouveau-experimental-api --enable-radeon-experimental-api --enable-udev +%configure --with-pic --enable-nouveau-experimental-api --enable-vmwgfx-experimental-api --enable-udev %{__make} %{?jobs:-j%jobs} %{__make} %{?jobs:-j%jobs} -C tests/modeprint %{__make} %{?jobs:-j%jobs} -C tests/modetest ++++++ libdrm-2.4.21-726210f.tar.bz2 -> libdrm-2.4.21-23287f0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/drm.h new/libdrm-2.4.21/include/drm/drm.h --- old/libdrm-2.4.21/include/drm/drm.h 2010-05-31 12:10:26.000000000 +0200 +++ new/libdrm-2.4.21/include/drm/drm.h 2010-08-27 11:19:15.000000000 +0200 @@ -373,7 +373,11 @@ */ struct drm_buf_map { int count; /**< Length of the buffer list */ +#ifdef __cplusplus + void *virt; +#else void *virtual; /**< Mmap'd area in user-virtual */ +#endif struct drm_buf_pub *list; /**< Buffer information */ }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/drm_mode.h new/libdrm-2.4.21/include/drm/drm_mode.h --- old/libdrm-2.4.21/include/drm/drm_mode.h 2010-05-31 12:10:26.000000000 +0200 +++ new/libdrm-2.4.21/include/drm/drm_mode.h 2010-08-27 11:19:15.000000000 +0200 @@ -74,6 +74,7 @@ /* Dithering mode options */ #define DRM_MODE_DITHERING_OFF 0 #define DRM_MODE_DITHERING_ON 1 +#define DRM_MODE_DITHERING_AUTO 2 /* Dirty info options */ #define DRM_MODE_DIRTY_OFF 0 @@ -85,7 +86,7 @@ __u16 hdisplay, hsync_start, hsync_end, htotal, hskew; __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan; - __u32 vrefresh; /* vertical refresh * 1000 */ + __u32 vrefresh; __u32 flags; __u32 type; @@ -160,6 +161,7 @@ #define DRM_MODE_CONNECTOR_HDMIA 11 #define DRM_MODE_CONNECTOR_HDMIB 12 #define DRM_MODE_CONNECTOR_TV 13 +#define DRM_MODE_CONNECTOR_eDP 14 struct drm_mode_get_connector { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/i915_drm.h new/libdrm-2.4.21/include/drm/i915_drm.h --- old/libdrm-2.4.21/include/drm/i915_drm.h 2010-06-08 12:19:09.000000000 +0200 +++ new/libdrm-2.4.21/include/drm/i915_drm.h 2010-08-27 11:19:15.000000000 +0200 @@ -617,8 +617,8 @@ __u32 num_cliprects; /** This is a struct drm_clip_rect *cliprects */ __u64 cliprects_ptr; -#define I915_EXEC_RENDER (1 << 0) -#define I915_EXEC_BSD (1 << 1) +#define I915_EXEC_RENDER (1<<0) +#define I915_EXEC_BSD (1<<1) __u64 flags; __u64 rsvd1; __u64 rsvd2; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/Makefile new/libdrm-2.4.21/include/drm/Makefile --- old/libdrm-2.4.21/include/drm/Makefile 2010-06-24 16:48:26.000000000 +0200 +++ new/libdrm-2.4.21/include/drm/Makefile 2010-08-28 15:57:23.000000000 +0200 @@ -58,7 +58,7 @@ POST_UNINSTALL = : build_triplet = x86_64-suse-linux-gnu host_triplet = x86_64-suse-linux-gnu -#am__append_1 = vmwgfx_drm.h +am__append_1 = vmwgfx_drm.h subdir = include/drm DIST_COMMON = $(am__klibdrminclude_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/nouveau_drm.h new/libdrm-2.4.21/include/drm/nouveau_drm.h --- old/libdrm-2.4.21/include/drm/nouveau_drm.h 2010-02-17 12:00:08.000000000 +0100 +++ new/libdrm-2.4.21/include/drm/nouveau_drm.h 2010-08-27 11:19:15.000000000 +0200 @@ -79,6 +79,7 @@ #define NOUVEAU_GETPARAM_CHIPSET_ID 11 #define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 #define NOUVEAU_GETPARAM_GRAPH_UNITS 13 +#define NOUVEAU_GETPARAM_PTIMER_TIME 14 struct drm_nouveau_getparam { uint64_t param; uint64_t value; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/radeon_drm.h new/libdrm-2.4.21/include/drm/radeon_drm.h --- old/libdrm-2.4.21/include/drm/radeon_drm.h 2010-02-26 11:19:25.000000000 +0100 +++ new/libdrm-2.4.21/include/drm/radeon_drm.h 2010-08-27 11:19:16.000000000 +0200 @@ -902,6 +902,10 @@ #define RADEON_INFO_NUM_GB_PIPES 0x01 #define RADEON_INFO_NUM_Z_PIPES 0x02 #define RADEON_INFO_ACCEL_WORKING 0x03 +#define RADEON_INFO_CRTC_FROM_ID 0x04 +#define RADEON_INFO_ACCEL_WORKING2 0x05 +#define RADEON_INFO_TILING_CONFIG 0x06 +#define RADEON_INFO_WANT_HYPERZ 0x07 struct drm_radeon_info { uint32_t request; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/include/drm/vmwgfx_drm.h new/libdrm-2.4.21/include/drm/vmwgfx_drm.h --- old/libdrm-2.4.21/include/drm/vmwgfx_drm.h 2010-02-26 11:19:26.000000000 +0100 +++ new/libdrm-2.4.21/include/drm/vmwgfx_drm.h 2010-08-27 11:19:16.000000000 +0200 @@ -50,6 +50,8 @@ #define DRM_VMW_EXECBUF 12 #define DRM_VMW_FIFO_DEBUG 13 #define DRM_VMW_FENCE_WAIT 14 +/* guarded by minor version >= 2 */ +#define DRM_VMW_UPDATE_LAYOUT 15 /*************************************************************************/ @@ -88,6 +90,49 @@ /*************************************************************************/ /** + * DRM_VMW_EXTENSION - Query device extensions. + */ + +/** + * struct drm_vmw_extension_rep + * + * @exists: The queried extension exists. + * @driver_ioctl_offset: Ioctl number of the first ioctl in the extension. + * @driver_sarea_offset: Offset to any space in the DRI SAREA + * used by the extension. + * @major: Major version number of the extension. + * @minor: Minor version number of the extension. + * @pl: Patch level version number of the extension. + * + * Output argument to the DRM_VMW_EXTENSION Ioctl. + */ + +struct drm_vmw_extension_rep { + int32_t exists; + uint32_t driver_ioctl_offset; + uint32_t driver_sarea_offset; + uint32_t major; + uint32_t minor; + uint32_t pl; + uint32_t pad64; +}; + +/** + * union drm_vmw_extension_arg + * + * @extension - Ascii name of the extension to be queried. //In + * @rep - Reply as defined above. //Out + * + * Argument to the DRM_VMW_EXTENSION Ioctl. + */ + +union drm_vmw_extension_arg { + char extension[DRM_VMW_EXT_NAME_LEN]; + struct drm_vmw_extension_rep rep; +}; + +/*************************************************************************/ +/** * DRM_VMW_CREATE_CONTEXT - Create a host context. * * Allocates a device unique context id, and queues a create context command @@ -542,4 +587,28 @@ * sure that the stream has been stopped. */ +/*************************************************************************/ +/** + * DRM_VMW_UPDATE_LAYOUT - Update layout + * + * Updates the prefered modes and connection status for connectors. The + * command conisits of one drm_vmw_update_layout_arg pointing out a array + * of num_outputs drm_vmw_rect's. + */ + +/** + * struct drm_vmw_update_layout_arg + * + * @num_outputs: number of active + * @rects: pointer to array of drm_vmw_rect + * + * Input argument to the DRM_VMW_UPDATE_LAYOUT Ioctl. + */ + +struct drm_vmw_update_layout_arg { + uint32_t num_outputs; + uint32_t pad64; + uint64_t rects; +}; + #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/intel/intel_bufmgr_gem.c new/libdrm-2.4.21/intel/intel_bufmgr_gem.c --- old/libdrm-2.4.21/intel/intel_bufmgr_gem.c 2010-06-24 16:39:30.000000000 +0200 +++ new/libdrm-2.4.21/intel/intel_bufmgr_gem.c 2010-08-27 11:19:16.000000000 +0200 @@ -1006,12 +1006,9 @@ &set_domain); } while (ret == -1 && errno == EINTR); if (ret != 0) { - ret = -errno; fprintf(stderr, "%s:%d: Error setting to CPU domain %d: %s\n", __FILE__, __LINE__, bo_gem->gem_handle, strerror(errno)); - pthread_mutex_unlock(&bufmgr_gem->lock); - return ret; } pthread_mutex_unlock(&bufmgr_gem->lock); @@ -1086,9 +1083,7 @@ DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); } while (ret == -1 && errno == EINTR); - if (ret != 0) { - ret = -errno; fprintf(stderr, "%s:%d: Error setting domain %d: %s\n", __FILE__, __LINE__, bo_gem->gem_handle, strerror(errno)); @@ -1096,7 +1091,7 @@ pthread_mutex_unlock(&bufmgr_gem->lock); - return ret; + return 0; } int drm_intel_gem_bo_unmap_gtt(drm_intel_bo *bo) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/intel/intel_bufmgr.h new/libdrm-2.4.21/intel/intel_bufmgr.h --- old/libdrm-2.4.21/intel/intel_bufmgr.h 2010-06-08 12:19:09.000000000 +0200 +++ new/libdrm-2.4.21/intel/intel_bufmgr.h 2010-08-27 11:19:16.000000000 +0200 @@ -66,7 +66,11 @@ * Virtual address for accessing the buffer data. Only valid while * mapped. */ +#ifdef __cplusplus + void *virt; +#else void *virtual; +#endif /** Buffer manager context associated with this buffer object */ drm_intel_bufmgr *bufmgr; @@ -168,7 +172,7 @@ drm_intel_bo *drm_intel_bo_fake_alloc_static(drm_intel_bufmgr *bufmgr, const char *name, unsigned long offset, - unsigned long size, void *virtual); + unsigned long size, void *virt); void drm_intel_bo_fake_disable_backing_store(drm_intel_bo *bo, void (*invalidate_cb) (drm_intel_bo * bo, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/nouveau/nouveau_device.c new/libdrm-2.4.21/nouveau/nouveau_device.c --- old/libdrm-2.4.21/nouveau/nouveau_device.c 2010-02-17 12:00:09.000000000 +0100 +++ new/libdrm-2.4.21/nouveau/nouveau_device.c 2010-08-27 11:19:16.000000000 +0200 @@ -26,10 +26,6 @@ #include "nouveau_private.h" -#if NOUVEAU_DRM_HEADER_PATCHLEVEL != 16 -#error nouveau_drm.h does not match expected patchlevel, update libdrm. -#endif - int nouveau_device_open_existing(struct nouveau_device **dev, int close, int fd, drm_context_t ctx) @@ -42,11 +38,6 @@ if (!dev || *dev) return -EINVAL; - ver = drmGetVersion(fd); - if (!ver || ver->version_patchlevel != NOUVEAU_DRM_HEADER_PATCHLEVEL) - return -EINVAL; - drmFreeVersion(ver); - nvdev = calloc(1, sizeof(*nvdev)); if (!nvdev) return -ENOMEM; @@ -54,6 +45,18 @@ nvdev->ctx = ctx; nvdev->needs_close = close; + ver = drmGetVersion(fd); + if (!ver) + return -EINVAL; + + if ((ver->version_major == 0 && ver->version_patchlevel != 16) && + ver->version_major != 1) { + nouveau_device_close((void *)&nvdev); + return -EINVAL; + } + + drmFreeVersion(ver); + ret = nouveau_device_get_param(&nvdev->base, NOUVEAU_GETPARAM_VM_VRAM_BASE, &value); if (ret) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/xf86drm.c new/libdrm-2.4.21/xf86drm.c --- old/libdrm-2.4.21/xf86drm.c 2010-01-06 03:43:01.000000000 +0100 +++ new/libdrm-2.4.21/xf86drm.c 2010-08-27 11:19:16.000000000 +0200 @@ -229,7 +229,7 @@ * PCI:b:d:f format and the newer pci:oooo:bb:dd.f format. In the format, o is * domain, b is bus, d is device, f is function. */ -static int drmMatchBusID(const char *id1, const char *id2) +static int drmMatchBusID(const char *id1, const char *id2, int pci_domain_ok) { /* First, check if the IDs are exactly the same */ if (strcasecmp(id1, id2) == 0) @@ -257,6 +257,13 @@ return 0; } + /* If domains aren't properly supported by the kernel interface, + * just ignore them, which sucks less than picking a totally random + * card with "open by name" + */ + if (!pci_domain_ok) + o1 = o2 = 0; + if ((o1 != o2) || (b1 != b2) || (d1 != d2) || (f1 != f2)) return 0; else @@ -482,7 +489,7 @@ */ static int drmOpenByBusid(const char *busid) { - int i; + int i, pci_domain_ok = 1; int fd; const char *buf; drmSetVersion sv; @@ -492,14 +499,27 @@ fd = drmOpenMinor(i, 1, DRM_NODE_RENDER); drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd); if (fd >= 0) { + /* We need to try for 1.4 first for proper PCI domain support + * and if that fails, we know the kernel is busted + */ sv.drm_di_major = 1; - sv.drm_di_minor = 1; + sv.drm_di_minor = 4; sv.drm_dd_major = -1; /* Don't care */ sv.drm_dd_minor = -1; /* Don't care */ - drmSetInterfaceVersion(fd, &sv); + if (drmSetInterfaceVersion(fd, &sv)) { +#ifndef __alpha__ + pci_domain_ok = 0; +#endif + sv.drm_di_major = 1; + sv.drm_di_minor = 1; + sv.drm_dd_major = -1; /* Don't care */ + sv.drm_dd_minor = -1; /* Don't care */ + drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n",fd); + drmSetInterfaceVersion(fd, &sv); + } buf = drmGetBusid(fd); drmMsg("drmOpenByBusid: drmGetBusid reports %s\n", buf); - if (buf && drmMatchBusID(buf, busid)) { + if (buf && drmMatchBusID(buf, busid, pci_domain_ok)) { drmFreeBusid(buf); return fd; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.21/xf86drmMode.c new/libdrm-2.4.21/xf86drmMode.c --- old/libdrm-2.4.21/xf86drmMode.c 2010-01-17 09:20:13.000000000 +0100 +++ new/libdrm-2.4.21/xf86drmMode.c 2010-08-27 11:19:16.000000000 +0200 @@ -52,6 +52,12 @@ #define U642VOID(x) ((void *)(unsigned long)(x)) #define VOID2U64(x) ((uint64_t)(unsigned long)(x)) +static inline DRM_IOCTL(int fd, int cmd, void *arg) +{ + int ret = drmIoctl(fd, cmd, arg); + return ret < 0 ? -errno : ret; +} + /* * Util functions */ @@ -242,7 +248,7 @@ f.depth = depth; f.handle = bo_handle; - if ((ret = drmIoctl(fd, DRM_IOCTL_MODE_ADDFB, &f))) + if ((ret = DRM_IOCTL(fd, DRM_IOCTL_MODE_ADDFB, &f))) return ret; *buf_id = f.fb_id; @@ -251,7 +257,7 @@ int drmModeRmFB(int fd, uint32_t bufferId) { - return drmIoctl(fd, DRM_IOCTL_MODE_RMFB, &bufferId); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_RMFB, &bufferId); } @@ -289,7 +295,7 @@ dirty.clips_ptr = VOID2U64(clips); dirty.num_clips = num_clips; - return drmIoctl(fd, DRM_IOCTL_MODE_DIRTYFB, &dirty); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_DIRTYFB, &dirty); } @@ -344,7 +350,7 @@ } else crtc.mode_valid = 0; - return drmIoctl(fd, DRM_IOCTL_MODE_SETCRTC, &crtc); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_SETCRTC, &crtc); } /* @@ -361,7 +367,7 @@ arg.height = height; arg.handle = bo_handle; - return drmIoctl(fd, DRM_IOCTL_MODE_CURSOR, &arg); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_CURSOR, &arg); } int drmModeMoveCursor(int fd, uint32_t crtcId, int x, int y) @@ -373,7 +379,7 @@ arg.x = x; arg.y = y; - return drmIoctl(fd, DRM_IOCTL_MODE_CURSOR, &arg); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_CURSOR, &arg); } /* @@ -510,7 +516,7 @@ memcpy(&res.mode, mode_info, sizeof(struct drm_mode_modeinfo)); res.connector_id = connector_id; - return drmIoctl(fd, DRM_IOCTL_MODE_ATTACHMODE, &res); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_ATTACHMODE, &res); } int drmModeDetachMode(int fd, uint32_t connector_id, drmModeModeInfoPtr mode_info) @@ -520,7 +526,7 @@ memcpy(&res.mode, mode_info, sizeof(struct drm_mode_modeinfo)); res.connector_id = connector_id; - return drmIoctl(fd, DRM_IOCTL_MODE_DETACHMODE, &res); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_DETACHMODE, &res); } @@ -613,7 +619,7 @@ } if (!(r = drmMalloc(sizeof(*r)))) - return NULL; + goto err_allocs; r->id = blob.blob_id; r->length = blob.length; @@ -637,16 +643,12 @@ uint64_t value) { struct drm_mode_connector_set_property osp; - int ret; osp.connector_id = connector_id; osp.prop_id = property_id; osp.value = value; - if ((ret = drmIoctl(fd, DRM_IOCTL_MODE_SETPROPERTY, &osp))) - return ret; - - return 0; + return DRM_IOCTL(fd, DRM_IOCTL_MODE_SETPROPERTY, &osp); } /* @@ -715,7 +717,6 @@ int drmModeCrtcGetGamma(int fd, uint32_t crtc_id, uint32_t size, uint16_t *red, uint16_t *green, uint16_t *blue) { - int ret; struct drm_mode_crtc_lut l; l.crtc_id = crtc_id; @@ -724,16 +725,12 @@ l.green = VOID2U64(green); l.blue = VOID2U64(blue); - if ((ret = drmIoctl(fd, DRM_IOCTL_MODE_GETGAMMA, &l))) - return ret; - - return 0; + return DRM_IOCTL(fd, DRM_IOCTL_MODE_GETGAMMA, &l); } int drmModeCrtcSetGamma(int fd, uint32_t crtc_id, uint32_t size, uint16_t *red, uint16_t *green, uint16_t *blue) { - int ret; struct drm_mode_crtc_lut l; l.crtc_id = crtc_id; @@ -742,10 +739,7 @@ l.green = VOID2U64(green); l.blue = VOID2U64(blue); - if ((ret = drmIoctl(fd, DRM_IOCTL_MODE_SETGAMMA, &l))) - return ret; - - return 0; + return DRM_IOCTL(fd, DRM_IOCTL_MODE_SETGAMMA, &l); } int drmHandleEvent(int fd, drmEventContextPtr evctx) @@ -810,5 +804,5 @@ flip.flags = flags; flip.reserved = 0; - return drmIoctl(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip); + return DRM_IOCTL(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip); } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org