Search
lxdream.org :: lxdream/test/pvr.h
lxdream 0.9.1
released Jun 29
Download Now
filename test/pvr.h
changeset 190:f7653df5e832
prev185:6755a04c447f
next213:da6b1904f67b
author nkeynes
date Sun Aug 06 06:13:51 2006 +0000 (17 years ago)
permissions -rw-r--r--
last change First pass at implementing the tile clip. Reasonably accurate wrt basic
understanding of how its supposed to work, not so accurate wrt actual
hardware behaviour
view annotate diff log raw
     1 /**
     2  * $Id: pvr.h,v 1.2 2006-08-02 04:13:15 nkeynes Exp $
     3  * 
     4  * PVR support code
     5  *
     6  * Copyright (c) 2006 Nathan Keynes.
     7  *
     8  * This program is free software; you can redistribute it and/or modify
     9  * it under the terms of the GNU General Public License as published by
    10  * the Free Software Foundation; either version 2 of the License, or
    11  * (at your option) any later version.
    12  *
    13  * This program is distributed in the hope that it will be useful,
    14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16  * GNU General Public License for more details.
    17  */
    19 #define PVR_VRAM_BASE 0xA5000000
    20 #define PVR_VRAM64_BASE 0xA4000000
    23 #define TA_PIXFMT_RGB555   0
    24 #define TA_PIXFMT_RGB565   1
    25 #define TA_PIXFMT_ARGB4444 2
    26 #define TA_PIXFMT_ARGB1555 3
    27 #define TA_PIXFMT_RGB888   5
    28 #define TA_PIXFMT_ARGB8888 6
    29 #define TA_PIXFMT_DITHER   8
    31 #define TA_CMD_POLYGON                    0x80000000
    32 #define TA_CMD_MODIFIER                   0x80000000
    33 #define TA_CMD_POLYGON_TYPE_OPAQUE        (0<<24)
    34 #define TA_CMD_MODIFIER_TYPE_OPAQUE       (1<<24)
    35 #define TA_CMD_POLYGON_TYPE_TRANSPARENT   (2<<24)
    36 #define TA_CMD_MODIFIER_TYPE_TRANSPARENT  (3<<24)
    37 #define TA_CMD_POLYGON_TYPE_PUNCHTHRU     (4<<24)
    38 #define TA_CMD_POLYGON_SUBLIST            0x00800000
    39 #define TA_CMD_POLYGON_STRIPLENGTH_1      (0<<18)
    40 #define TA_CMD_POLYGON_STRIPLENGTH_2      (1<<18)
    41 #define TA_CMD_POLYGON_STRIPLENGTH_4      (2<<18)
    42 #define TA_CMD_POLYGON_STRIPLENGTH_6      (3<<18)
    43 #define TA_CMD_POLYGON_USER_CLIP_INSIDE   0x00020000
    44 #define TA_CMD_POLYGON_USER_CLIP_OUTSIDE  0x00030000
    45 #define TA_CMD_POLYGON_AFFECTED_BY_MODIFIER  0x00000080
    46 #define TA_CMD_POLYGON_CHEAP_SHADOW_MODIFIER 0x00000000
    47 #define TA_CMD_POLYGON_NORMAL_MODIFIER       0x00000040
    48 #define TA_CMD_POLYGON_PACKED_COLOUR      (0<<4)
    49 #define TA_CMD_POLYGON_FLOAT_COLOUR       (1<<4)
    50 #define TA_CMD_POLYGON_INTENSITY          (2<<4)
    51 #define TA_CMD_POLYGON_PREVFACE_INTENSITY (3<<4)
    52 #define TA_CMD_POLYGON_TEXTURED           0x00000008
    53 #define TA_CMD_POLYGON_SPECULAR_HIGHLIGHT 0x00000004
    54 #define TA_CMD_POLYGON_GOURAUD_SHADING    0x00000002
    55 #define TA_CMD_POLYGON_16BIT_UV           0x00000001
    57 #define TA_POLYMODE1_Z_NEVER        (0<<29)
    58 #define TA_POLYMODE1_Z_LESS         (1<<29)
    59 #define TA_POLYMODE1_Z_EQUAL        (2<<29)
    60 #define TA_POLYMODE1_Z_LESSEQUAL    (3<<29)
    61 #define TA_POLYMODE1_Z_GREATER      (4<<29)
    62 #define TA_POLYMODE1_Z_NOTEQUAL     (5<<29)
    63 #define TA_POLYMODE1_Z_GREATEREQUAL (6<<29)
    64 #define TA_POLYMODE1_Z_ALWAYS       (7<<29)
    65 #define TA_POLYMODE1_CULL_SMALL     (1<<27)
    66 #define TA_POLYMODE1_CULL_CCW       (2<<27)
    67 #define TA_POLYMODE1_CULL_CW        (3<<27)
    68 #define TA_POLYMODE1_NO_Z_UPDATE    0x04000000
    70 #define TA_POLYMODE2_BLEND_DEFAULT  (0x20<<24)
    71 #define TA_POLYMODE2_FOG_TABLE      (0<<22)
    72 #define TA_POLYMODE2_FOG_VERTEX     (1<<22)
    73 #define TA_POLYMODE2_FOG_DISABLED   (2<<22)
    74 #define TA_POLYMODE2_FOG_TABLE2     (3<<22)
    75 #define TA_POLYMODE2_CLAMP_COLOURS  0x00200000
    76 #define TA_POLYMODE2_ENABLE_ALPHA   0x00100000
    77 #define TA_POLYMODE2_DISABLE_TEXTURE_TRANSPARENCY 0x00080000
    78 #define TA_POLYMODE2_TEXTURE_FLIP_U   0x00080000
    79 #define TA_POLYMODE2_TEXTURE_FLIP_V   0x00040000
    80 #define TA_POLYMODE2_TEXTURE_CLAMP_U  0x00020000
    81 #define TA_POLYMODE2_TEXTURE_CLAMP_V  0x00010000
    82 #define TA_POLYMODE2_TRILINEAR_FILTER 0x00004000
    83 #define TA_POLYMODE2_BILINEAR_FILTER  0x00002000
    85 #define TA_POLYMODE2_MIPMAP_D_0_25    (1<<8)
    86 #define TA_POLYMODE2_MIPMAP_D_0_50    (2<<8)
    87 #define TA_POLYMODE2_MIPMAP_D_0_75    (3<<8)
    88 #define TA_POLYMODE2_MIPMAP_D_1_00    (4<<8)
    89 #define TA_POLYMODE2_MIPMAP_D_1_25    (5<<8)
    90 #define TA_POLYMODE2_MIPMAP_D_1_50    (6<<8)
    91 #define TA_POLYMODE2_MIPMAP_D_1_75    (7<<8)
    92 #define TA_POLYMODE2_MIPMAP_D_2_00    (8<<8)
    93 #define TA_POLYMODE2_MIPMAP_D_2_25    (9<<8)
    94 #define TA_POLYMODE2_MIPMAP_D_2_50    (10<<8)
    95 #define TA_POLYMODE2_MIPMAP_D_2_75    (11<<8)
    96 #define TA_POLYMODE2_MIPMAP_D_3_00    (12<<8)
    97 #define TA_POLYMODE2_MIPMAP_D_3_25    (13<<8)
    98 #define TA_POLYMODE2_MIPMAP_D_3_50    (14<<8)
    99 #define TA_POLYMODE2_MIPMAP_D_3_75    (15<<8)
   100 #define TA_POLYMODE2_TEXTURE_REPLACE  (0<<6)
   101 #define TA_POLYMODE2_TEXTURE_MODULATE (1<<6)
   102 #define TA_POLYMODE2_TEXTURE_DECAL    (2<<6)
   103 #define TA_POLYMODE2_U_SIZE_8         (0<<3)
   104 #define TA_POLYMODE2_U_SIZE_16        (1<<3)
   105 #define TA_POLYMODE2_U_SIZE_32        (2<<3)
   106 #define TA_POLYMODE2_U_SIZE_64        (3<<3)
   107 #define TA_POLYMODE2_U_SIZE_128       (4<<3)
   108 #define TA_POLYMODE2_U_SIZE_256       (5<<3)
   109 #define TA_POLYMODE2_U_SIZE_512       (6<<3)
   110 #define TA_POLYMODE2_U_SIZE_1024      (7<<3)
   111 #define TA_POLYMODE2_V_SIZE_8         (0<<0)
   112 #define TA_POLYMODE2_V_SIZE_16        (1<<0)
   113 #define TA_POLYMODE2_V_SIZE_32        (2<<0)
   114 #define TA_POLYMODE2_V_SIZE_64        (3<<0)
   115 #define TA_POLYMODE2_V_SIZE_128       (4<<0)
   116 #define TA_POLYMODE2_V_SIZE_256       (5<<0)
   117 #define TA_POLYMODE2_V_SIZE_512       (6<<0)
   118 #define TA_POLYMODE2_V_SIZE_1024      (7<<0)
   119 #define TA_TEXTUREMODE_MIPMAP       0x80000000
   120 #define TA_TEXTUREMODE_VQ_COMPRESSION 0x40000000
   121 #define TA_TEXTUREMODE_ARGB1555     (0<<27)
   122 #define TA_TEXTUREMODE_RGB565       (1<<27)
   123 #define TA_TEXTUREMODE_ARGB4444     (2<<27)
   124 #define TA_TEXTUREMODE_YUV422       (3<<27)
   125 #define TA_TEXTUREMODE_BUMPMAP      (4<<27)
   126 #define TA_TEXTUREMODE_CLUT4        (5<<27)
   127 #define TA_TEXTUREMODE_CLUT8        (6<<27)
   128 #define TA_TEXTUREMODE_CLUTBANK8(n) ((n)<<25) /* 0-3  */
   129 #define TA_TEXTUREMODE_CLUTBANK4(n) ((n)<<21) /* 0-63 */
   130 #define TA_TEXTUREMODE_TWIDDLED     0x00000000
   131 #define TA_TEXTUREMODE_NON_TWIDDLED 0x04000000
   132 #define TA_TEXTUREMODE_ADDRESS(a)   ((((unsigned long)(void*)(a))&0x7fffff)>>3)
   133 #define TA_CMD_VERTEX     0xe0000000
   134 #define TA_CMD_VERTEX_LAST 0xF0000000  /* end of strip */
   136 #define GRID_SIZE( hres, vres ) (((((vres+31) / 32)-1)<<16)|((((hres+31) / 32)-1)))
   138 struct ta_config {
   139     unsigned int ta_cfg;
   140     unsigned int grid_size;
   141     unsigned int obj_start;
   142     unsigned int obj_end;
   143     unsigned int tile_start;
   144     unsigned int tile_end;
   145     unsigned int plist_start;
   146 };
   148 void ta_init( struct ta_config *config );
   149 void pvr_dump_objbuf( FILE *f );
   150 void pvr_dump_tilebuf( FILE *f );
   151 int pvr_get_objbuf_size();
   152 int pvr_get_plist_posn();
.