~ubuntu-branches/ubuntu/karmic/virtualbox-ose/karmic-updates

« back to all changes in this revision

Viewing changes to src/VBox/Additions/x11/x11include/libdrm-1.0.5/via_drm.h

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2009-09-14 18:25:07 UTC
  • mfrom: (0.4.1 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090914182507-c98g07mq16hjmn6d
Tags: 3.0.6-dfsg-1ubuntu1
* Merge from debian unstable (LP: #429697), remaining changes:
  - Enable DKMS support on virtualbox host and guest modules (LP: #267097)
    - Drop virtualbox-ose{-guest,}-modules-* package templates
    - Recommend *-source instead of *-modules packages
    - Replace error messages related to missing/mismatched
      kernel module accordingly
  - Autoload kernel module
    - LOAD_VBOXDRV_MODULE=1 in virtualbox-ose.default
  - Disable update action
    - patches/u01-disable-update-action.dpatch
  - Virtualbox should go in Accessories, not in System tools (LP: #288590)
    - virtualbox-ose-qt.files/virtualbox-ose.desktop
  - Add apport hook
    - virtualbox-ose.files/source_virtualbox-ose.py
    - virtualbox-ose.install
  - Add launchpad integration
    - control
    - lpi-bug.xpm
    - patches/u02-lp-integration.dpatch
  - virtualbox, virtualbox-* (names of the upstream proprietary packages)
    conflict with virtualbox-ose (LP: #379878)
* Make debug package depend on normal or guest utils package
* Drop patches/22-pulseaudio-stubs.dpatch (applied upstream)
* Rename Ubuntu specific patches to uXX-*.dpatch
* Fix lintian warnings in maintainer scripts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
3
 
 * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
4
 
 *
5
 
 * Permission is hereby granted, free of charge, to any person obtaining a
6
 
 * copy of this software and associated documentation files (the "Software"),
7
 
 * to deal in the Software without restriction, including without limitation
8
 
 * the rights to use, copy, modify, merge, publish, distribute, sub license,
9
 
 * and/or sell copies of the Software, and to permit persons to whom the
10
 
 * Software is furnished to do so, subject to the following conditions:
11
 
 *
12
 
 * The above copyright notice and this permission notice (including the
13
 
 * next paragraph) shall be included in all copies or substantial portions
14
 
 * of the Software.
15
 
 *
16
 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
 
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
19
 
 * VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
 
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
 
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
 
 * DEALINGS IN THE SOFTWARE.
23
 
 */
24
 
#ifndef _VIA_DRM_H_
25
 
#define _VIA_DRM_H_
26
 
 
27
 
/* WARNING: These defines must be the same as what the Xserver uses.
28
 
 * if you change them, you must change the defines in the Xserver.
29
 
 */
30
 
 
31
 
#ifndef _VIA_DEFINES_
32
 
#define _VIA_DEFINES_
33
 
 
34
 
#if !defined(__KERNEL__) && !defined(_KERNEL)
35
 
#include "via_drmclient.h"
36
 
#endif
37
 
 
38
 
#define VIA_NR_SAREA_CLIPRECTS          8
39
 
#define VIA_NR_XVMC_PORTS               10
40
 
#define VIA_NR_XVMC_LOCKS               5
41
 
#define VIA_MAX_CACHELINE_SIZE          64
42
 
#define XVMCLOCKPTR(saPriv,lockNo)                                      \
43
 
        ((volatile drm_hw_lock_t *)(((((unsigned long) (saPriv)->XvMCLockArea) + \
44
 
                                      (VIA_MAX_CACHELINE_SIZE - 1)) &   \
45
 
                                     ~(VIA_MAX_CACHELINE_SIZE - 1)) +   \
46
 
                                    VIA_MAX_CACHELINE_SIZE*(lockNo)))
47
 
 
48
 
/* Each region is a minimum of 64k, and there are at most 64 of them.
49
 
 */
50
 
#define VIA_NR_TEX_REGIONS 64
51
 
#define VIA_LOG_MIN_TEX_REGION_SIZE 16
52
 
#endif
53
 
 
54
 
#define VIA_UPLOAD_TEX0IMAGE  0x1       /* handled clientside */
55
 
#define VIA_UPLOAD_TEX1IMAGE  0x2       /* handled clientside */
56
 
#define VIA_UPLOAD_CTX        0x4
57
 
#define VIA_UPLOAD_BUFFERS    0x8
58
 
#define VIA_UPLOAD_TEX0       0x10
59
 
#define VIA_UPLOAD_TEX1       0x20
60
 
#define VIA_UPLOAD_CLIPRECTS  0x40
61
 
#define VIA_UPLOAD_ALL        0xff
62
 
 
63
 
/* VIA specific ioctls */
64
 
#define DRM_VIA_ALLOCMEM        0x00
65
 
#define DRM_VIA_FREEMEM         0x01
66
 
#define DRM_VIA_AGP_INIT        0x02
67
 
#define DRM_VIA_FB_INIT         0x03
68
 
#define DRM_VIA_MAP_INIT        0x04
69
 
#define DRM_VIA_DEC_FUTEX       0x05
70
 
#define NOT_USED
71
 
#define DRM_VIA_DMA_INIT        0x07
72
 
#define DRM_VIA_CMDBUFFER       0x08
73
 
#define DRM_VIA_FLUSH           0x09
74
 
#define DRM_VIA_PCICMD          0x0a
75
 
#define DRM_VIA_CMDBUF_SIZE     0x0b
76
 
#define NOT_USED
77
 
#define DRM_VIA_WAIT_IRQ        0x0d
78
 
#define DRM_VIA_DMA_BLIT        0x0e
79
 
#define DRM_VIA_BLIT_SYNC       0x0f
80
 
 
81
 
#define DRM_IOCTL_VIA_ALLOCMEM    DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t)
82
 
#define DRM_IOCTL_VIA_FREEMEM     DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t)
83
 
#define DRM_IOCTL_VIA_AGP_INIT    DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t)
84
 
#define DRM_IOCTL_VIA_FB_INIT     DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t)
85
 
#define DRM_IOCTL_VIA_MAP_INIT    DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t)
86
 
#define DRM_IOCTL_VIA_DEC_FUTEX   DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
87
 
#define DRM_IOCTL_VIA_DMA_INIT    DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t)
88
 
#define DRM_IOCTL_VIA_CMDBUFFER   DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
89
 
#define DRM_IOCTL_VIA_FLUSH       DRM_IO(  DRM_COMMAND_BASE + DRM_VIA_FLUSH)
90
 
#define DRM_IOCTL_VIA_PCICMD      DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t)
91
 
#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, \
92
 
                                            drm_via_cmdbuf_size_t)
93
 
#define DRM_IOCTL_VIA_WAIT_IRQ    DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t)
94
 
#define DRM_IOCTL_VIA_DMA_BLIT    DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t)
95
 
#define DRM_IOCTL_VIA_BLIT_SYNC   DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t)
96
 
 
97
 
/* Indices into buf.Setup where various bits of state are mirrored per
98
 
 * context and per buffer.  These can be fired at the card as a unit,
99
 
 * or in a piecewise fashion as required.
100
 
 */
101
 
 
102
 
#define VIA_TEX_SETUP_SIZE 8
103
 
 
104
 
/* Flags for clear ioctl
105
 
 */
106
 
#define VIA_FRONT   0x1
107
 
#define VIA_BACK    0x2
108
 
#define VIA_DEPTH   0x4
109
 
#define VIA_STENCIL 0x8
110
 
 
111
 
#define VIA_MEM_VIDEO   0       /* matches drm constant */
112
 
#define VIA_MEM_AGP     1       /* matches drm constant */
113
 
#define VIA_MEM_SYSTEM  2               
114
 
#define VIA_MEM_MIXED   3
115
 
#define VIA_MEM_UNKNOWN 4
116
 
 
117
 
typedef struct {
118
 
        uint32_t offset;
119
 
        uint32_t size;
120
 
} drm_via_agp_t;
121
 
 
122
 
typedef struct {
123
 
        uint32_t offset;
124
 
        uint32_t size;
125
 
} drm_via_fb_t;
126
 
 
127
 
typedef struct {
128
 
        uint32_t context;
129
 
        uint32_t type;
130
 
        uint32_t size;
131
 
        unsigned long index;
132
 
        unsigned long offset;
133
 
} drm_via_mem_t;
134
 
 
135
 
typedef struct _drm_via_init {
136
 
        enum {
137
 
                VIA_INIT_MAP = 0x01,
138
 
                VIA_CLEANUP_MAP = 0x02
139
 
        } func;
140
 
 
141
 
        unsigned long sarea_priv_offset;
142
 
        unsigned long fb_offset;
143
 
        unsigned long mmio_offset;
144
 
        unsigned long agpAddr;
145
 
} drm_via_init_t;
146
 
 
147
 
typedef struct _drm_via_futex {
148
 
        enum {
149
 
                VIA_FUTEX_WAIT = 0x00,
150
 
                VIA_FUTEX_WAKE = 0X01
151
 
        } func;
152
 
        uint32_t ms;
153
 
        uint32_t lock;
154
 
        uint32_t val;
155
 
} drm_via_futex_t;
156
 
 
157
 
typedef struct _drm_via_dma_init {
158
 
        enum {
159
 
                VIA_INIT_DMA = 0x01,
160
 
                VIA_CLEANUP_DMA = 0x02,
161
 
                VIA_DMA_INITIALIZED = 0x03
162
 
        } func;
163
 
 
164
 
        unsigned long offset;
165
 
        unsigned long size;
166
 
        unsigned long reg_pause_addr;
167
 
} drm_via_dma_init_t;
168
 
 
169
 
typedef struct _drm_via_cmdbuffer {
170
 
        char __user *buf;
171
 
        unsigned long size;
172
 
} drm_via_cmdbuffer_t;
173
 
 
174
 
/* Warning: If you change the SAREA structure you must change the Xserver
175
 
 * structure as well */
176
 
 
177
 
typedef struct _drm_via_tex_region {
178
 
        unsigned char next, prev;       /* indices to form a circular LRU  */
179
 
        unsigned char inUse;    /* owned by a client, or free? */
180
 
        int age;                /* tracked by clients to update local LRU's */
181
 
} drm_via_tex_region_t;
182
 
 
183
 
typedef struct _drm_via_sarea {
184
 
        unsigned int dirty;
185
 
        unsigned int nbox;
186
 
        drm_clip_rect_t boxes[VIA_NR_SAREA_CLIPRECTS];
187
 
        drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1];
188
 
        int texAge;             /* last time texture was uploaded */
189
 
        int ctxOwner;           /* last context to upload state */
190
 
        int vertexPrim;
191
 
 
192
 
        /*
193
 
         * Below is for XvMC.
194
 
         * We want the lock integers alone on, and aligned to, a cache line.
195
 
         * Therefore this somewhat strange construct.
196
 
         */
197
 
 
198
 
        char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
199
 
 
200
 
        unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
201
 
        unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
202
 
        unsigned int XvMCCtxNoGrabbed;  /* Last context to hold decoder */      
203
 
 
204
 
        /* Used by the 3d driver only at this point, for pageflipping:
205
 
         */
206
 
 
207
 
        unsigned int pfCurrentOffset;
208
 
} drm_via_sarea_t;
209
 
 
210
 
typedef struct _drm_via_cmdbuf_size {
211
 
        enum {
212
 
                VIA_CMDBUF_SPACE = 0x01,
213
 
                VIA_CMDBUF_LAG = 0x02
214
 
        } func;
215
 
        int wait;
216
 
        uint32_t size;
217
 
} drm_via_cmdbuf_size_t;
218
 
 
219
 
typedef enum {
220
 
        VIA_IRQ_ABSOLUTE = 0x0,
221
 
        VIA_IRQ_RELATIVE = 0x1,
222
 
        VIA_IRQ_SIGNAL = 0x10000000,
223
 
        VIA_IRQ_FORCE_SEQUENCE = 0x20000000
224
 
} via_irq_seq_type_t;
225
 
 
226
 
#define VIA_IRQ_FLAGS_MASK 0xF0000000
227
 
 
228
 
enum drm_via_irqs{drm_via_irq_hqv0 = 0,
229
 
                  drm_via_irq_hqv1,
230
 
                  drm_via_irq_dma0_dd,
231
 
                  drm_via_irq_dma0_td,
232
 
                  drm_via_irq_dma1_dd,
233
 
                  drm_via_irq_dma1_td,
234
 
                  drm_via_irq_num};
235
 
 
236
 
struct drm_via_wait_irq_request{
237
 
        unsigned irq;
238
 
        via_irq_seq_type_t type;
239
 
        uint32_t sequence;
240
 
        uint32_t signal;
241
 
};
242
 
 
243
 
typedef union drm_via_irqwait {
244
 
        struct drm_via_wait_irq_request request;
245
 
        struct drm_wait_vblank_reply reply;
246
 
} drm_via_irqwait_t;
247
 
 
248
 
typedef struct drm_via_blitsync { 
249
 
        uint32_t sync_handle;
250
 
        unsigned engine;
251
 
} drm_via_blitsync_t;
252
 
 
253
 
typedef struct drm_via_dmablit {
254
 
        uint32_t num_lines;          
255
 
        uint32_t line_length;        
256
 
 
257
 
        uint32_t fb_addr;                
258
 
        uint32_t fb_stride;              
259
 
 
260
 
        unsigned char *mem_addr;        
261
 
        uint32_t  mem_stride;        
262
 
       
263
 
        int bounce_buffer;
264
 
        int to_fb;
265
 
 
266
 
        drm_via_blitsync_t sync;   
267
 
} drm_via_dmablit_t;
268
 
 
269
 
 
270
 
#endif                          /* _VIA_DRM_H_ */