summaryrefslogtreecommitdiffstats
path: root/drivers/tdfx_vid.h
blob: 152f5359e89980e5a30e36169bcef97c953a3efc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106


#define TDFX_VID_VERSION 1

#define TDFX_VID_MOVE_2_PACKED  0
#define TDFX_VID_MOVE_2_YUV     1
#define TDFX_VID_MOVE_2_3D      2
#define TDFX_VID_MOVE_2_TEXTURE 3

#define TDFX_VID_SRC_COLORKEY 0x1
#define TDFX_VID_DST_COLORKEY 0x2

#define TDFX_VID_ROP_COPY        0xcc     // src
#define TDFX_VID_ROP_INVERT      0x55     // NOT dst
#define TDFX_VID_ROP_XOR         0x66     // src XOR dst
#define TDFX_VID_ROP_OR		 0xee     // src OR dst

#define TDFX_VID_FORMAT_BGR1  (('B'<<24)|('G'<<16)|('R'<<8)|1)
#define TDFX_VID_FORMAT_BGR8  (('B'<<24)|('G'<<16)|('R'<<8)|8)
#define TDFX_VID_FORMAT_BGR15 (('B'<<24)|('G'<<16)|('R'<<8)|15)
#define TDFX_VID_FORMAT_BGR16 (('B'<<24)|('G'<<16)|('R'<<8)|16)
#define TDFX_VID_FORMAT_BGR24 (('B'<<24)|('G'<<16)|('R'<<8)|24)
#define TDFX_VID_FORMAT_BGR32 (('B'<<24)|('G'<<16)|('R'<<8)|32)

#define TDFX_VID_FORMAT_YUY2 (('2'<<24)|('Y'<<16)|('U'<<8)|'Y')
#define TDFX_VID_FORMAT_UYVY (('Y'<<24)|('V'<<16)|('Y'<<8)|'U')

#define TDFX_VID_FORMAT_YV12 0x32315659
#define TDFX_VID_FORMAT_IYUV (('I'<<24)|('Y'<<16)|('U'<<8)|'V')
#define TDFX_VID_FORMAT_I420 (('I'<<24)|('4'<<16)|('2'<<8)|'0')

#define TDFX_VID_YUV_STRIDE        (1024)
#define TDFX_VID_YUV_PLANE_SIZE    (0x0100000)
                                 

typedef struct tdfx_vid_blit_s {
  uint32_t src;
  uint32_t src_stride;
  uint16_t src_x,src_y;
  uint16_t src_w,src_h;
  uint32_t src_format;

  uint32_t  dst;
  uint32_t dst_stride;
  uint16_t dst_x,dst_y;
  uint16_t dst_w,dst_h;
  uint32_t dst_format;

  uint32_t src_colorkey[2];
  uint32_t dst_colorkey[2];

  uint8_t colorkey;
  uint8_t rop[4];
} tdfx_vid_blit_t;

typedef struct tdfx_vid_config_s {
  uint16_t version;
  uint16_t card_type;
  uint32_t ram_size;
  uint16_t screen_width;
  uint16_t screen_height;
  uint16_t screen_stride;
  uint32_t screen_format;
  uint32_t screen_start;
} tdfx_vid_config_t;

typedef struct tdfx_vid_agp_move_s {
  uint16_t move2;
  uint16_t width,height;

  uint32_t src;
  uint32_t src_stride;

  uint32_t dst;
  uint32_t dst_stride;
} tdfx_vid_agp_move_t;

typedef struct tdfx_vid_yuv_s {
  uint32_t base;
  uint16_t stride;
} tdfx_vid_yuv_t;

typedef struct tdfx_vid_overlay_s {
  uint32_t src[2]; // left and right buffer (2 buffer may be NULL)
  uint16_t src_width,src_height;
  uint16_t src_stride;
  uint32_t format;

  uint16_t dst_width,dst_height;
  int16_t dst_x,dst_y;

  uint8_t use_colorkey;
  uint32_t colorkey[2]; // min/max
  uint8_t invert_colorkey;
} tdfx_vid_overlay_t;

#define TDFX_VID_GET_CONFIG _IOR('J', 1, tdfx_vid_config_t)
#define TDFX_VID_AGP_MOVE _IOW('J', 2, tdfx_vid_agp_move_t)
#define TDFX_VID_BLIT _IOW('J', 3, tdfx_vid_blit_t)
#define TDFX_VID_SET_YUV _IOW('J', 4, tdfx_vid_blit_t)
#define TDFX_VID_GET_YUV _IOR('J', 5, tdfx_vid_blit_t)
#define TDFX_VID_BUMP0 _IOW('J', 6, u16)
#define TDFX_VID_SET_OVERLAY _IOW('J', 7, tdfx_vid_overlay_t)
#define TDFX_VID_OVERLAY_ON _IO ('J', 8)
#define TDFX_VID_OVERLAY_OFF _IO ('J', 9)