annotate drivers/tdfx_vid.h @ 30811:50e0f6942e43

Implement Win32 mutexes. Implement Win32 mutexes; they used to just be mapped on top of events, which is not the same thing at all. The implementation is pretty much the obvious one, similar to the current critical section implementation and the semaphore implementation; a single lock count protected by a pthread mutex, and an event lockers can sleep on to know when the mutex is available. Also make CreateMutexA and ReleaseMutex available even if QuickTime codecs support is not configured.
author sesse
date Sat, 06 Mar 2010 10:13:37 +0000
parents 0f1b5b68af32
children 29dc134ae9b3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26003
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
1 /*
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
2 * Copyright (C) 2003 Alban Bedel
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
3 *
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
4 * This file is part of MPlayer.
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
5 *
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
7 * it under the terms of the GNU General Public License as published by
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
9 * (at your option) any later version.
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
10 *
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
11 * MPlayer is distributed in the hope that it will be useful,
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
14 * GNU General Public License for more details.
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
15 *
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
16 * You should have received a copy of the GNU General Public License along
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
19 */
a506a6ab14e1 Add standard license header and make copyright notices consistent.
diego
parents: 25553
diff changeset
20
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 26003
diff changeset
21 #ifndef MPLAYER_TDFX_VID_H
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 26003
diff changeset
22 #define MPLAYER_TDFX_VID_H
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
23
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
24 #define TDFX_VID_VERSION 1
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
25
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
26 #define TDFX_VID_MOVE_2_PACKED 0
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
27 #define TDFX_VID_MOVE_2_YUV 1
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
28 #define TDFX_VID_MOVE_2_3D 2
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
29 #define TDFX_VID_MOVE_2_TEXTURE 3
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
30
9558
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
31 #define TDFX_VID_SRC_COLORKEY 0x1
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
32 #define TDFX_VID_DST_COLORKEY 0x2
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
33
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
34 #define TDFX_VID_ROP_COPY 0xcc // src
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
35 #define TDFX_VID_ROP_INVERT 0x55 // NOT dst
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
36 #define TDFX_VID_ROP_XOR 0x66 // src XOR dst
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
37 #define TDFX_VID_ROP_OR 0xee // src OR dst
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
38
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
39 #define TDFX_VID_FORMAT_BGR1 (('B'<<24)|('G'<<16)|('R'<<8)|1)
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
40 #define TDFX_VID_FORMAT_BGR8 (('B'<<24)|('G'<<16)|('R'<<8)|8)
9558
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
41 #define TDFX_VID_FORMAT_BGR15 (('B'<<24)|('G'<<16)|('R'<<8)|15)
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
42 #define TDFX_VID_FORMAT_BGR16 (('B'<<24)|('G'<<16)|('R'<<8)|16)
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
43 #define TDFX_VID_FORMAT_BGR24 (('B'<<24)|('G'<<16)|('R'<<8)|24)
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
44 #define TDFX_VID_FORMAT_BGR32 (('B'<<24)|('G'<<16)|('R'<<8)|32)
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
45
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
46 #define TDFX_VID_FORMAT_YUY2 (('2'<<24)|('Y'<<16)|('U'<<8)|'Y')
9558
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
47 #define TDFX_VID_FORMAT_UYVY (('Y'<<24)|('V'<<16)|('Y'<<8)|'U')
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
48
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
49 #define TDFX_VID_FORMAT_YV12 0x32315659
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
50 #define TDFX_VID_FORMAT_IYUV (('I'<<24)|('Y'<<16)|('U'<<8)|'V')
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
51 #define TDFX_VID_FORMAT_I420 (('I'<<24)|('4'<<16)|('2'<<8)|'0')
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
52
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
53 #define TDFX_VID_YUV_STRIDE (1024)
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
54 #define TDFX_VID_YUV_PLANE_SIZE (0x0100000)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26029
diff changeset
55
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
56
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
57 typedef struct tdfx_vid_blit_s {
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
58 uint32_t src;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
59 uint32_t src_stride;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
60 uint16_t src_x,src_y;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
61 uint16_t src_w,src_h;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
62 uint32_t src_format;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
63
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
64 uint32_t dst;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
65 uint32_t dst_stride;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
66 uint16_t dst_x,dst_y;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
67 uint16_t dst_w,dst_h;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
68 uint32_t dst_format;
9558
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
69
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
70 uint32_t src_colorkey[2];
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
71 uint32_t dst_colorkey[2];
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
72
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
73 uint8_t colorkey;
29aa61268e54 Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents: 9545
diff changeset
74 uint8_t rop[4];
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
75 } tdfx_vid_blit_t;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
76
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
77 typedef struct tdfx_vid_config_s {
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
78 uint16_t version;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
79 uint16_t card_type;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
80 uint32_t ram_size;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
81 uint16_t screen_width;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
82 uint16_t screen_height;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
83 uint16_t screen_stride;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
84 uint32_t screen_format;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
85 uint32_t screen_start;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
86 } tdfx_vid_config_t;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
87
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
88 typedef struct tdfx_vid_agp_move_s {
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
89 uint16_t move2;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
90 uint16_t width,height;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
91
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
92 uint32_t src;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
93 uint32_t src_stride;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
94
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
95 uint32_t dst;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
96 uint32_t dst_stride;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
97 } tdfx_vid_agp_move_t;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
98
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
99 typedef struct tdfx_vid_yuv_s {
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
100 uint32_t base;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
101 uint16_t stride;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
102 } tdfx_vid_yuv_t;
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
103
9566
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
104 typedef struct tdfx_vid_overlay_s {
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
105 uint32_t src[2]; // left and right buffer (2 buffer may be NULL)
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
106 uint16_t src_width,src_height;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
107 uint16_t src_stride;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
108 uint32_t format;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
109
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
110 uint16_t dst_width,dst_height;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
111 int16_t dst_x,dst_y;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
112
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
113 uint8_t use_colorkey;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
114 uint32_t colorkey[2]; // min/max
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
115 uint8_t invert_colorkey;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
116 } tdfx_vid_overlay_t;
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
117
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
118 #define TDFX_VID_GET_CONFIG _IOR('J', 1, tdfx_vid_config_t)
9566
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
119 #define TDFX_VID_AGP_MOVE _IOW('J', 2, tdfx_vid_agp_move_t)
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
120 #define TDFX_VID_BLIT _IOW('J', 3, tdfx_vid_blit_t)
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
121 #define TDFX_VID_SET_YUV _IOW('J', 4, tdfx_vid_blit_t)
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
122 #define TDFX_VID_GET_YUV _IOR('J', 5, tdfx_vid_blit_t)
9566
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
123 #define TDFX_VID_BUMP0 _IOW('J', 6, u16)
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
124 #define TDFX_VID_SET_OVERLAY _IOW('J', 7, tdfx_vid_overlay_t)
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
125 #define TDFX_VID_OVERLAY_ON _IO ('J', 8)
015b404023f5 Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents: 9558
diff changeset
126 #define TDFX_VID_OVERLAY_OFF _IO ('J', 9)
9545
d1bbeae9f46a tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff changeset
127
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 26003
diff changeset
128 #endif /* MPLAYER_TDFX_VID_H */