📄 trident_tris.c
字号:
/* * Copyright 2002 by Alan Hourihane, Sychdyn, North Wales, UK. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Alan Hourihane not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Alan Hourihane makes no representations * about the suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. * * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. * * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> * * Trident CyberBladeXP driver. * */#include "trident_context.h"#include "trident_lock.h"#include "tnl/tnl.h"#include "tnl/t_context.h"#include "tnl/t_pipeline.h"#include "swrast/swrast.h"#include "swrast_setup/swrast_setup.h"static int first = 1;typedef struct reg { int addr; int data;} RegData;RegData initRegData[]={ {0x2804, 0x19980824}, {0x2F70, 0x46455858}, {0x2F74, 0x41584998}, {0x2F00, 0x00000000}, {0x2F04, 0x80000800}, {0x2F08, 0x00550200}, {0x2F40, 0x00000001}, {0x2F40, 0x00000001}, {0x2F44, 0x00830097}, {0x2F48, 0x0087009F}, {0x2F4C, 0x00BF0003}, {0x2F50, 0xF00B6C1B}, {0x2C04, 0x00000000}, {0x2D00, 0x00000080}, {0x2D00, 0x00000000}, {0x2DD4, 0x00100000}, {0x2DD4, 0x00100010}, {0x2DD8, 0x00100000}, {0x2DD8, 0x00100010}, {0x2C88, 0xFFFFFFFF}, {0x2C94 , 0xFFFFFFFF}, {0x281C, 0x00008000}, {0x2C80, 0x00000000}, {0x2C80, 0x00000000}, {0x2C80 , 0x00008000}, {0x2C00 , 0x00000000}, {0x2C04 , 0x00000000}, {0x2C08 , 0x00000000}, {0x2C0C , 0x00000000}, {0x2C10 , 0x00000000}, {0x2C14 , 0x00000000}, {0x2C18 , 0x00000000}, {0x2C1C , 0x00000000}, {0x2C20 , 0x00000000}, {0x2C24 , 0x00000000}, {0x2C2C , 0x00000000}, {0x2C30 , 0x00000000}, {0x2C34 , 0x00000000}, {0x2C38 , 0x00000000}, {0x2C3C , 0x00000000}, {0x2C40 , 0x00000000}, {0x2C44 , 0x00000000}, {0x2C48 , 0x00000000}, {0x2C4C , 0x00000000}, {0x2C50 , 0x00000000}, {0x2C54 , 0x00000000}, {0x2C58 , 0x00000000}, {0x2C5C , 0x00000000}, {0x2C60 , 0x00000000}, {0x2C64 , 0x00000000}, {0x2C68 , 0x00000000}, {0x2C6C , 0x00000000}, {0x2C70 , 0x00000000}, {0x2C74 , 0x00000000}, {0x2C78 , 0x00000000}, {0x2C7C , 0x00000000}, {0x2C80 , 0x00008000}, {0x2C84 , 0x00000000}, {0x2C88 , 0xFFFFFFFF}, {0x2C8C , 0x00000000}, {0x2C90 , 0x00000000}, {0x2C94 , 0xFFFFFFFF}, {0x2C98 , 0x00000000}, {0x2C9C , 0x00000000}, {0x2CA0 , 0x00000000}, {0x2CA4 , 0x00000000}, {0x2CA8 , 0x00000000}, {0x2CAC , 0x00000000}, {0x2CB0 , 0x00000000}, {0x2CB4 , 0x00000000}, {0x2CB8 , 0x00000000}, {0x2CBC , 0x00000000}, {0x2CC0 , 0x00000000}, {0x2CC4 , 0x00000000}, {0x2CC8 , 0x00000000}, {0x2CCC , 0x00000000}, {0x2CD0 , 0x00000000}, {0x2CD4 , 0x00000000}, {0x2CD8 , 0x00000000}, {0x2CDC , 0x00000000}, {0x2CE0 , 0x00000000}, {0x2CE4 , 0x00000000}, {0x2CE8 , 0x00000000}, {0x2CEC , 0x00000000}, {0x2CF0 , 0x00000000}, {0x2CF4 , 0x00000000}, {0x2CF8 , 0x00000000}, {0x2CFC , 0x00000000}, {0x2D00 , 0x00000000}, {0x2D04 , 0x00000000}, {0x2D08 , 0x00000000}, {0x2D0C , 0x00000000}, {0x2D10 , 0x00000000}, {0x2D14 , 0x00000000}, {0x2D18 , 0x00000000}, {0x2D1C , 0x00000000}, {0x2D20 , 0x00000000}, {0x2D24 , 0x00000000}, {0x2D28 , 0x00000000}, {0x2D2C , 0x00000000}, {0x2D30 , 0x00000000}, {0x2D34 , 0x00000000}, {0x2D38 , 0x00000000}, {0x2D3C , 0x00000000}, {0x2D40 , 0x00000000}, {0x2D44 , 0x00000000}, {0x2D48 , 0x00000000}, {0x2D4C , 0x00000000}, {0x2D50 , 0x00000000}, {0x2D54 , 0x00000000}, {0x2D58 , 0x00000000}, {0x2D5C , 0x00000000}, {0x2D60 , 0x00000000}, {0x2D64 , 0x00000000}, {0x2D68 , 0x00000000}, {0x2D6C , 0x00000000}, {0x2D70 , 0x00000000}, {0x2D74 , 0x00000000}, {0x2D78 , 0x00000000}, {0x2D7C , 0x00000000}, {0x2D80 , 0x00000000}, {0x2D84 , 0x00000000}, {0x2D88 , 0x00000000}, {0x2D8C , 0x00000000}, {0x2D90 , 0x00000000}, {0x2D94 , 0x00000000}, {0x2D98 , 0x00000000}, {0x2D9C , 0x00000000}, {0x2DA0 , 0x00000000}, {0x2DA4 , 0x00000000}, {0x2DA8 , 0x00000000}, {0x2DAC , 0x00000000}, {0x2DB0 , 0x00000000}, {0x2DB4 , 0x00000000}, {0x2DB8 , 0x00000000}, {0x2DBC , 0x00000000}, {0x2DC0 , 0x00000000}, {0x2DC4 , 0x00000000}, {0x2DC8 , 0x00000000}, {0x2DCC , 0x00000000}, {0x2DD0 , 0x00000000}, {0x2DD4 , 0x00100010}, {0x2DD8 , 0x00100010}, {0x2DDC , 0x00000000}, {0x2DE0 , 0x00000000}, {0x2DE4 , 0x00000000}, {0x2DE8 , 0x00000000}, {0x2DEC , 0x00000000}, {0x2DF0 , 0x00000000}, {0x2DF4 , 0x00000000}, {0x2DF8 , 0x00000000}, {0x2DFC , 0x00000000}, {0x2E00 , 0x00000000}, {0x2E04 , 0x00000000}, {0x2E08 , 0x00000000}, {0x2E0C , 0x00000000}, {0x2E10 , 0x00000000}, {0x2E14 , 0x00000000}, {0x2E18 , 0x00000000}, {0x2E1C , 0x00000000}, {0x2E20 , 0x00000000}, {0x2E24 , 0x00000000}, {0x2E28 , 0x00000000}, {0x2E2C , 0x00000000}, {0x2E30 , 0x00000000}, {0x2E34 , 0x00000000}, {0x2E38 , 0x00000000}, {0x2E3C , 0x00000000}, {0x2E40 , 0x00000000}, {0x2E44 , 0x00000000}, {0x2E48 , 0x00000000}, {0x2E4C , 0x00000000}, {0x2E50 , 0x00000000}, {0x2E54 , 0x00000000}, {0x2E58 , 0x00000000}, {0x2E5C , 0x00000000}, {0x2E60 , 0x00000000}, {0x2E64 , 0x00000000}, {0x2E68 , 0x00000000}, {0x2E6C , 0x00000000}, {0x2E70 , 0x00000000}, {0x2E74 , 0x00000000}, {0x2E78 , 0x00000000}, {0x2E7C , 0x00000000}, {0x2E80 , 0x00000000}, {0x2E84 , 0x00000000}, {0x2E88 , 0x00000000}, {0x2E8C , 0x00000000}, {0x2E90 , 0x00000000}, {0x2E94 , 0x00000000}, {0x2E98 , 0x00000000}, {0x2E9C , 0x00000000}, {0x2EA0 , 0x00000000}, {0x2EA4 , 0x00000000}, {0x2EA8 , 0x00000000}, {0x2EAC , 0x00000000}, {0x2EB0 , 0x00000000}, {0x2EB4 , 0x00000000}, {0x2EB8 , 0x00000000}, {0x2EBC , 0x00000000}, {0x2EC0 , 0x00000000}, {0x2EC4 , 0x00000000}, {0x2EC8 , 0x00000000}, {0x2ECC , 0x00000000}, {0x2ED0 , 0x00000000}, {0x2ED4 , 0x00000000}, {0x2ED8 , 0x00000000}, {0x2EDC , 0x00000000}, {0x2EE0 , 0x00000000}, {0x2EE4 ,0x00000000}, {0x2EE8 ,0x00000000}, {0x2EEC , 0x00000000}, {0x2EF0 , 0x00000000}, {0x2EF4 , 0x00000000}, {0x2EF8 , 0x00000000}, {0x2EFC , 0x00000000}, /*{0x2F60 , 0x00000000},*/};int initRegDataNum=sizeof(initRegData)/sizeof(RegData);typedef union { unsigned int i; float f;} dmaBufRec, *dmaBuf;void Init3D( tridentContextPtr tmesa ){ unsigned char *MMIO = tmesa->tridentScreen->mmio.map; int i; for(i=0;i<initRegDataNum;++i) MMIO_OUT32(MMIO, initRegData[i].addr, initRegData[i].data);}int DrawTriangle( tridentContextPtr tmesa){ unsigned char *MMIO = tmesa->tridentScreen->mmio.map; dmaBufRec clr;printf("DRAW TRI\n"); Init3D(tmesa);printf("ENGINE STATUS 0x%x\n",MMIO_IN32(MMIO, 0x2800)); MMIO_OUT32(MMIO, 0x002800, 0x00000000 );#if 0 MMIO_OUT32(MMIO, 0x002368 , MMIO_IN32(MMIO,0x002368)|1 );#endif MMIO_OUT32(MMIO, 0x002C00 , 0x00000014 );#if 0 MMIO_OUT32(MMIO, 0x002C04 , 0x0A8004C0 );#else MMIO_OUT32(MMIO, 0x002C04 , 0x0A8000C0 );#endif#if 0 MMIO_OUT32(MMIO, 0x002C08 , 0x00000000 ); MMIO_OUT32(MMIO, 0x002C0C , 0xFFCCCCCC ); MMIO_OUT32(MMIO, 0x002C10 , 0x3F800000 ); MMIO_OUT32(MMIO, 0x002C14 , 0x3D0D3DCB ); MMIO_OUT32(MMIO, 0x002C2C , 0x70000000 ); MMIO_OUT32(MMIO, 0x002C24 , 0x00202C00 ); MMIO_OUT32(MMIO, 0x002C28 , 0xE0002500 ); MMIO_OUT32(MMIO, 0x002C30 , 0x00000000 ); MMIO_OUT32(MMIO, 0x002C34 , 0xE0000000 ); MMIO_OUT32(MMIO, 0x002C38 , 0x00000000 );#endif MMIO_OUT32(MMIO, 0x002C50 , 0x00000000 ); MMIO_OUT32(MMIO, 0x002C54 , 0x0C320C80 ); MMIO_OUT32(MMIO, 0x002C50 , 0x00000000 ); MMIO_OUT32(MMIO, 0x002C54 , 0x0C320C80 ); MMIO_OUT32(MMIO, 0x002C80 , 0x20008258 ); MMIO_OUT32(MMIO, 0x002C84 , 0x20000320 ); MMIO_OUT32(MMIO, 0x002C94 , 0xFFFFFFFF );#if 0 MMIO_OUT32(MMIO, 0x002D00 , 0x00009009 ); MMIO_OUT32(MMIO, 0x002D38 , 0x00000000 ); MMIO_OUT32(MMIO, 0x002D94 , 0x20002000 ); MMIO_OUT32(MMIO, 0x002D50 , 0xf0000000 ); MMIO_OUT32(MMIO, 0x002D80 , 0x24002000 ); MMIO_OUT32(MMIO, 0x002D98 , 0x81000000 ); MMIO_OUT32(MMIO, 0x002DB0 , 0x81000000 ); MMIO_OUT32(MMIO, 0x002DC8 , 0x808000FF ); MMIO_OUT32(MMIO, 0x002DD4 , 0x02000200 ); MMIO_OUT32(MMIO, 0x002DD8 , 0x02000200 ); MMIO_OUT32(MMIO, 0x002D30 , 0x02092400 ); MMIO_OUT32(MMIO, 0x002D04 , 0x00102120 ); MMIO_OUT32(MMIO, 0x002D08 , 0xFFFFFFFF ); MMIO_OUT32(MMIO, 0x002D0C , 0xF00010D0 ); MMIO_OUT32(MMIO, 0x002D10 , 0xC0000400 );#endif MMIO_OUT32(MMIO, 0x002814, 0x00000000 );#if 0 MMIO_OUT32(MMIO, 0x002818 , 0x00036C20 ); #else MMIO_OUT32(MMIO, 0x002818 , 0x00036020 ); #endif MMIO_OUT32(MMIO, 0x00281C , 0x00098081 ); printf("first TRI\n"); clr.f = 5.0; MMIO_OUT32(MMIO, 0x002820 , clr.i ); clr.f = 595.0; MMIO_OUT32(MMIO, 0x002824 , clr.i ); clr.f = 1.0; MMIO_OUT32(MMIO, 0x002828 , clr.i ); MMIO_OUT32(MMIO, 0x00282C , 0x00FF00 ); #if 0 clr.f = 0.0; MMIO_OUT32(MMIO, 0x002830 , clr.i ); clr.f = 1.0; MMIO_OUT32(MMIO, 0x002834 , clr.i );#endif clr.f = 5.0; MMIO_OUT32(MMIO, 0x002820 , clr.i ); clr.f = 5.0; MMIO_OUT32(MMIO, 0x002824 , clr.i ); clr.f = 1.0; MMIO_OUT32(MMIO, 0x002828 , clr.i ); MMIO_OUT32(MMIO, 0x00282C , 0xFF0000 ); #if 0 clr.f = 0.0; MMIO_OUT32(MMIO, 0x002830 , clr.i ); clr.f = 0.0; MMIO_OUT32(MMIO, 0x002834 , clr.i );#endif clr.f = 395.0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -