diff options
author | Thomas Hellström <thomas@shipmail.org> | 2008-10-29 10:46:01 +0000 |
---|---|---|
committer | Thomas Hellström <thomas@shipmail.org> | 2008-10-29 10:46:01 +0000 |
commit | adac707d4e7628ad1f16f31d0dc04b8cdce1fd02 (patch) | |
tree | af4dbb201ecdea4de775db49941435660bd908e4 | |
parent | dd26d83984ccb2a6aecb444dd4fff168a2672517 (diff) |
Fix up some file confusion
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/via_driver.c | 2 | ||||
-rw-r--r-- | src/via_drm.h | 270 | ||||
-rw-r--r-- | src/via_memory.c | 190 |
4 files changed, 2 insertions, 463 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 2d6c4c2..4bef2cd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -68,8 +68,7 @@ openchrome_drv_la_SOURCES = \ via_vt162x.h \ via_xvpriv.h \ ochr_ws_driver.h \ - ochr_ws_driver.c \ - ws_dri_drmpool.c + ochr_ws_driver.c if DRI diff --git a/src/via_driver.c b/src/via_driver.c index ef1b42f..016ba09 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -2502,7 +2502,7 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) pVia->directRenderingEnabled = VIADRIScreenInit(pScreen); pVia->vtNotified = FALSE; if (pVia->directRenderingEnabled && !pVia->IsSecondary) { - pVia->mainPool = driDRMPoolInit(pVia->drmFD); + pVia->mainPool = driDRMPoolInit(pVia->drmFD, DRM_VIA_TTM_OFFSET); } #else /* diff --git a/src/via_drm.h b/src/via_drm.h deleted file mode 100644 index 9d85a1e..0000000 --- a/src/via_drm.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. - * Copyright 2001-2003 S3 Graphics, Inc. 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 - * THE AUTHOR(S) OR COPYRIGHT HOLDER(S) 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 _VIA_DRM_H_ -#define _VIA_DRM_H_ - -/* WARNING: These defines must be the same as what the Xserver uses. - * if you change them, you must change the defines in the Xserver. - */ - -#ifndef _VIA_DEFINES_ -#define _VIA_DEFINES_ - -#if !defined(__KERNEL__) && !defined(_KERNEL) -#include "via_drmclient.h" -#endif - -#define VIA_NR_SAREA_CLIPRECTS 8 -#define VIA_NR_XVMC_PORTS 10 -#define VIA_NR_XVMC_LOCKS 5 -#define VIA_MAX_CACHELINE_SIZE 64 -#define XVMCLOCKPTR(saPriv,lockNo) \ - ((volatile drm_hw_lock_t *)(((((unsigned long) (saPriv)->XvMCLockArea) + \ - (VIA_MAX_CACHELINE_SIZE - 1)) & \ - ~(VIA_MAX_CACHELINE_SIZE - 1)) + \ - VIA_MAX_CACHELINE_SIZE*(lockNo))) - -/* Each region is a minimum of 64k, and there are at most 64 of them. - */ -#define VIA_NR_TEX_REGIONS 64 -#define VIA_LOG_MIN_TEX_REGION_SIZE 16 -#endif - -#define VIA_UPLOAD_TEX0IMAGE 0x1 /* handled clientside */ -#define VIA_UPLOAD_TEX1IMAGE 0x2 /* handled clientside */ -#define VIA_UPLOAD_CTX 0x4 -#define VIA_UPLOAD_BUFFERS 0x8 -#define VIA_UPLOAD_TEX0 0x10 -#define VIA_UPLOAD_TEX1 0x20 -#define VIA_UPLOAD_CLIPRECTS 0x40 -#define VIA_UPLOAD_ALL 0xff - -/* VIA specific ioctls */ -#define DRM_VIA_ALLOCMEM 0x00 -#define DRM_VIA_FREEMEM 0x01 -#define DRM_VIA_AGP_INIT 0x02 -#define DRM_VIA_FB_INIT 0x03 -#define DRM_VIA_MAP_INIT 0x04 -#define DRM_VIA_DEC_FUTEX 0x05 -#define NOT_USED -#define DRM_VIA_DMA_INIT 0x07 -#define DRM_VIA_CMDBUFFER 0x08 -#define DRM_VIA_FLUSH 0x09 -#define DRM_VIA_PCICMD 0x0a -#define DRM_VIA_CMDBUF_SIZE 0x0b -#define NOT_USED -#define DRM_VIA_WAIT_IRQ 0x0d -#define DRM_VIA_DMA_BLIT 0x0e -#define DRM_VIA_BLIT_SYNC 0x0f - -#define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t) -#define DRM_IOCTL_VIA_FREEMEM DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t) -#define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t) -#define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t) -#define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t) -#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t) -#define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t) -#define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t) -#define DRM_IOCTL_VIA_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_VIA_FLUSH) -#define DRM_IOCTL_VIA_PCICMD DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t) -#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, \ - drm_via_cmdbuf_size_t) -#define DRM_IOCTL_VIA_WAIT_IRQ DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t) -#define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t) -#define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t) - -/* Indices into buf.Setup where various bits of state are mirrored per - * context and per buffer. These can be fired at the card as a unit, - * or in a piecewise fashion as required. - */ - -#define VIA_TEX_SETUP_SIZE 8 - -/* Flags for clear ioctl - */ -#define VIA_FRONT 0x1 -#define VIA_BACK 0x2 -#define VIA_DEPTH 0x4 -#define VIA_STENCIL 0x8 - -#define VIA_MEM_VIDEO 0 /* matches drm constant */ -#define VIA_MEM_AGP 1 /* matches drm constant */ -#define VIA_MEM_SYSTEM 2 -#define VIA_MEM_MIXED 3 -#define VIA_MEM_UNKNOWN 4 - -typedef struct { - uint32_t offset; - uint32_t size; -} drm_via_agp_t; - -typedef struct { - uint32_t offset; - uint32_t size; -} drm_via_fb_t; - -typedef struct { - uint32_t context; - uint32_t type; - uint32_t size; - unsigned long index; - unsigned long offset; -} drm_via_mem_t; - -typedef struct _drm_via_init { - enum { - VIA_INIT_MAP = 0x01, - VIA_CLEANUP_MAP = 0x02 - } func; - - unsigned long sarea_priv_offset; - unsigned long fb_offset; - unsigned long mmio_offset; - unsigned long agpAddr; -} drm_via_init_t; - -typedef struct _drm_via_futex { - enum { - VIA_FUTEX_WAIT = 0x00, - VIA_FUTEX_WAKE = 0X01 - } func; - uint32_t ms; - uint32_t lock; - uint32_t val; -} drm_via_futex_t; - -typedef struct _drm_via_dma_init { - enum { - VIA_INIT_DMA = 0x01, - VIA_CLEANUP_DMA = 0x02, - VIA_DMA_INITIALIZED = 0x03 - } func; - - unsigned long offset; - unsigned long size; - unsigned long reg_pause_addr; -} drm_via_dma_init_t; - -typedef struct _drm_via_cmdbuffer { - char __user *buf; - unsigned long size; -} drm_via_cmdbuffer_t; - -/* Warning: If you change the SAREA structure you must change the Xserver - * structure as well */ - -typedef struct _drm_via_tex_region { - unsigned char next, prev; /* indices to form a circular LRU */ - unsigned char inUse; /* owned by a client, or free? */ - int age; /* tracked by clients to update local LRU's */ -} drm_via_tex_region_t; - -typedef struct _drm_via_sarea { - unsigned int dirty; - unsigned int nbox; - drm_clip_rect_t boxes[VIA_NR_SAREA_CLIPRECTS]; - drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1]; - int texAge; /* last time texture was uploaded */ - int ctxOwner; /* last context to upload state */ - int vertexPrim; - - /* - * Below is for XvMC. - * We want the lock integers alone on, and aligned to, a cache line. - * Therefore this somewhat strange construct. - */ - - char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)]; - - unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS]; - unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS]; - unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */ - - /* Used by the 3d driver only at this point, for pageflipping: - */ - - unsigned int pfCurrentOffset; -} drm_via_sarea_t; - -typedef struct _drm_via_cmdbuf_size { - enum { - VIA_CMDBUF_SPACE = 0x01, - VIA_CMDBUF_LAG = 0x02 - } func; - int wait; - uint32_t size; -} drm_via_cmdbuf_size_t; - -typedef enum { - VIA_IRQ_ABSOLUTE = 0x0, - VIA_IRQ_RELATIVE = 0x1, - VIA_IRQ_SIGNAL = 0x10000000, - VIA_IRQ_FORCE_SEQUENCE = 0x20000000 -} via_irq_seq_type_t; - -#define VIA_IRQ_FLAGS_MASK 0xF0000000 - -enum drm_via_irqs{drm_via_irq_hqv0 = 0, - drm_via_irq_hqv1, - drm_via_irq_dma0_dd, - drm_via_irq_dma0_td, - drm_via_irq_dma1_dd, - drm_via_irq_dma1_td, - drm_via_irq_num}; - -struct drm_via_wait_irq_request{ - unsigned irq; - via_irq_seq_type_t type; - uint32_t sequence; - uint32_t signal; -}; - -typedef union drm_via_irqwait { - struct drm_via_wait_irq_request request; - struct drm_wait_vblank_reply reply; -} drm_via_irqwait_t; - -typedef struct drm_via_blitsync { - uint32_t sync_handle; - unsigned engine; -} drm_via_blitsync_t; - -typedef struct drm_via_dmablit { - uint32_t num_lines; - uint32_t line_length; - - uint32_t fb_addr; - uint32_t fb_stride; - - unsigned char *mem_addr; - uint32_t mem_stride; - - int bounce_buffer; - int to_fb; - - drm_via_blitsync_t sync; -} drm_via_dmablit_t; - - -#endif /* _VIA_DRM_H_ */ diff --git a/src/via_memory.c b/src/via_memory.c deleted file mode 100644 index 0cb6871..0000000 --- a/src/via_memory.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003 Red Hat, Inc. 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 - * THE AUTHORS OR COPYRIGHT HOLDERS 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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "xf86.h" -#include "xf86_OSproc.h" -#include "xf86fbman.h" - -#include "via.h" - -#ifdef XF86DRI -#include "xf86drm.h" -#endif - -#include "via_driver.h" -#include "via_priv.h" -#include "via_swov.h" -#ifdef XF86DRI -#include "via_drm.h" -#endif - -/* - * Isolate the wonders of X memory allocation and DRI memory allocation - * and 4.3 or 4.4 differences in one abstraction. - * - * The pool code indicates who provided the memory: - * 0 - nobody - * 1 - xf86 linear - * 2 - DRM - */ - -#ifdef VIA_HAVE_EXA -static void -viaExaFBSave(ScreenPtr pScreen, ExaOffscreenArea * exa) -{ - FatalError("Xserver is incompatible with openchrome EXA.\n" - "\t\tPlease look at Xorg bugzilla bug #7639, and at\n" - "\t\thttp://wiki.openchrome.org/tikiwiki/tiki-index" - ".php?page=EXAAcceleration .\n"); -} -#endif - -void -VIAFreeLinear(VIAMemPtr mem) -{ - DEBUG(ErrorF("Freed %lu (pool %d)\n", mem->base, mem->pool)); - switch (mem->pool) { - case 0: - return; - case 1: -#ifdef VIA_HAVE_EXA - { - VIAPtr pVia = VIAPTR(mem->pScrn); - - if (pVia->useEXA && !pVia->NoAccel) { - exaOffscreenFree(mem->pScrn->pScreen, mem->exa); - mem->linear = NULL; - mem->pool = 0; - return; - } - } -#endif - xf86FreeOffscreenLinear(mem->linear); - mem->linear = NULL; - mem->pool = 0; - return; - case 2: -#ifdef XF86DRI - if (drmCommandWrite(mem->drm_fd, DRM_VIA_FREEMEM, - &mem->drm, sizeof(struct drm_via_mem)) < 0) - ErrorF("DRM module failed free.\n"); -#endif - mem->pool = 0; - return; - } -} - -int -viaOffScreenLinear(VIAMemPtr mem, ScrnInfoPtr pScrn, unsigned long size) -{ - int depth = pScrn->bitsPerPixel >> 3; - -#ifdef VIA_HAVE_EXA - VIAPtr pVia = VIAPTR(pScrn); - - if (pVia->useEXA && !pVia->NoAccel) { - - mem->exa = exaOffscreenAlloc(pScrn->pScreen, size, - 32, TRUE, NULL, NULL); - if (mem->exa == NULL) - return BadAlloc; - mem->exa->save = viaExaFBSave; - mem->base = mem->exa->offset; - mem->pool = 1; - mem->pScrn = pScrn; - return Success; - } -#endif - - mem->linear = xf86AllocateOffscreenLinear(pScrn->pScreen, - (size + depth - 1) / depth, - 32, NULL, NULL, NULL); - if (mem->linear == NULL) - return BadAlloc; - mem->base = mem->linear->offset * depth; - mem->pool = 1; - mem->pScrn = pScrn; - return Success; -} - -int -VIAAllocLinear(VIAMemPtr mem, ScrnInfoPtr pScrn, unsigned long size) -{ -#ifdef XF86DRI - VIAPtr pVia = VIAPTR(pScrn); - int ret; - - if (mem->pool) - ErrorF("VIA Double Alloc.\n"); - - if (pVia->directRenderingEnabled) { - mem->pScrn = pScrn; - mem->drm_fd = pVia->drmFD; - mem->drm.context = DRIGetContext(pScrn->pScreen); - mem->drm.size = size; - mem->drm.type = VIA_MEM_VIDEO; - ret = drmCommandWriteRead(mem->drm_fd, DRM_VIA_ALLOCMEM, - &mem->drm, sizeof(struct drm_via_mem)); - if (ret || (size != mem->drm.size)) { - /* Try X Offsceen fallback before failing. */ - if (Success == viaOffScreenLinear(mem, pScrn, size)) - return Success; - ErrorF("DRM memory allocation failed\n"); - return BadAlloc; - } - - mem->base = mem->drm.offset; - mem->pool = 2; - DEBUG(ErrorF("Fulfilled via DRI at %lu\n", mem->base)); - return Success; - } -#endif - if (Success == viaOffScreenLinear(mem, pScrn, size)) - return Success; - ErrorF("Linear memory allocation failed\n"); - return BadAlloc; -} - -void -VIAInitLinear(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - VIAPtr pVia = VIAPTR(pScrn); - -#ifdef VIA_HAVE_EXA - if (pVia->useEXA && !pVia->NoAccel) - return; - else -#endif - { - unsigned long offset = (pVia->FBFreeStart + pVia->Bpp - 1) / pVia->Bpp; - long size = pVia->FBFreeEnd / pVia->Bpp - offset; - - if (size > 0) - xf86InitFBManagerLinear(pScreen, offset, size); - } -} |