mga_common.h revision fe5e51b7
1fe5e51b7Smrg/* mga_common.h -- common header definitions for MGA 2D/3D/DRM suite 2fe5e51b7Smrg * 3fe5e51b7Smrg * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. 4fe5e51b7Smrg * All Rights Reserved. 5fe5e51b7Smrg * 6fe5e51b7Smrg * Permission is hereby granted, free of charge, to any person obtaining a 7fe5e51b7Smrg * copy of this software and associated documentation files (the "Software"), 8fe5e51b7Smrg * to deal in the Software without restriction, including without limitation 9fe5e51b7Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10fe5e51b7Smrg * and/or sell copies of the Software, and to permit persons to whom the 11fe5e51b7Smrg * Software is furnished to do so, subject to the following conditions: 12fe5e51b7Smrg * 13fe5e51b7Smrg * The above copyright notice and this permission notice (including the next 14fe5e51b7Smrg * paragraph) shall be included in all copies or substantial portions of the 15fe5e51b7Smrg * Software. 16fe5e51b7Smrg * 17fe5e51b7Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18fe5e51b7Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19fe5e51b7Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20fe5e51b7Smrg * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 21fe5e51b7Smrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 22fe5e51b7Smrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23fe5e51b7Smrg * DEALINGS IN THE SOFTWARE. 24fe5e51b7Smrg * 25fe5e51b7Smrg * Converted to common header format: 26fe5e51b7Smrg * Jens Owen <jens@tungstengraphics.com> 27fe5e51b7Smrg * 28fe5e51b7Smrg * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_common.h,v 1.2 2002/12/16 16:19:18 dawes Exp $ 29fe5e51b7Smrg * 30fe5e51b7Smrg */ 31fe5e51b7Smrg 32fe5e51b7Smrg#ifndef _MGA_COMMON_H_ 33fe5e51b7Smrg#define _MGA_COMMON_H_ 34fe5e51b7Smrg 35fe5e51b7Smrg/* 36fe5e51b7Smrg * WARNING: If you change any of these defines, make sure to change 37fe5e51b7Smrg * the kernel include file as well (mga_drm.h) 38fe5e51b7Smrg */ 39fe5e51b7Smrg 40fe5e51b7Smrg#define DRM_MGA_IDLE_RETRY 2048 41fe5e51b7Smrg#define DRM_MGA_NR_TEX_HEAPS 2 42fe5e51b7Smrg 43fe5e51b7Smrgtypedef struct { 44fe5e51b7Smrg int installed; 45fe5e51b7Smrg unsigned long phys_addr; 46fe5e51b7Smrg int size; 47fe5e51b7Smrg} drmMGAWarpIndex; 48fe5e51b7Smrg 49fe5e51b7Smrg/* Driver specific DRM command indices 50fe5e51b7Smrg * NOTE: these are not OS specific, but they are driver specific 51fe5e51b7Smrg */ 52fe5e51b7Smrg#define DRM_MGA_INIT 0x00 53fe5e51b7Smrg#define DRM_MGA_FLUSH 0x01 54fe5e51b7Smrg#define DRM_MGA_RESET 0x02 55fe5e51b7Smrg#define DRM_MGA_SWAP 0x03 56fe5e51b7Smrg#define DRM_MGA_CLEAR 0x04 57fe5e51b7Smrg#define DRM_MGA_VERTEX 0x05 58fe5e51b7Smrg#define DRM_MGA_INDICES 0x06 59fe5e51b7Smrg#define DRM_MGA_ILOAD 0x07 60fe5e51b7Smrg#define DRM_MGA_BLIT 0x08 61fe5e51b7Smrg#define DRM_MGA_GETPARAM 0x09 62fe5e51b7Smrg 63fe5e51b7Smrgtypedef struct { 64fe5e51b7Smrg enum { 65fe5e51b7Smrg MGA_INIT_DMA = 0x01, 66fe5e51b7Smrg MGA_CLEANUP_DMA = 0x02 67fe5e51b7Smrg } func; 68fe5e51b7Smrg 69fe5e51b7Smrg unsigned long sarea_priv_offset; 70fe5e51b7Smrg 71fe5e51b7Smrg int chipset; 72fe5e51b7Smrg int sgram; 73fe5e51b7Smrg 74fe5e51b7Smrg unsigned int maccess; 75fe5e51b7Smrg 76fe5e51b7Smrg unsigned int fb_cpp; 77fe5e51b7Smrg unsigned int front_offset, front_pitch; 78fe5e51b7Smrg unsigned int back_offset, back_pitch; 79fe5e51b7Smrg 80fe5e51b7Smrg unsigned int depth_cpp; 81fe5e51b7Smrg unsigned int depth_offset, depth_pitch; 82fe5e51b7Smrg 83fe5e51b7Smrg unsigned int texture_offset[DRM_MGA_NR_TEX_HEAPS]; 84fe5e51b7Smrg unsigned int texture_size[DRM_MGA_NR_TEX_HEAPS]; 85fe5e51b7Smrg 86fe5e51b7Smrg unsigned long fb_offset; 87fe5e51b7Smrg unsigned long mmio_offset; 88fe5e51b7Smrg unsigned long status_offset; 89fe5e51b7Smrg unsigned long warp_offset; 90fe5e51b7Smrg unsigned long primary_offset; 91fe5e51b7Smrg unsigned long buffers_offset; 92fe5e51b7Smrg} drmMGAInit; 93fe5e51b7Smrg 94fe5e51b7Smrgtypedef enum { 95fe5e51b7Smrg DRM_MGA_LOCK_READY = 0x01, /* Wait until hardware is ready for DMA */ 96fe5e51b7Smrg DRM_MGA_LOCK_QUIESCENT = 0x02, /* Wait until hardware quiescent */ 97fe5e51b7Smrg DRM_MGA_LOCK_FLUSH = 0x04, /* Flush this context's DMA queue first */ 98fe5e51b7Smrg DRM_MGA_LOCK_FLUSH_ALL = 0x08, /* Flush all DMA queues first */ 99fe5e51b7Smrg /* These *HALT* flags aren't supported yet 100fe5e51b7Smrg -- they will be used to support the 101fe5e51b7Smrg full-screen DGA-like mode. */ 102fe5e51b7Smrg DRM_MGA_HALT_ALL_QUEUES = 0x10, /* Halt all current and future queues */ 103fe5e51b7Smrg DRM_MGA_HALT_CUR_QUEUES = 0x20 /* Halt all current queues */ 104fe5e51b7Smrg} drmMGALockFlags; 105fe5e51b7Smrg 106fe5e51b7Smrgtypedef struct { 107fe5e51b7Smrg int context; 108fe5e51b7Smrg drmMGALockFlags flags; 109fe5e51b7Smrg} drmMGALock; 110fe5e51b7Smrg 111fe5e51b7Smrgtypedef struct { 112fe5e51b7Smrg int idx; 113fe5e51b7Smrg unsigned int dstorg; 114fe5e51b7Smrg unsigned int length; 115fe5e51b7Smrg} drmMGAIload; 116fe5e51b7Smrg 117fe5e51b7Smrgtypedef struct { 118fe5e51b7Smrg unsigned int flags; 119fe5e51b7Smrg unsigned int clear_color; 120fe5e51b7Smrg unsigned int clear_depth; 121fe5e51b7Smrg unsigned int color_mask; 122fe5e51b7Smrg unsigned int depth_mask; 123fe5e51b7Smrg} drmMGAClearRec; 124fe5e51b7Smrg 125fe5e51b7Smrgtypedef struct { 126fe5e51b7Smrg int idx; /* buffer to queue */ 127fe5e51b7Smrg int used; /* bytes in use */ 128fe5e51b7Smrg int discard; /* client finished with buffer? */ 129fe5e51b7Smrg} drmMGAVertex; 130fe5e51b7Smrg 131fe5e51b7Smrgtypedef struct { 132fe5e51b7Smrg unsigned int planemask; 133fe5e51b7Smrg unsigned int srcorg; 134fe5e51b7Smrg unsigned int dstorg; 135fe5e51b7Smrg int src_pitch, dst_pitch; 136fe5e51b7Smrg int delta_sx, delta_sy; 137fe5e51b7Smrg int delta_dx, delta_dy; 138fe5e51b7Smrg int height, ydir; /* flip image vertically */ 139fe5e51b7Smrg int source_pitch, dest_pitch; 140fe5e51b7Smrg} drmMGABlit; 141fe5e51b7Smrg 142fe5e51b7Smrg/* 3.1: An ioctl to get parameters that aren't available to the 3d 143fe5e51b7Smrg * client any other way. 144fe5e51b7Smrg */ 145fe5e51b7Smrg#define MGA_PARAM_IRQ_NR 1 146fe5e51b7Smrg 147fe5e51b7Smrgtypedef struct { 148fe5e51b7Smrg int param; 149fe5e51b7Smrg int *value; 150fe5e51b7Smrg} drmMGAGetParam; 151fe5e51b7Smrg 152fe5e51b7Smrg#endif 153