summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hellström <thomas@shipmail.org>2008-10-29 10:46:01 +0000
committerThomas Hellström <thomas@shipmail.org>2008-10-29 10:46:01 +0000
commitadac707d4e7628ad1f16f31d0dc04b8cdce1fd02 (patch)
treeaf4dbb201ecdea4de775db49941435660bd908e4
parentdd26d83984ccb2a6aecb444dd4fff168a2672517 (diff)
Fix up some file confusion
-rw-r--r--src/Makefile.am3
-rw-r--r--src/via_driver.c2
-rw-r--r--src/via_drm.h270
-rw-r--r--src/via_memory.c190
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);
- }
-}