1fc5a983dSmrg/*
2fc5a983dSmrg * Copyright (c) 2003 NVIDIA, Corporation
3fc5a983dSmrg *
4fc5a983dSmrg * Permission is hereby granted, free of charge, to any person obtaining a
5fc5a983dSmrg * copy of this software and associated documentation files (the
6fc5a983dSmrg * "Software"), to deal in the Software without restriction, including
7fc5a983dSmrg * without limitation the rights to use, copy, modify, merge, publish,
8fc5a983dSmrg * distribute, sublicense, and/or sell copies of the Software, and to
9fc5a983dSmrg * permit persons to whom the Software is furnished to do so, subject to
10fc5a983dSmrg * the following conditions:
11fc5a983dSmrg *
12fc5a983dSmrg * The above copyright notice and this permission notice shall be included
13fc5a983dSmrg * in all copies or substantial portions of the Software.
14fc5a983dSmrg *
15fc5a983dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16fc5a983dSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17fc5a983dSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18fc5a983dSmrg * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19fc5a983dSmrg * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20fc5a983dSmrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21fc5a983dSmrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22fc5a983dSmrg */
23fc5a983dSmrg
24fc5a983dSmrg#define SURFACE_FORMAT                                              0x00000300
25fc5a983dSmrg#define SURFACE_FORMAT_DEPTH8                                       0x00000001
26fc5a983dSmrg#define SURFACE_FORMAT_DEPTH15                                      0x00000002
27fc5a983dSmrg#define SURFACE_FORMAT_DEPTH16                                      0x00000004
28fc5a983dSmrg#define SURFACE_FORMAT_DEPTH24                                      0x00000006
29fc5a983dSmrg#define SURFACE_PITCH                                               0x00000304
30fc5a983dSmrg#define SURFACE_PITCH_SRC                                           15:0
31fc5a983dSmrg#define SURFACE_PITCH_DST                                           31:16
32fc5a983dSmrg#define SURFACE_OFFSET_SRC                                          0x00000308
33fc5a983dSmrg#define SURFACE_OFFSET_DST                                          0x0000030C
34fc5a983dSmrg
35fc5a983dSmrg#define ROP_SET                                                     0x00002300
36fc5a983dSmrg
37fc5a983dSmrg#define PATTERN_FORMAT                                              0x00004300
38fc5a983dSmrg#define PATTERN_FORMAT_DEPTH8                                       0x00000003
39fc5a983dSmrg#define PATTERN_FORMAT_DEPTH16                                      0x00000001
40fc5a983dSmrg#define PATTERN_FORMAT_DEPTH24                                      0x00000003
41fc5a983dSmrg#define PATTERN_COLOR_0                                             0x00004310
42fc5a983dSmrg#define PATTERN_COLOR_1                                             0x00004314
43fc5a983dSmrg#define PATTERN_PATTERN_0                                           0x00004318
44fc5a983dSmrg#define PATTERN_PATTERN_1                                           0x0000431C
45fc5a983dSmrg
46fc5a983dSmrg#define CLIP_POINT                                                  0x00006300
47fc5a983dSmrg#define CLIP_POINT_X                                                15:0
48fc5a983dSmrg#define CLIP_POINT_Y                                                31:16
49fc5a983dSmrg#define CLIP_SIZE                                                   0x00006304
50fc5a983dSmrg#define CLIP_SIZE_WIDTH                                             15:0
51fc5a983dSmrg#define CLIP_SIZE_HEIGHT                                            31:16
52fc5a983dSmrg
53fc5a983dSmrg#define LINE_FORMAT                                                 0x00008300
54fc5a983dSmrg#define LINE_FORMAT_DEPTH8                                          0x00000003
55fc5a983dSmrg#define LINE_FORMAT_DEPTH16                                         0x00000001
56fc5a983dSmrg#define LINE_FORMAT_DEPTH24                                         0x00000003
57fc5a983dSmrg#define LINE_COLOR                                                  0x00008304
58fc5a983dSmrg#define LINE_MAX_LINES                                              16
59fc5a983dSmrg#define LINE_LINES(i)                                               0x00008400\
60fc5a983dSmrg                                                                    +(i)*8
61fc5a983dSmrg#define LINE_LINES_POINT0_X                                         15:0
62fc5a983dSmrg#define LINE_LINES_POINT0_Y                                         31:16
63fc5a983dSmrg#define LINE_LINES_POINT1_X                                         47:32
64fc5a983dSmrg#define LINE_LINES_POINT1_Y                                         63:48
65fc5a983dSmrg
66fc5a983dSmrg#define BLIT_POINT_SRC                                              0x0000A300
67fc5a983dSmrg#define BLIT_POINT_SRC_X                                            15:0
68fc5a983dSmrg#define BLIT_POINT_SRC_Y                                            31:16
69fc5a983dSmrg#define BLIT_POINT_DST                                              0x0000A304
70fc5a983dSmrg#define BLIT_POINT_DST_X                                            15:0
71fc5a983dSmrg#define BLIT_POINT_DST_Y                                            31:16
72fc5a983dSmrg#define BLIT_SIZE                                                   0x0000A308
73fc5a983dSmrg#define BLIT_SIZE_WIDTH                                             15:0
74fc5a983dSmrg#define BLIT_SIZE_HEIGHT                                            31:16
75fc5a983dSmrg
76fc5a983dSmrg#define RECT_FORMAT                                                 0x0000C300
77fc5a983dSmrg#define RECT_FORMAT_DEPTH8                                          0x00000003
78fc5a983dSmrg#define RECT_FORMAT_DEPTH16                                         0x00000001
79fc5a983dSmrg#define RECT_FORMAT_DEPTH24                                         0x00000003
80fc5a983dSmrg#define RECT_SOLID_COLOR                                            0x0000C3FC
81fc5a983dSmrg#define RECT_SOLID_RECTS_MAX_RECTS                                  32
82fc5a983dSmrg#define RECT_SOLID_RECTS(i)                                         0x0000C400\
83fc5a983dSmrg                                                                    +(i)*8
84fc5a983dSmrg#define RECT_SOLID_RECTS_Y                                          15:0
85fc5a983dSmrg#define RECT_SOLID_RECTS_X                                          31:16
86fc5a983dSmrg#define RECT_SOLID_RECTS_HEIGHT                                     47:32
87fc5a983dSmrg#define RECT_SOLID_RECTS_WIDTH                                      63:48
88fc5a983dSmrg
89fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_CLIP                                  0x0000C7EC
90fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_CLIP_POINT0_X                         15:0
91fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_CLIP_POINT0_Y                         31:16
92fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_CLIP_POINT1_X                         47:32
93fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_CLIP_POINT1_Y                         63:48
94fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_COLOR                                 0x0000C7F4
95fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_SIZE                                  0x0000C7F8
96fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_SIZE_WIDTH                            15:0
97fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_SIZE_HEIGHT                           31:16
98fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_POINT                                 0x0000C7FC
99fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_POINT_X                               15:0
100fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_POINT_Y                               31:16
101fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_DATA_MAX_DWORDS                       128
102fc5a983dSmrg#define RECT_EXPAND_ONE_COLOR_DATA(i)                               0x0000C800\
103fc5a983dSmrg                                                                    +(i)*4
104fc5a983dSmrg
105fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_CLIP                                  0x0000CBE4
106fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_CLIP_POINT0_X                         15:0
107fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_CLIP_POINT0_Y                         31:16
108fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_CLIP_POINT1_X                         47:32
109fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_CLIP_POINT1_Y                         63:48
110fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_COLOR_0                               0x0000CBEC
111fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_COLOR_1                               0x0000CBF0
112fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_SIZE_IN                               0x0000CBF4
113fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_SIZE_IN_WIDTH                         15:0
114fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_SIZE_IN_HEIGHT                        31:16
115fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_SIZE_OUT                              0x0000CBF8
116fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_SIZE_OUT_WIDTH                        15:0
117fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_SIZE_OUT_HEIGHT                       31:16
118fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_POINT                                 0x0000CBFC
119fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_POINT_X                               15:0
120fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_POINT_Y                               31:16
121fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_DATA_MAX_DWORDS                       128
122fc5a983dSmrg#define RECT_EXPAND_TWO_COLOR_DATA(i)                               0x0000CC00\
123fc5a983dSmrg                                                                    +(i)*4
124fc5a983dSmrg
125fc5a983dSmrg#define STRETCH_BLIT_FORMAT                                         0x0000E300
126fc5a983dSmrg#define STRETCH_BLIT_FORMAT_DEPTH8                                  0x00000004
127fc5a983dSmrg#define STRETCH_BLIT_FORMAT_DEPTH16                                 0x00000007
128fc5a983dSmrg#define STRETCH_BLIT_FORMAT_DEPTH24                                 0x00000004
129fc5a983dSmrg#define STRETCH_BLIT_FORMAT_A8R8G8B8                                0x00000003
130fc5a983dSmrg#define STRETCH_BLIT_FORMAT_X8R8G8B8                                0x00000004
131fc5a983dSmrg#define STRETCH_BLIT_FORMAT_YUYV                                    0x00000005
132fc5a983dSmrg#define STRETCH_BLIT_FORMAT_UYVY                                    0x00000006
133fc5a983dSmrg/* STRETCH_BLIT_OPERATION is only supported on TNT2 and newer */
134fc5a983dSmrg#define STRETCH_BLIT_OPERATION                                      0x0000E304
135fc5a983dSmrg#define STRETCH_BLIT_OPERATION_ROP                                  0x00000001
136fc5a983dSmrg#define STRETCH_BLIT_OPERATION_COPY                                 0x00000003
137fc5a983dSmrg#define STRETCH_BLIT_OPERATION_BLEND                                0x00000002
138fc5a983dSmrg#define STRETCH_BLIT_CLIP_POINT                                     0x0000E308
139fc5a983dSmrg#define STRETCH_BLIT_CLIP_POINT_X                                   15:0
140fc5a983dSmrg#define STRETCH_BLIT_CLIP_POINT_Y                                   31:16
141fc5a983dSmrg#define STRETCH_BLIT_CLIP_POINT                                     0x0000E308
142fc5a983dSmrg#define STRETCH_BLIT_CLIP_SIZE                                      0x0000E30C
143fc5a983dSmrg#define STRETCH_BLIT_CLIP_SIZE_WIDTH                                15:0
144fc5a983dSmrg#define STRETCH_BLIT_CLIP_SIZE_HEIGHT                               31:16
145fc5a983dSmrg#define STRETCH_BLIT_DST_POINT                                      0x0000E310
146fc5a983dSmrg#define STRETCH_BLIT_DST_POINT_X                                    15:0
147fc5a983dSmrg#define STRETCH_BLIT_DST_POINT_Y                                    31:16
148fc5a983dSmrg#define STRETCH_BLIT_DST_SIZE                                       0x0000E314
149fc5a983dSmrg#define STRETCH_BLIT_DST_SIZE_WIDTH                                 15:0
150fc5a983dSmrg#define STRETCH_BLIT_DST_SIZE_HEIGHT                                31:16
151fc5a983dSmrg#define STRETCH_BLIT_DU_DX                                          0x0000E318
152fc5a983dSmrg#define STRETCH_BLIT_DV_DY                                          0x0000E31C
153fc5a983dSmrg#define STRETCH_BLIT_SRC_SIZE                                       0x0000E400
154fc5a983dSmrg#define STRETCH_BLIT_SRC_SIZE_WIDTH                                 15:0
155fc5a983dSmrg#define STRETCH_BLIT_SRC_SIZE_HEIGHT                                31:16
156fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT                                     0x0000E404
157fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_PITCH                               15:0
158fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_ORIGIN                              23:16
159fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_ORIGIN_CENTER                       0x00000001
160fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_ORIGIN_CORNER                       0x00000002
161fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_FILTER                              31:24
162fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_FILTER_POINT_SAMPLE                 0x00000000
163fc5a983dSmrg#define STRETCH_BLIT_SRC_FORMAT_FILTER_BILINEAR                     0x00000001
164fc5a983dSmrg#define STRETCH_BLIT_SRC_OFFSET                                     0x0000E408
165fc5a983dSmrg#define STRETCH_BLIT_SRC_POINT                                      0x0000E40C
166fc5a983dSmrg#define STRETCH_BLIT_SRC_POINT_U                                    15:0
167fc5a983dSmrg#define STRETCH_BLIT_SRC_POINT_V                                    31:16
168