1 /*---------------------------------------------------------------------------*
2   Project:  Dolphin GX library
3   File:     GXFrameBuffer.h
4 
5   Copyright 1998- 2002 Nintendo. All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Log: GXFrameBuffer.h,v $
14   Revision 1.4  2006/08/10 13:38:01  urata
15   Removed all rendermodes of progressive 50Hz.
16 
17   Revision 1.3  2006/05/18 09:40:10  urata
18   Added the rendermode of progressive for PAL and MPAL.
19 
20   Revision 1.2  2006/02/04 11:56:46  hashida
21   (none)
22 
23   Revision 1.1.1.1  2005/12/29 06:53:28  hiratsu
24   Initial import.
25 
26   Revision 1.1.1.1  2005/05/12 02:41:07  yasuh-to
27   Ported from dolphin source tree.
28 
29 
30     19    2002/02/12 14:29 Hirose
31     Added GXNtsc480ProgSoft mode.
32 
33     18    2002/07/24 9:06 Hirose
34     Resolved version conflicts.
35 
36     18    2002/04/09 15:15 Hirose
37     const type specifier support. (worked by hiratsu@IRD)
38 
39     17    2001/11/15 9:24p Hirose
40     Added GXGetYScaleFactor and GXGetNumXfbLines.
41 
42     16    2001/11/02 5:33p Hashida
43     Renamed eu60 -> eurgb60
44 
45     15    2001/11/01 3:37p Hashida
46     Added EURGB60 mode support.
47 
48     14    2001/10/18 11:54a Hashida
49     No change.
50 
51     13    2001/10/14 8:05p Hashida
52     Added RenderModeObj for EU60 mode.
53 
54     12    2001/09/21 3:44p Hashida
55     Fixed wrong settings for Y origin in the double strike modes.
56 
57     11    2001/07/26 6:04p Carl
58     Fixed extern for GXPal524IntAa.
59 
60     10    2001/04/12 3:49p Carl
61     Added stuff for NTSC progressive modes.
62 
63     9     2001/01/11 4:31p Hashida
64     Added a comment to show developers what the actual settings for each
65     render mode is.
66 
67     8     2000/08/10 2:39p Carl
68     Fixed GX_MAX_Z16 to equal GX_MAX_Z24.
69     Added a comment to deprecate its usage.
70 
71     7     2000/06/06 1:29p Carl
72     Removed obsolete API.
73 
74     6     2000/04/26 4:09p Alligator
75     mod GXSetDispCopyFrame2Field to take GXCopyMode as param
76 
77     5     2000/04/08 2:47p Hirose
78     Updated GXSetCopyFilter.
79 
80     4     2000/03/23 4:23p Carl
81     Added GXAdjustForOverscan prototype.
82 
83     3     2000/03/13 6:18p Danm
84     Fixed AA sampling locations to use x,y pairs.
85 
86     2     2000/02/12 5:16p Alligator
87     Integrate ArtX source tree changes
88 
89     10    1999/10/13 5:19p Alligator
90     changed CopySrc functions to use xorig, yorig, wd, ht
91 
92     9     1999/09/30 10:40p Yasu
93     Renamed some GX functions and enums
94 
95     8     1999/09/24 4:23p Yasu
96     Add GX_MAX_Z24/16 macro
97 
98     7     1999/09/22 6:14p Yasu
99     Changed the parameter of GXSetDispCopySrc and GXSetTexCopySrc().
100 
101     6     1999/09/21 2:33p Alligator
102     add aa flag, if aa set 16b pix format
103 
104     5     1999/09/16 3:42p Alligator
105     update render mode api
106 
107     4     1999/09/09 3:04p Alligator
108     move GXSetRenderMode to GX lib from emu
109 
110     3     1999/09/02 3:18p Ryan
111     Made Frame Buffer Api changes
112 
113     2     1999/07/28 4:07p Alligator
114     update header files and emulator for hw changes
115 
116     1     1999/07/14 4:20p Alligator
117     Split gx.h into individual header files for each major section of API
118   $NoKeywords: $
119  *---------------------------------------------------------------------------*/
120 
121 #ifndef __GXFRAMEBUFFER_H__
122 #define __GXFRAMEBUFFER_H__
123 
124 #ifdef __cplusplus
125 extern "C" {
126 #endif
127 
128 /*---------------------------------------------------------------------------*/
129 #include <revolution/types.h>
130 #include <revolution/gx/GXEnum.h>
131 #include <revolution/gx/GXStruct.h>
132 
133 /*---------------------------------------------------------------------------*/
134 /*  Render Modes                                                             */
135 /*    (see the bottom of this file for actual settings used for each         */
136 /*     render mode)                                                          */
137 /*---------------------------------------------------------------------------*/
138 extern GXRenderModeObj GXNtsc240Ds;
139 extern GXRenderModeObj GXNtsc240DsAa;
140 extern GXRenderModeObj GXNtsc240Int;
141 extern GXRenderModeObj GXNtsc240IntAa;
142 extern GXRenderModeObj GXNtsc480IntDf;
143 extern GXRenderModeObj GXNtsc480Int;
144 extern GXRenderModeObj GXNtsc480IntAa;
145 extern GXRenderModeObj GXNtsc480Prog;
146 extern GXRenderModeObj GXNtsc480ProgSoft;
147 extern GXRenderModeObj GXNtsc480ProgAa;
148 extern GXRenderModeObj GXMpal240Ds;
149 extern GXRenderModeObj GXMpal240DsAa;
150 extern GXRenderModeObj GXMpal240Int;
151 extern GXRenderModeObj GXMpal240IntAa;
152 extern GXRenderModeObj GXMpal480IntDf;
153 extern GXRenderModeObj GXMpal480Int;
154 extern GXRenderModeObj GXMpal480IntAa;
155 extern GXRenderModeObj GXMpal480Prog;
156 extern GXRenderModeObj GXMpal480ProgSoft;
157 extern GXRenderModeObj GXMpal480ProgAa;
158 extern GXRenderModeObj GXPal264Ds;
159 extern GXRenderModeObj GXPal264DsAa;
160 extern GXRenderModeObj GXPal264Int;
161 extern GXRenderModeObj GXPal264IntAa;
162 extern GXRenderModeObj GXPal528IntDf;
163 extern GXRenderModeObj GXPal528Int;
164 extern GXRenderModeObj GXPal524IntAa; // Reduced due to overlap requirement!
165 extern GXRenderModeObj GXEurgb60Hz240Ds;
166 extern GXRenderModeObj GXEurgb60Hz240DsAa;
167 extern GXRenderModeObj GXEurgb60Hz240Int;
168 extern GXRenderModeObj GXEurgb60Hz240IntAa;
169 extern GXRenderModeObj GXEurgb60Hz480IntDf;
170 extern GXRenderModeObj GXEurgb60Hz480Int;
171 extern GXRenderModeObj GXEurgb60Hz480IntAa;
172 extern GXRenderModeObj GXEurgb60Hz480Prog;
173 extern GXRenderModeObj GXEurgb60Hz480ProgSoft;
174 extern GXRenderModeObj GXEurgb60Hz480ProgAa;
175 
176 /*---------------------------------------------------------------------------*/
177 void GXAdjustForOverscan ( const GXRenderModeObj *rmin, GXRenderModeObj *rmout,
178                            u16 hor, u16 ver );
179 void GXSetDispCopySrc ( u16 left, u16 top, u16 wd, u16 ht );
180 void GXSetTexCopySrc ( u16 left, u16 top, u16 wd, u16 ht );
181 void GXSetDispCopyDst ( u16 wd, u16 ht );
182 void GXSetTexCopyDst ( u16 wd, u16 ht, GXTexFmt fmt, GXBool mipmap );
183 
184 void GXSetDispCopyFrame2Field( GXCopyMode mode );
185 void GXSetCopyClamp( GXFBClamp clamp );
186 u32  GXSetDispCopyYScale( f32 vscale );
187 void GXSetCopyClear( GXColor clear_clr, u32 clear_z);
188 void GXSetCopyFilter( GXBool aa, const u8 sample_pattern[12][2], GXBool vf, const u8 vfilter[7] );
189 void GXSetDispCopyGamma( GXGamma gamma );
190 
191 void GXCopyDisp( void *dest, GXBool clear );
192 void GXCopyTex ( void *dest, GXBool clear );
193 
194 f32  GXGetYScaleFactor( u16 efbHeight, u16 xfbHeight );
195 u16  GXGetNumXfbLines( u16 efbHeight, f32 yScale );
196 
197 void GXClearBoundingBox( void );
198 void GXReadBoundingBox ( u16 *left, u16 *top, u16 *right, u16 *bottom );
199 
200 /*---------------------------------------------------------------------------*/
201 
202 // The clear Z value is always in 24-bit format, regardless of pixel fmt.
203 // Thus the GX_MAX_Z16 is not really necessary.  You should not use it.
204 // It is included here only for backwards compatibility.
205 
206 #define GX_MAX_Z24  0x00ffffff
207 
208 #define GX_MAX_Z16  0x00ffffff
209 
210 /*---------------------------------------------------------------------------*/
211 
212 // Actual settings used for each GXRenderModeObj for developers' reference
213 //
214 // The following is intentionally ifdef'ed out to show each GXRenderModeObj
215 // settings to developers.
216 //
217 
218 #if 0
219 
220 GXRenderModeObj GXNtsc240Ds =
221 {
222     VI_TVMODE_NTSC_DS,      // viDisplayMode
223     640,             // fbWidth
224     240,             // efbHeight
225     240,             // xfbHeight
226     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
227     (VI_MAX_HEIGHT_NTSC/2 - 480/2)/2,       // viYOrigin
228     640,             // viWidth
229     480,             // viHeight
230     VI_XFBMODE_SF,   // xFBmode
231     GX_FALSE,        // field_rendering
232     GX_FALSE,        // aa
233 
234      // sample points arranged in increasing Y order
235      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
236      6,  6,  6,  6,  6,  6,  // pix 1
237      6,  6,  6,  6,  6,  6,  // pix 2
238      6,  6,  6,  6,  6,  6,  // pix 3
239 
240      // vertical filter[7], 1/64 units, 6 bits each
241       0,         // line n-1
242       0,         // line n-1
243      21,         // line n
244      22,         // line n
245      21,         // line n
246       0,         // line n+1
247       0          // line n+1
248 };
249 GXRenderModeObj GXNtsc240DsAa =
250 {
251     VI_TVMODE_NTSC_DS,      // viDisplayMode
252     640,             // fbWidth
253     240,             // efbHeight
254     240,             // xfbHeight
255     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
256     (VI_MAX_HEIGHT_NTSC/2 - 480/2)/2,       // viYOrigin
257     640,             // viWidth
258     480,             // viHeight
259     VI_XFBMODE_SF,   // xFBmode
260     GX_FALSE,        // field_rendering
261     GX_TRUE,         // aa
262 
263     // sample points arranged in increasing Y order
264      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
265      3,  2,  9,  6,  3, 10,  // pix 1
266      9,  2,  3,  6,  9, 10,  // pix 2
267      9,  2,  3,  6,  9, 10,  // pix 3
268 
269     // vertical filter[7], 1/64 units, 6 bits each
270      0,         // line n-1
271      0,         // line n-1
272      21,        // line n
273      22,        // line n
274      21,        // line n
275      0,         // line n+1
276      0          // line n+1
277 };
278 GXRenderModeObj GXNtsc240Int =
279 {
280     VI_TVMODE_NTSC_INT,     // viDisplayMode
281     640,             // fbWidth
282     240,             // efbHeight
283     240,             // xfbHeight
284     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
285     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
286     640,             // viWidth
287     480,             // viHeight
288     VI_XFBMODE_SF,   // xFBmode
289     GX_TRUE,         // field_rendering
290     GX_FALSE,        // aa
291 
292     // sample points arranged in increasing Y order
293      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
294      6,  6,  6,  6,  6,  6,  // pix 1
295      6,  6,  6,  6,  6,  6,  // pix 2
296      6,  6,  6,  6,  6,  6,  // pix 3
297 
298     // vertical filter[7], 1/64 units, 6 bits each
299      0,         // line n-1
300      0,         // line n-1
301     21,         // line n
302     22,         // line n
303     21,         // line n
304      0,         // line n+1
305      0          // line n+1
306 };
307 GXRenderModeObj GXNtsc240IntAa =
308 {
309     VI_TVMODE_NTSC_INT,     // viDisplayMode
310     640,             // fbWidth
311     240,             // efbHeight
312     240,             // xfbHeight
313     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
314     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
315     640,             // viWidth
316     480,             // viHeight
317     VI_XFBMODE_SF,   // xFBmode
318     GX_TRUE,         // field_rendering
319     GX_TRUE,         // aa
320 
321     // sample points arranged in increasing Y order
322      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
323      3,  2,  9,  6,  3, 10,  // pix 1
324      9,  2,  3,  6,  9, 10,  // pix 2
325      9,  2,  3,  6,  9, 10,  // pix 3
326 
327     // vertical filter[7], 1/64 units, 6 bits each
328      0,         // line n-1
329      0,         // line n-1
330      21,        // line n
331      22,        // line n
332      21,        // line n
333      0,         // line n+1
334      0          // line n+1
335 };
336 GXRenderModeObj GXNtsc480IntDf =
337 {
338     VI_TVMODE_NTSC_INT,     // viDisplayMode
339     640,             // fbWidth
340     480,             // efbHeight
341     480,             // xfbHeight
342     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
343     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
344     640,             // viWidth
345     480,             // viHeight
346     VI_XFBMODE_DF,   // xFBmode
347     GX_FALSE,        // field_rendering
348     GX_FALSE,        // aa
349 
350     // sample points arranged in increasing Y order
351      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
352      6,  6,  6,  6,  6,  6,  // pix 1
353      6,  6,  6,  6,  6,  6,  // pix 2
354      6,  6,  6,  6,  6,  6,  // pix 3
355 
356     // vertical filter[7], 1/64 units, 6 bits each
357      8,         // line n-1
358      8,         // line n-1
359     10,         // line n
360     12,         // line n
361     10,         // line n
362      8,         // line n+1
363      8          // line n+1
364 };
365 GXRenderModeObj GXNtsc480Int =
366 {
367     VI_TVMODE_NTSC_INT,     // viDisplayMode
368     640,             // fbWidth
369     480,             // efbHeight
370     480,             // xfbHeight
371     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
372     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
373     640,             // viWidth
374     480,             // viHeight
375     VI_XFBMODE_DF,   // xFBmode
376     GX_FALSE,        // field_rendering
377     GX_FALSE,        // aa
378 
379     // sample points arranged in increasing Y order
380      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
381      6,  6,  6,  6,  6,  6,  // pix 1
382      6,  6,  6,  6,  6,  6,  // pix 2
383      6,  6,  6,  6,  6,  6,  // pix 3
384 
385     // vertical filter[7], 1/64 units, 6 bits each
386      0,         // line n-1
387      0,         // line n-1
388     21,         // line n
389     22,         // line n
390     21,         // line n
391      0,         // line n+1
392      0          // line n+1
393 };
394 GXRenderModeObj GXNtsc480IntAa =
395 {
396     VI_TVMODE_NTSC_INT,     // viDisplayMode
397     640,             // fbWidth
398     242,             // efbHeight
399     480,             // xfbHeight
400     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
401     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
402     640,             // viWidth
403     480,             // viHeight
404     VI_XFBMODE_DF,   // xFBmode
405     GX_FALSE,        // field_rendering
406     GX_TRUE,         // aa
407 
408     // sample points arranged in increasing Y order
409      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
410      3,  2,  9,  6,  3, 10,  // pix 1
411      9,  2,  3,  6,  9, 10,  // pix 2
412      9,  2,  3,  6,  9, 10,  // pix 3
413 
414     // vertical filter[7], 1/64 units, 6 bits each
415      4,         // line n-1
416      8,         // line n-1
417     12,         // line n
418     16,         // line n
419     12,         // line n
420      8,         // line n+1
421      4          // line n+1
422 };
423 GXRenderModeObj GXNtsc480Prog =
424 {
425     VI_TVMODE_NTSC_PROG,     // viDisplayMode
426     640,             // fbWidth
427     480,             // efbHeight
428     480,             // xfbHeight
429     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
430     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
431     640,             // viWidth
432     480,             // viHeight
433     VI_XFBMODE_SF,   // xFBmode
434     GX_FALSE,        // field_rendering
435     GX_FALSE,        // aa
436 
437     // sample points arranged in increasing Y order
438      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
439      6,  6,  6,  6,  6,  6,  // pix 1
440      6,  6,  6,  6,  6,  6,  // pix 2
441      6,  6,  6,  6,  6,  6,  // pix 3
442 
443     // vertical filter[7], 1/64 units, 6 bits each
444      0,         // line n-1
445      0,         // line n-1
446     21,         // line n
447     22,         // line n
448     21,         // line n
449      0,         // line n+1
450      0          // line n+1
451 };
452 GXRenderModeObj GXNtsc480ProgSoft =
453 {
454     VI_TVMODE_NTSC_PROG,     // viDisplayMode
455     640,             // fbWidth
456     480,             // efbHeight
457     480,             // xfbHeight
458     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
459     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
460     640,             // viWidth
461     480,             // viHeight
462     VI_XFBMODE_SF,   // xFBmode
463     GX_FALSE,        // field_rendering
464     GX_FALSE,        // aa
465 
466     // sample points arranged in increasing Y order
467      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
468      6,  6,  6,  6,  6,  6,  // pix 1
469      6,  6,  6,  6,  6,  6,  // pix 2
470      6,  6,  6,  6,  6,  6,  // pix 3
471 
472     // vertical filter[7], 1/64 units, 6 bits each
473      8,         // line n-1
474      8,         // line n-1
475     10,         // line n
476     12,         // line n
477     10,         // line n
478      8,         // line n+1
479      8          // line n+1
480 };
481 GXRenderModeObj GXNtsc480ProgAa =
482 {
483     VI_TVMODE_NTSC_PROG,     // viDisplayMode
484     640,             // fbWidth
485     242,             // efbHeight
486     480,             // xfbHeight
487     (VI_MAX_WIDTH_NTSC - 640)/2,        // viXOrigin
488     (VI_MAX_HEIGHT_NTSC - 480)/2,       // viYOrigin
489     640,             // viWidth
490     480,             // viHeight
491     VI_XFBMODE_SF,   // xFBmode
492     GX_FALSE,        // field_rendering
493     GX_TRUE,         // aa
494 
495     // sample points arranged in increasing Y order
496      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
497      3,  2,  9,  6,  3, 10,  // pix 1
498      9,  2,  3,  6,  9, 10,  // pix 2
499      9,  2,  3,  6,  9, 10,  // pix 3
500 
501     // vertical filter[7], 1/64 units, 6 bits each
502      4,         // line n-1
503      8,         // line n-1
504     12,         // line n
505     16,         // line n
506     12,         // line n
507      8,         // line n+1
508      4          // line n+1
509 };
510 
511 /*---------------------------------------------------------------------------*/
512 
513 GXRenderModeObj GXMpal240Ds =
514 {
515     VI_TVMODE_MPAL_DS,      // viDisplayMode
516     640,             // fbWidth
517     240,             // efbHeight
518     240,             // xfbHeight
519     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
520     (VI_MAX_HEIGHT_MPAL/2 - 480/2)/2,       // viYOrigin
521     640,             // viWidth
522     480,             // viHeight
523     VI_XFBMODE_SF,   // xFBmode
524     GX_FALSE,        // field_rendering
525     GX_FALSE,        // aa
526 
527     // sample points arranged in increasing Y order
528      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
529      6,  6,  6,  6,  6,  6,  // pix 1
530      6,  6,  6,  6,  6,  6,  // pix 2
531      6,  6,  6,  6,  6,  6,  // pix 3
532 
533     // vertical filter[7], 1/64 units, 6 bits each
534      0,         // line n-1
535      0,         // line n-1
536     21,         // line n
537     22,         // line n
538     21,         // line n
539      0,         // line n+1
540      0          // line n+1
541 };
542 GXRenderModeObj GXMpal240DsAa =
543 {
544     VI_TVMODE_MPAL_DS,      // viDisplayMode
545     640,             // fbWidth
546     240,             // efbHeight
547     240,             // xfbHeight
548     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
549     (VI_MAX_HEIGHT_MPAL/2 - 480/2)/2,       // viYOrigin
550     640,             // viWidth
551     480,             // viHeight
552     VI_XFBMODE_SF,   // xFBmode
553     GX_FALSE,        // field_rendering
554     GX_TRUE,         // aa
555 
556     // sample points arranged in increasing Y order
557      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
558      3,  2,  9,  6,  3, 10,  // pix 1
559      9,  2,  3,  6,  9, 10,  // pix 2
560      9,  2,  3,  6,  9, 10,  // pix 3
561 
562     // vertical filter[7], 1/64 units, 6 bits each
563      0,         // line n-1
564      0,         // line n-1
565     21,         // line n
566     22,         // line n
567     21,         // line n
568      0,         // line n+1
569      0          // line n+1
570 };
571 GXRenderModeObj GXMpal240Int =
572 {
573     VI_TVMODE_MPAL_INT,     // viDisplayMode
574     640,             // fbWidth
575     240,             // efbHeight
576     240,             // xfbHeight
577     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
578     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
579     640,             // viWidth
580     480,             // viHeight
581     VI_XFBMODE_SF,   // xFBmode
582     GX_TRUE,         // field_rendering
583     GX_FALSE,        // aa
584 
585     // sample points arranged in increasing Y order
586      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
587      6,  6,  6,  6,  6,  6,  // pix 1
588      6,  6,  6,  6,  6,  6,  // pix 2
589      6,  6,  6,  6,  6,  6,  // pix 3
590 
591     // vertical filter[7], 1/64 units, 6 bits each
592      0,         // line n-1
593      0,         // line n-1
594     21,         // line n
595     22,         // line n
596     21,         // line n
597      0,         // line n+1
598      0          // line n+1
599 };
600 GXRenderModeObj GXMpal240IntAa =
601 {
602     VI_TVMODE_MPAL_INT,     // viDisplayMode
603     640,             // fbWidth
604     240,             // efbHeight
605     240,             // xfbHeight
606     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
607     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
608     640,             // viWidth
609     480,             // viHeight
610     VI_XFBMODE_SF,   // xFBmode
611     GX_TRUE,         // field_rendering
612     GX_TRUE,         // aa
613 
614     // sample points arranged in increasing Y order
615      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
616      3,  2,  9,  6,  3, 10,  // pix 1
617      9,  2,  3,  6,  9, 10,  // pix 2
618      9,  2,  3,  6,  9, 10,  // pix 3
619 
620     // vertical filter[7], 1/64 units, 6 bits each
621      0,         // line n-1
622      0,         // line n-1
623     21,         // line n
624     22,         // line n
625     21,         // line n
626      0,         // line n+1
627      0          // line n+1
628 };
629 GXRenderModeObj GXMpal480IntDf =
630 {
631     VI_TVMODE_MPAL_INT,     // viDisplayMode
632     640,             // fbWidth
633     480,             // efbHeight
634     480,             // xfbHeight
635     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
636     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
637     640,             // viWidth
638     480,             // viHeight
639     VI_XFBMODE_DF,   // xFBmode
640     GX_FALSE,        // field_rendering
641     GX_FALSE,        // aa
642 
643     // sample points arranged in increasing Y order
644      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
645      6,  6,  6,  6,  6,  6,  // pix 1
646      6,  6,  6,  6,  6,  6,  // pix 2
647      6,  6,  6,  6,  6,  6,  // pix 3
648 
649     // vertical filter[7], 1/64 units, 6 bits each
650      8,         // line n-1
651      8,         // line n-1
652     10,         // line n
653     12,         // line n
654     10,         // line n
655      8,         // line n+1
656      8          // line n+1
657 };
658 GXRenderModeObj GXMpal480Int =
659 {
660     VI_TVMODE_MPAL_INT,     // viDisplayMode
661     640,             // fbWidth
662     480,             // efbHeight
663     480,             // xfbHeight
664     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
665     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
666     640,             // viWidth
667     480,             // viHeight
668     VI_XFBMODE_DF,   // xFBmode
669     GX_FALSE,        // field_rendering
670     GX_FALSE,        // aa
671 
672     // sample points arranged in increasing Y order
673      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
674      6,  6,  6,  6,  6,  6,  // pix 1
675      6,  6,  6,  6,  6,  6,  // pix 2
676      6,  6,  6,  6,  6,  6,  // pix 3
677 
678     // vertical filter[7], 1/64 units, 6 bits each
679      0,         // line n-1
680      0,         // line n-1
681     21,         // line n
682     22,         // line n
683     21,         // line n
684      0,         // line n+1
685      0          // line n+1
686 };
687 GXRenderModeObj GXMpal480IntAa =
688 {
689     VI_TVMODE_MPAL_INT,     // viDisplayMode
690     640,             // fbWidth
691     242,             // efbHeight
692     480,             // xfbHeight
693     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
694     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
695     640,             // viWidth
696     480,             // viHeight
697     VI_XFBMODE_DF,   // xFBmode
698     GX_FALSE,        // field_rendering
699     GX_TRUE,         // aa
700 
701     // sample points arranged in increasing Y order
702      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
703      3,  2,  9,  6,  3, 10,  // pix 1
704      9,  2,  3,  6,  9, 10,  // pix 2
705      9,  2,  3,  6,  9, 10,  // pix 3
706 
707     // vertical filter[7], 1/64 units, 6 bits each
708      4,         // line n-1
709      8,         // line n-1
710     12,         // line n
711     16,         // line n
712     12,         // line n
713      8,         // line n+1
714      4          // line n+1
715 };
716 GXRenderModeObj GXMpal480Prog =
717 {
718     VI_TVMODE_MPAL_PROG,     // viDisplayMode
719     640,             // fbWidth
720     480,             // efbHeight
721     480,             // xfbHeight
722     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
723     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
724     640,             // viWidth
725     480,             // viHeight
726     VI_XFBMODE_SF,   // xFBmode
727     GX_FALSE,        // field_rendering
728     GX_FALSE,        // aa
729 
730     // sample points arranged in increasing Y order
731      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
732      6,  6,  6,  6,  6,  6,  // pix 1
733      6,  6,  6,  6,  6,  6,  // pix 2
734      6,  6,  6,  6,  6,  6,  // pix 3
735 
736     // vertical filter[7], 1/64 units, 6 bits each
737      0,         // line n-1
738      0,         // line n-1
739     21,         // line n
740     22,         // line n
741     21,         // line n
742      0,         // line n+1
743      0          // line n+1
744 };
745 GXRenderModeObj GXMpal480ProgSoft =
746 {
747     VI_TVMODE_MPAL_PROG,     // viDisplayMode
748     640,             // fbWidth
749     480,             // efbHeight
750     480,             // xfbHeight
751     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
752     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
753     640,             // viWidth
754     480,             // viHeight
755     VI_XFBMODE_SF,   // xFBmode
756     GX_FALSE,        // field_rendering
757     GX_FALSE,        // aa
758 
759     // sample points arranged in increasing Y order
760      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
761      6,  6,  6,  6,  6,  6,  // pix 1
762      6,  6,  6,  6,  6,  6,  // pix 2
763      6,  6,  6,  6,  6,  6,  // pix 3
764 
765     // vertical filter[7], 1/64 units, 6 bits each
766      8,         // line n-1
767      8,         // line n-1
768     10,         // line n
769     12,         // line n
770     10,         // line n
771      8,         // line n+1
772      8          // line n+1
773 };
774 GXRenderModeObj GXMpal480ProgAa =
775 {
776     VI_TVMODE_MPAL_PROG,     // viDisplayMode
777     640,             // fbWidth
778     242,             // efbHeight
779     480,             // xfbHeight
780     (VI_MAX_WIDTH_MPAL - 640)/2,        // viXOrigin
781     (VI_MAX_HEIGHT_MPAL - 480)/2,       // viYOrigin
782     640,             // viWidth
783     480,             // viHeight
784     VI_XFBMODE_SF,   // xFBmode
785     GX_FALSE,        // field_rendering
786     GX_TRUE,         // aa
787 
788     // sample points arranged in increasing Y order
789      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
790      3,  2,  9,  6,  3, 10,  // pix 1
791      9,  2,  3,  6,  9, 10,  // pix 2
792      9,  2,  3,  6,  9, 10,  // pix 3
793 
794     // vertical filter[7], 1/64 units, 6 bits each
795      4,         // line n-1
796      8,         // line n-1
797     12,         // line n
798     16,         // line n
799     12,         // line n
800      8,         // line n+1
801      4          // line n+1
802 };
803 /*---------------------------------------------------------------------------*/
804 
805 GXRenderModeObj GXPal264Ds =
806 {
807     VI_TVMODE_PAL_DS,       // viDisplayMode
808     640,             // fbWidth
809     264,             // efbHeight
810     264,             // xfbHeight
811     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
812     (VI_MAX_HEIGHT_PAL/2 - 528/2)/2,        // viYOrigin
813     640,             // viWidth
814     528,             // viHeight
815     VI_XFBMODE_SF,   // xFBmode
816     GX_FALSE,        // field_rendering
817     GX_FALSE,        // aa
818 
819     // sample points arranged in increasing Y order
820      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
821      6,  6,  6,  6,  6,  6,  // pix 1
822      6,  6,  6,  6,  6,  6,  // pix 2
823      6,  6,  6,  6,  6,  6,  // pix 3
824 
825     // vertical filter[7], 1/64 units, 6 bits each
826      0,         // line n-1
827      0,         // line n-1
828     21,         // line n
829     22,         // line n
830     21,         // line n
831      0,         // line n+1
832      0          // line n+1
833 };
834 GXRenderModeObj GXPal264DsAa =
835 {
836     VI_TVMODE_PAL_DS,       // viDisplayMode
837     640,             // fbWidth
838     264,             // efbHeight
839     264,             // xfbHeight
840     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
841     (VI_MAX_HEIGHT_PAL/2 - 528/2)/2,        // viYOrigin
842     640,             // viWidth
843     528,             // viHeight
844     VI_XFBMODE_SF,   // xFBmode
845     GX_FALSE,        // field_rendering
846     GX_TRUE,         // aa
847 
848     // sample points arranged in increasing Y order
849      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
850      3,  2,  9,  6,  3, 10,  // pix 1
851      9,  2,  3,  6,  9, 10,  // pix 2
852      9,  2,  3,  6,  9, 10,  // pix 3
853 
854     // vertical filter[7], 1/64 units, 6 bits each
855      0,         // line n-1
856      0,         // line n-1
857     21,         // line n
858     22,         // line n
859     21,         // line n
860      0,         // line n+1
861      0          // line n+1
862 };
863 GXRenderModeObj GXPal264Int =
864 {
865     VI_TVMODE_PAL_INT,      // viDisplayMode
866     640,             // fbWidth
867     264,             // efbHeight
868     264,             // xfbHeight
869     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
870     (VI_MAX_HEIGHT_PAL - 528)/2,        // viYOrigin
871     640,             // viWidth
872     528,             // viHeight
873     VI_XFBMODE_SF,   // xFBmode
874     GX_TRUE,         // field_rendering
875     GX_FALSE,        // aa
876 
877     // sample points arranged in increasing Y order
878      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
879      6,  6,  6,  6,  6,  6,  // pix 1
880      6,  6,  6,  6,  6,  6,  // pix 2
881      6,  6,  6,  6,  6,  6,  // pix 3
882 
883     // vertical filter[7], 1/64 units, 6 bits each
884      0,         // line n-1
885      0,         // line n-1
886     21,         // line n
887     22,         // line n
888     21,         // line n
889      0,         // line n+1
890      0          // line n+1
891 };
892 GXRenderModeObj GXPal264IntAa =
893 {
894     VI_TVMODE_PAL_INT,      // viDisplayMode
895     640,             // fbWidth
896     264,             // efbHeight
897     264,             // xfbHeight
898     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
899     (VI_MAX_HEIGHT_PAL - 528)/2,        // viYOrigin
900     640,             // viWidth
901     528,             // viHeight
902     VI_XFBMODE_SF,   // xFBmode
903     GX_TRUE,         // field_rendering
904     GX_TRUE,         // aa
905 
906     // sample points arranged in increasing Y order
907      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
908      3,  2,  9,  6,  3, 10,  // pix 1
909      9,  2,  3,  6,  9, 10,  // pix 2
910      9,  2,  3,  6,  9, 10,  // pix 3
911 
912     // vertical filter[7], 1/64 units, 6 bits each
913      0,         // line n-1
914      0,         // line n-1
915     21,         // line n
916     22,         // line n
917     21,         // line n
918      0,         // line n+1
919      0          // line n+1
920 };
921 GXRenderModeObj GXPal528IntDf =
922 {
923     VI_TVMODE_PAL_INT,      // viDisplayMode
924     640,             // fbWidth
925     528,             // efbHeight
926     528,             // xfbHeight
927     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
928     (VI_MAX_HEIGHT_PAL - 528)/2,        // viYOrigin
929     640,             // viWidth
930     528,             // viHeight
931     VI_XFBMODE_DF,   // xFBmode
932     GX_FALSE,        // field_rendering
933     GX_FALSE,        // aa
934 
935     // sample points arranged in increasing Y order
936      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
937      6,  6,  6,  6,  6,  6,  // pix 1
938      6,  6,  6,  6,  6,  6,  // pix 2
939      6,  6,  6,  6,  6,  6,  // pix 3
940 
941     // vertical filter[7], 1/64 units, 6 bits each
942      8,         // line n-1
943      8,         // line n-1
944     10,         // line n
945     12,         // line n
946     10,         // line n
947      8,         // line n+1
948      8          // line n+1
949 };
950 GXRenderModeObj GXPal528Int =
951 {
952     VI_TVMODE_PAL_INT,       // viDisplayMode
953     640,             // fbWidth
954     528,             // efbHeight
955     528,             // xfbHeight
956     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
957     (VI_MAX_HEIGHT_PAL - 528)/2,        // viYOrigin
958     640,             // viWidth
959     528,             // viHeight
960     VI_XFBMODE_DF,   // xFBmode
961     GX_FALSE,        // field_rendering
962     GX_FALSE,        // aa
963 
964     // sample points arranged in increasing Y order
965      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
966      6,  6,  6,  6,  6,  6,  // pix 1
967      6,  6,  6,  6,  6,  6,  // pix 2
968      6,  6,  6,  6,  6,  6,  // pix 3
969 
970     // vertical filter[7], 1/64 units, 6 bits each
971      0,         // line n-1
972      0,         // line n-1
973     21,         // line n
974     22,         // line n
975     21,         // line n
976      0,         // line n+1
977      0          // line n+1
978 };
979 GXRenderModeObj GXPal524IntAa =
980 {
981     VI_TVMODE_PAL_INT,      // viDisplayMode
982     640,             // fbWidth
983     264,             // efbHeight (maximum is 528/2)
984     524,             // xfbHeight (allow for required overlap of 4 lines)
985     (VI_MAX_WIDTH_PAL - 640)/2,         // viXOrigin
986     (VI_MAX_HEIGHT_PAL - 528)/2,        // viYOrigin
987     640,             // viWidth
988     524,             // viHeight
989     VI_XFBMODE_DF,   // xFBmode
990     GX_FALSE,        // field_rendering
991     GX_TRUE,         // aa
992 
993     // sample points arranged in increasing Y order
994      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
995      3,  2,  9,  6,  3, 10,  // pix 1
996      9,  2,  3,  6,  9, 10,  // pix 2
997      9,  2,  3,  6,  9, 10,  // pix 3
998 
999     // vertical filter[7], 1/64 units, 6 bits each
1000      4,         // line n-1
1001      8,         // line n-1
1002     12,         // line n
1003     16,         // line n
1004     12,         // line n
1005      8,         // line n+1
1006      4          // line n+1
1007 };
1008 
1009 GXRenderModeObj GXEurgb60Hz240Ds =
1010 {
1011     VI_TVMODE_EURGB60_DS,      // viTVmode
1012     640,             // fbWidth
1013     240,             // efbHeight
1014     240,             // xfbHeight
1015     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1016     (VI_MAX_HEIGHT_EURGB60/2 - 480/2)/2,       // viYOrigin
1017     640,             // viWidth
1018     480,             // viHeight
1019     VI_XFBMODE_SF,   // xFBmode
1020     GX_FALSE,        // field_rendering
1021     GX_FALSE,        // aa
1022 
1023      // sample points arranged in increasing Y order
1024      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1025      6,  6,  6,  6,  6,  6,  // pix 1
1026      6,  6,  6,  6,  6,  6,  // pix 2
1027      6,  6,  6,  6,  6,  6,  // pix 3
1028 
1029      // vertical filter[7], 1/64 units, 6 bits each
1030       0,         // line n-1
1031       0,         // line n-1
1032      21,         // line n
1033      22,         // line n
1034      21,         // line n
1035       0,         // line n+1
1036       0          // line n+1
1037 };
1038 GXRenderModeObj GXEurgb60Hz240DsAa =
1039 {
1040     VI_TVMODE_EURGB60_DS,      // viTVmode
1041     640,             // fbWidth
1042     240,             // efbHeight
1043     240,             // xfbHeight
1044     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1045     (VI_MAX_HEIGHT_EURGB60/2 - 480/2)/2,       // viYOrigin
1046     640,             // viWidth
1047     480,             // viHeight
1048     VI_XFBMODE_SF,   // xFBmode
1049     GX_FALSE,        // field_rendering
1050     GX_TRUE,         // aa
1051 
1052     // sample points arranged in increasing Y order
1053      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1054      3,  2,  9,  6,  3, 10,  // pix 1
1055      9,  2,  3,  6,  9, 10,  // pix 2
1056      9,  2,  3,  6,  9, 10,  // pix 3
1057 
1058     // vertical filter[7], 1/64 units, 6 bits each
1059      0,         // line n-1
1060      0,         // line n-1
1061      21,        // line n
1062      22,        // line n
1063      21,        // line n
1064      0,         // line n+1
1065      0          // line n+1
1066 };
1067 GXRenderModeObj GXEurgb60Hz240Int =
1068 {
1069     VI_TVMODE_EURGB60_INT,     // viTVmode
1070     640,             // fbWidth
1071     240,             // efbHeight
1072     240,             // xfbHeight
1073     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1074     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1075     640,             // viWidth
1076     480,             // viHeight
1077     VI_XFBMODE_SF,   // xFBmode
1078     GX_TRUE,         // field_rendering
1079     GX_FALSE,        // aa
1080 
1081     // sample points arranged in increasing Y order
1082      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1083      6,  6,  6,  6,  6,  6,  // pix 1
1084      6,  6,  6,  6,  6,  6,  // pix 2
1085      6,  6,  6,  6,  6,  6,  // pix 3
1086 
1087     // vertical filter[7], 1/64 units, 6 bits each
1088      0,         // line n-1
1089      0,         // line n-1
1090     21,         // line n
1091     22,         // line n
1092     21,         // line n
1093      0,         // line n+1
1094      0          // line n+1
1095 };
1096 GXRenderModeObj GXEurgb60Hz240IntAa =
1097 {
1098     VI_TVMODE_EURGB60_INT,     // viTVmode
1099     640,             // fbWidth
1100     240,             // efbHeight
1101     240,             // xfbHeight
1102     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1103     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1104     640,             // viWidth
1105     480,             // viHeight
1106     VI_XFBMODE_SF,   // xFBmode
1107     GX_TRUE,         // field_rendering
1108     GX_TRUE,         // aa
1109 
1110     // sample points arranged in increasing Y order
1111      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1112      3,  2,  9,  6,  3, 10,  // pix 1
1113      9,  2,  3,  6,  9, 10,  // pix 2
1114      9,  2,  3,  6,  9, 10,  // pix 3
1115 
1116     // vertical filter[7], 1/64 units, 6 bits each
1117      0,         // line n-1
1118      0,         // line n-1
1119      21,        // line n
1120      22,        // line n
1121      21,        // line n
1122      0,         // line n+1
1123      0          // line n+1
1124 };
1125 GXRenderModeObj GXEurgb60Hz480IntDf =
1126 {
1127     VI_TVMODE_EURGB60_INT,     // viTVmode
1128     640,             // fbWidth
1129     480,             // efbHeight
1130     480,             // xfbHeight
1131     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1132     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1133     640,             // viWidth
1134     480,             // viHeight
1135     VI_XFBMODE_DF,   // xFBmode
1136     GX_FALSE,        // field_rendering
1137     GX_FALSE,        // aa
1138 
1139     // sample points arranged in increasing Y order
1140      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1141      6,  6,  6,  6,  6,  6,  // pix 1
1142      6,  6,  6,  6,  6,  6,  // pix 2
1143      6,  6,  6,  6,  6,  6,  // pix 3
1144 
1145     // vertical filter[7], 1/64 units, 6 bits each
1146      8,         // line n-1
1147      8,         // line n-1
1148     10,         // line n
1149     12,         // line n
1150     10,         // line n
1151      8,         // line n+1
1152      8          // line n+1
1153 };
1154 GXRenderModeObj GXEurgb60Hz480Int =
1155 {
1156     VI_TVMODE_EURGB60_INT,     // viTVmode
1157     640,             // fbWidth
1158     480,             // efbHeight
1159     480,             // xfbHeight
1160     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1161     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1162     640,             // viWidth
1163     480,             // viHeight
1164     VI_XFBMODE_DF,   // xFBmode
1165     GX_FALSE,        // field_rendering
1166     GX_FALSE,        // aa
1167 
1168     // sample points arranged in increasing Y order
1169      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1170      6,  6,  6,  6,  6,  6,  // pix 1
1171      6,  6,  6,  6,  6,  6,  // pix 2
1172      6,  6,  6,  6,  6,  6,  // pix 3
1173 
1174     // vertical filter[7], 1/64 units, 6 bits each
1175      0,         // line n-1
1176      0,         // line n-1
1177     21,         // line n
1178     22,         // line n
1179     21,         // line n
1180      0,         // line n+1
1181      0          // line n+1
1182 };
1183 GXRenderModeObj GXEurgb60Hz480IntAa =
1184 {
1185     VI_TVMODE_EURGB60_INT,     // viTVmode
1186     640,             // fbWidth
1187     242,             // efbHeight
1188     480,             // xfbHeight
1189     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1190     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1191     640,             // viWidth
1192     480,             // viHeight
1193     VI_XFBMODE_DF,   // xFBmode
1194     GX_FALSE,        // field_rendering
1195     GX_TRUE,         // aa
1196 
1197     // sample points arranged in increasing Y order
1198      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1199      3,  2,  9,  6,  3, 10,  // pix 1
1200      9,  2,  3,  6,  9, 10,  // pix 2
1201      9,  2,  3,  6,  9, 10,  // pix 3
1202 
1203     // vertical filter[7], 1/64 units, 6 bits each
1204      4,         // line n-1
1205      8,         // line n-1
1206     12,         // line n
1207     16,         // line n
1208     12,         // line n
1209      8,         // line n+1
1210      4          // line n+1
1211 };
1212 GXRenderModeObj GXEurgb60Hz480Prog =
1213 {
1214     VI_TVMODE_EURGB60_PROG,     // viDisplayMode
1215     640,             // fbWidth
1216     480,             // efbHeight
1217     480,             // xfbHeight
1218     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1219     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1220     640,             // viWidth
1221     480,             // viHeight
1222     VI_XFBMODE_SF,   // xFBmode
1223     GX_FALSE,        // field_rendering
1224     GX_FALSE,        // aa
1225 
1226     // sample points arranged in increasing Y order
1227      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1228      6,  6,  6,  6,  6,  6,  // pix 1
1229      6,  6,  6,  6,  6,  6,  // pix 2
1230      6,  6,  6,  6,  6,  6,  // pix 3
1231 
1232     // vertical filter[7], 1/64 units, 6 bits each
1233      0,         // line n-1
1234      0,         // line n-1
1235     21,         // line n
1236     22,         // line n
1237     21,         // line n
1238      0,         // line n+1
1239      0          // line n+1
1240 };
1241 GXRenderModeObj GXEurgb60Hz480ProgSoft =
1242 {
1243     VI_TVMODE_EURGB60_PROG,     // viDisplayMode
1244     640,             // fbWidth
1245     480,             // efbHeight
1246     480,             // xfbHeight
1247     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1248     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1249     640,             // viWidth
1250     480,             // viHeight
1251     VI_XFBMODE_SF,   // xFBmode
1252     GX_FALSE,        // field_rendering
1253     GX_FALSE,        // aa
1254 
1255     // sample points arranged in increasing Y order
1256      6,  6,  6,  6,  6,  6,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1257      6,  6,  6,  6,  6,  6,  // pix 1
1258      6,  6,  6,  6,  6,  6,  // pix 2
1259      6,  6,  6,  6,  6,  6,  // pix 3
1260 
1261     // vertical filter[7], 1/64 units, 6 bits each
1262      8,         // line n-1
1263      8,         // line n-1
1264     10,         // line n
1265     12,         // line n
1266     10,         // line n
1267      8,         // line n+1
1268      8          // line n+1
1269 };
1270 GXRenderModeObj GXEurgb60Hz480ProgAa =
1271 {
1272     VI_TVMODE_EURGB60_PROG,     // viDisplayMode
1273     640,             // fbWidth
1274     242,             // efbHeight
1275     480,             // xfbHeight
1276     (VI_MAX_WIDTH_EURGB60 - 640)/2,        // viXOrigin
1277     (VI_MAX_HEIGHT_EURGB60 - 480)/2,       // viYOrigin
1278     640,             // viWidth
1279     480,             // viHeight
1280     VI_XFBMODE_SF,   // xFBmode
1281     GX_FALSE,        // field_rendering
1282     GX_TRUE,         // aa
1283 
1284     // sample points arranged in increasing Y order
1285      3,  2,  9,  6,  3, 10,  // pix 0, 3 sample points, 1/12 units, 4 bits each
1286      3,  2,  9,  6,  3, 10,  // pix 1
1287      9,  2,  3,  6,  9, 10,  // pix 2
1288      9,  2,  3,  6,  9, 10,  // pix 3
1289 
1290     // vertical filter[7], 1/64 units, 6 bits each
1291      4,         // line n-1
1292      8,         // line n-1
1293     12,         // line n
1294     16,         // line n
1295     12,         // line n
1296      8,         // line n+1
1297      4          // line n+1
1298 };
1299 
1300 
1301 #endif // #if 0
1302 /*---------------------------------------------------------------------------*/
1303 
1304 #ifdef __cplusplus
1305 }
1306 #endif
1307 
1308 #endif // __GXFRAMEBUFFER_H__
1309