diff options
author | Michel Daenzer <michel@daenzer.net> | 2003-11-04 00:46:05 +0000 |
---|---|---|
committer | Michel Daenzer <michel@daenzer.net> | 2003-11-04 00:46:05 +0000 |
commit | 2655ccddf4c026f37dcc76754cdfde6f0a4a4c86 (patch) | |
tree | 98ae7d93c77d64e24863fb27d5ce8342fd2fe2fa /bsd-core | |
parent | 84dfe702e27e0ef22801f8fe366120bea90adf4f (diff) |
Memory layout transition:
the 2D driver initializes MC_FB_LOCATION and related registers sanely
the DRM deduces the layout from these registers
clients use the new SETPARAM ioctl to tell the DRM where they think the
framebuffer is located in the card's address space
the DRM uses all this information to check client state and fix it up if
necessary
This is a prerequisite for things like direct rendering with IGP chips and
video capturing.
Diffstat (limited to 'bsd-core')
-rw-r--r-- | bsd-core/drmP.h | 3 | ||||
-rw-r--r-- | bsd-core/drm_drv.c | 3 | ||||
-rw-r--r-- | bsd-core/drm_fops.c | 3 | ||||
-rw-r--r-- | bsd-core/drm_os_freebsd.h | 2 | ||||
-rw-r--r-- | bsd-core/drm_os_netbsd.h | 2 |
5 files changed, 13 insertions, 0 deletions
diff --git a/bsd-core/drmP.h b/bsd-core/drmP.h index eec3faed..2bbe2733 100644 --- a/bsd-core/drmP.h +++ b/bsd-core/drmP.h @@ -210,6 +210,9 @@ struct drm_file { drm_magic_t magic; unsigned long ioctl_count; struct drm_device *devXX; +#ifdef DRIVER_FILE_FIELDS + DRIVER_FILE_FIELDS; +#endif }; typedef struct drm_lock_data { diff --git a/bsd-core/drm_drv.c b/bsd-core/drm_drv.c index 3f494694..911e7f70 100644 --- a/bsd-core/drm_drv.c +++ b/bsd-core/drm_drv.c @@ -101,6 +101,9 @@ #ifndef DRIVER_IOCTLS #define DRIVER_IOCTLS #endif +#ifndef DRIVER_OPEN_HELPER +#define DRIVER_OPEN_HELPER( priv, dev ) +#endif #ifndef DRIVER_FOPS #endif diff --git a/bsd-core/drm_fops.c b/bsd-core/drm_fops.c index 3c4553de..55ef8ce0 100644 --- a/bsd-core/drm_fops.c +++ b/bsd-core/drm_fops.c @@ -88,6 +88,9 @@ int DRM(open_helper)(dev_t kdev, int flags, int fmt, DRM_STRUCTPROC *p, priv->devXX = dev; priv->ioctl_count = 0; priv->authenticated = !DRM_SUSER(p); + + DRIVER_OPEN_HELPER( priv, dev ); + TAILQ_INSERT_TAIL(&dev->files, priv, link); } DRM_UNLOCK(); diff --git a/bsd-core/drm_os_freebsd.h b/bsd-core/drm_os_freebsd.h index 4822b056..480a53f5 100644 --- a/bsd-core/drm_os_freebsd.h +++ b/bsd-core/drm_os_freebsd.h @@ -267,6 +267,8 @@ for ( ret = 0 ; !ret && !(condition) ; ) { \ (!useracc((caddr_t)uaddr, size, VM_PROT_READ)) #define DRM_COPY_FROM_USER_UNCHECKED(arg1, arg2, arg3) \ copyin(arg2, arg1, arg3) +#define DRM_COPY_TO_USER_UNCHECKED(arg1, arg2, arg3) \ + copyout(arg2, arg1, arg3) #define DRM_GET_USER_UNCHECKED(val, uaddr) \ ((val) = fuword(uaddr), 0) #define DRM_PUT_USER_UNCHECKED(val, uaddr) \ diff --git a/bsd-core/drm_os_netbsd.h b/bsd-core/drm_os_netbsd.h index 4c95c50f..47b8f501 100644 --- a/bsd-core/drm_os_netbsd.h +++ b/bsd-core/drm_os_netbsd.h @@ -215,6 +215,8 @@ while (!condition) { \ (!uvm_useracc((caddr_t)uaddr, size, VM_PROT_READ)) #define DRM_COPY_FROM_USER_UNCHECKED(arg1, arg2, arg3) \ copyin(arg2, arg1, arg3) +#define DRM_COPY_TO_USER_UNCHECKED(arg1, arg2, arg3) \ + copyout(arg2, arg1, arg3) #define DRM_GET_USER_UNCHECKED(val, uaddr) \ ((val) = fuword(uaddr), 0) |