KallistiOS git master
Independent SDK for the Sega Dreamcast
Loading...
Searching...
No Matches
pvr_header.h
Go to the documentation of this file.
1/* KallistiOS ##version##
2
3 dc/pvr/pvr_header.h
4 Copyright (C) 2025 Paul Cercueil
5*/
6
7/** \file dc/pvr/pvr_header.h
8 \brief Polygon/Sprite header definitions
9 \ingroup pvr
10
11 \author Paul Cercueil
12*/
13
14#ifndef __DC_PVR_PVR_HEADER_H
15#define __DC_PVR_PVR_HEADER_H
16
17#include <stdalign.h>
18#include <stdint.h>
19#include <stdio.h>
20
21#include <kos/cdefs.h>
22__BEGIN_DECLS
23
24#include <dc/pvr/pvr_regs.h>
25
26/** \defgroup pvr_primitives_headers Headers
27 \brief Structs relative to PVR headers
28 \ingroup pvr_primitives
29 \headerfile dc/pvr/pvr_header.h
30
31 @{
32*/
33
34/** \brief Vertex color formats
35
36 These control how colors are represented in polygon data.
37*/
38typedef enum pvr_color_fmts {
39 PVR_CLRFMT_ARGBPACKED, /**< 32-bit integer ARGB */
40 PVR_CLRFMT_4FLOATS, /**< 4 floating point values */
41 PVR_CLRFMT_INTENSITY, /**< Intensity color */
42 PVR_CLRFMT_INTENSITY_PREV, /**< Use last intensity */
44
45/** \brief Primitive clipping modes
46
47 These control how primitives are clipped against the user clipping area.
48*/
49typedef enum pvr_clip_mode {
50 PVR_USERCLIP_DISABLE = 0, /**< Disable clipping */
51 PVR_USERCLIP_INSIDE = 2, /**< Enable clipping inside area */
52 PVR_USERCLIP_OUTSIDE = 3, /**< Enable clipping outside area */
54
55/** \brief PVR rendering lists
56
57 Each primitive submitted to the PVR must be placed in one of these lists,
58 depending on its characteristics.
59*/
60typedef enum pvr_list_type {
61 PVR_LIST_OP_POLY, /**< Opaque polygon list */
62 PVR_LIST_OP_MOD, /**< Opaque modifier list */
63 PVR_LIST_TR_POLY, /**< Translucent polygon list */
64 PVR_LIST_TR_MOD, /**< Translucent modifier list*/
65 PVR_LIST_PT_POLY, /**< Punch-thru polygon list */
67
68/** \brief Primitive culling modes
69
70 These culling modes can be set by polygons to determine when they are
71 culled. They work pretty much as you'd expect them to if you've ever used
72 any 3D hardware before.
73*/
74typedef enum pvr_cull_mode {
75 PVR_CULLING_NONE, /**< Disable culling */
76 PVR_CULLING_SMALL, /**< Cull if small */
77 PVR_CULLING_CCW, /**< Cull if counterclockwise */
78 PVR_CULLING_CW, /**< Cull if clockwise */
80
81/** \brief Depth comparison modes
82
83 These set the depth function used for comparisons.
84*/
85typedef enum pvr_depthcmp_mode {
86 PVR_DEPTHCMP_NEVER, /**< Never pass */
87 PVR_DEPTHCMP_LESS, /**< Less than */
88 PVR_DEPTHCMP_EQUAL, /**< Equal to */
89 PVR_DEPTHCMP_LEQUAL, /**< Less than or equal to */
90 PVR_DEPTHCMP_GREATER, /**< Greater than */
91 PVR_DEPTHCMP_NOTEQUAL, /**< Not equal to */
92 PVR_DEPTHCMP_GEQUAL, /**< Greater than or equal to */
93 PVR_DEPTHCMP_ALWAYS, /**< Always pass */
95
96/** \brief Texture U/V size */
107
108/** \brief Texture color calculation modes.
109
110 The shading mode specifies how the pixel value used as the "foreground" or
111 "source" for blending is computed.
112
113 Here, "tex" represents the pixel value from the texture, and "col"
114 represents the pixel value from the polygon's color. RGB() represents the
115 color channels, A() represents the alpha channel, and ARGB() represents the
116 whole pixel (color + alpha).
117
118 Note that the offset color (aka. oargb), if specular lighting is enabled,
119 is added to the result. Its alpha channel is ignored.
120*/
121typedef enum pvr_txr_shading_mode {
122 PVR_TXRENV_REPLACE, /**< px = ARGB(tex) */
123 PVR_TXRENV_MODULATE, /**< px = A(tex) + RGB(col) * RGB(tex) */
124 PVR_TXRENV_DECAL, /**< px = A(col) + RGB(tex) * A(tex) + RGB(col) * (1 - A(tex)) */
125 PVR_TXRENV_MODULATEALPHA, /**< px = ARGB(col) * ARGB(tex) */
127
128/** \brief Texture sampling modes */
129typedef enum pvr_filter_mode {
130 PVR_FILTER_NEAREST, /**< No filtering (point sample) */
131 PVR_FILTER_BILINEAR, /**< Bilinear interpolation */
132 PVR_FILTER_TRILINEAR1, /**< Trilinear interpolation pass 1 */
133 PVR_FILTER_TRILINEAR2, /**< Trilinear interpolation pass 2 */
136
137/** \brief Fog modes
138
139 Each polygon can decide what fog type is used by specifying the fog mode
140 in its header.
141*/
142typedef enum pvr_fog_type {
143 PVR_FOG_TABLE, /**< Table fog */
144 PVR_FOG_VERTEX, /**< Vertex fog */
145 PVR_FOG_DISABLE, /**< Disable fog */
146 PVR_FOG_TABLE2, /**< Table fog mode 2 */
148
149/** \brief Blending modes
150
151 These are all the blending modes that can be done with regard to alpha
152 blending on the PVR.
153*/
154typedef enum pvr_blend_mode {
155 PVR_BLEND_ZERO, /**< None of this color */
156 PVR_BLEND_ONE, /**< All of this color */
157 PVR_BLEND_DESTCOLOR, /**< Destination color */
158 PVR_BLEND_INVDESTCOLOR, /**< Inverse of destination color */
159 PVR_BLEND_SRCALPHA, /**< Blend with source alpha */
160 PVR_BLEND_INVSRCALPHA, /**< Blend with inverse source alpha */
161 PVR_BLEND_DESTALPHA, /**< Blend with destination alpha */
162 PVR_BLEND_INVDESTALPHA, /**< Blend with inverse destination alpha */
164
165/** \brief Texture formats
166
167 These are the texture formats that the PVR supports.
168*/
169typedef enum pvr_pixel_mode {
170 PVR_PIXEL_MODE_ARGB1555, /**< 16-bit ARGB1555 */
171 PVR_PIXEL_MODE_RGB565, /**< 16-bit RGB565 */
172 PVR_PIXEL_MODE_ARGB4444, /**< 16-bit ARGB4444 */
173 PVR_PIXEL_MODE_YUV422, /**< YUV422 format */
174 PVR_PIXEL_MODE_BUMP, /**< Bumpmap format */
175 PVR_PIXEL_MODE_PAL_4BPP, /**< 4BPP paletted format */
176 PVR_PIXEL_MODE_PAL_8BPP, /**< 8BPP paletted format */
178
179/** \brief Triangle strip length
180
181 This sets the maximum length of a triangle strip, if not
182 configured in auto mode.
183*/
190
191/** \brief Polygon header type
192
193 This enum contains the possible PVR header types.
194*/
202
203/** \brief Texture address
204
205 This type represents an address of a texture in VRAM,
206 pre-processed to be used in headers.
207*/
209
210/** \brief Get texture address from VRAM address
211
212 This function can be used to get a texture address that can be used
213 in a PVR header from the texture's VRAM address.
214
215 \param addr The texture's address in VRAM
216 \return The pre-processed texture address
217*/
219 return ((uint32_t)addr & (PVR_RAM_SIZE - 1)) >> 3;
220}
221
222/** \brief Get texture address form VRAM address
223
224 Alias macro for to_pvr_txr_ptr().
225*/
226#define pvr_to_pvr_txr_ptr(addr) to_pvr_txr_ptr(addr)
227
228/** \brief PVR header command
229
230 This structure contains all the fields for the command of PVR headers.
231*/
232typedef struct pvr_poly_hdr_cmd {
233 bool uvfmt_f16 :1; /* 0 */ /**< Use 16-bit floating-point U/Vs */
234 bool gouraud :1; /* 1 */ /**< Enable gouraud shading */
235 bool oargb_en :1; /* 2 */ /**< Enable specular lighting */
236 bool txr_en :1; /* 3 */ /**< Enable texturing */
237 pvr_color_fmts_t color_fmt :2; /* 5-4 */ /**< Select color encoding */
238 bool mod_normal :1; /* 6 */ /**< true: normal, false: cheap shadow */
239 bool modifier_en :1; /* 7 */ /**< Enable modifier effects */
240 uint32_t :8; /* 15-8 */
241 pvr_clip_mode_t clip_mode :2; /* 17-16 */ /**< Clipping mode */
242 pvr_strip_len_t strip_len :2; /* 19-18 */ /**< Triangle strips length (if non-auto) */
243 uint32_t :3; /* 22-20 */
244 bool auto_strip_len :1; /* 23 */ /**< Auto select triangle strips length */
245 pvr_list_type_t list_type :3; /* 26-24 */ /**< Render list to use */
246 uint32_t :1; /* 27 */
247 bool strip_end :1; /* 28 */ /**< Mark an end-of-strip */
248 pvr_hdr_type_t hdr_type :3; /* 31-29 */ /**< Header type */
250
251/** \brief PVR header mode1
252
253 This structure contains all the fields for the mode1 parameter of
254 PVR headers.
255*/
256typedef struct pvr_poly_hdr_mode1 {
257 uint32_t :25; /* 24-0 */
258 bool txr_en :1; /* 25 */ /**< Enable texturing (2nd bit) */
259 bool depth_write_dis :1; /* 26 */ /**< Disable depth writes */
260 pvr_cull_mode_t culling :2; /* 28-27 */ /**< Culling mode */
261 pvr_depthcmp_mode_t depth_cmp :3; /* 31-29 */ /**< Depth comparison mode */
263
264/** \brief PVR header mode2
265
266 This structure contains all the fields for the mode2 parameter of
267 PVR headers.
268*/
269typedef struct pvr_poly_hdr_mode2 {
270 pvr_uv_size_t v_size :3; /* 2-0 */ /**< Texture height */
271 pvr_uv_size_t u_size :3; /* 5-3 */ /**< Texture width */
272 pvr_txr_shading_mode_t shading :2; /* 7-6 */ /**< Shading mode */
273 uint32_t mip_bias :4; /* 11-8 */ /**< Bias for mipmaps */
274 bool supersampling :1; /* 12 */ /**< Enable texture supersampling */
275 pvr_filter_mode_t filter_mode :2; /* 14-13 */ /**< Texture filtering mode */
276 bool v_clamp :1; /* 15 */ /**< Clamp V to 1.0 */
277 bool u_clamp :1; /* 16 */ /**< Clamp U to 1.0 */
278 bool v_flip :1; /* 17 */ /**< Flip V after 1.0 */
279 bool u_flip :1; /* 18 */ /**< Flip U after 1.0 */
280 bool txralpha_dis :1; /* 19 */ /**< Disable alpha channel in textures */
281 bool alpha :1; /* 20 */ /**< Enable alpha channel in vertex colors */
282 bool fog_clamp :1; /* 21 */ /**< Enable fog clamping */
283 pvr_fog_type_t fog_type :2; /* 23-22 */ /**< Select fog type */
284 bool blend_dst_acc2 :1; /* 24 */ /**< Blend to the 2nd accumulation buffer */
285 bool blend_src_acc2 :1; /* 25 */ /**< Blend from the 2nd accumulation buffer */
286 pvr_blend_mode_t blend_dst :3; /* 28-26 */ /**< Blend mode for the background */
287 pvr_blend_mode_t blend_src :3; /* 31-29 */ /**< Blend mode for the foreground */
289
290/** \brief PVR header mode3
291
292 This structure contains all the fields for the mode3 parameter of
293 PVR headers.
294*/
295typedef struct pvr_poly_hdr_mode3 {
296 pvr_txr_ptr_t txr_base :25; /* 24-0 */ /**< Pre-processed texture address */
297 bool x32stride :1; /* 25 */ /**< Set if texture stride is multiple of 32 */
298 bool nontwiddled :1; /* 26 */ /**< Set if texture is not twiddled */
299 pvr_pixel_mode_t pixel_mode :3; /* 29-27 */ /**< Select the texture's pixel format */
300 bool vq_en :1; /* 30 */ /**< Set if the texture is VQ encoded */
301 bool mipmap_en :1; /* 31 */ /**< Enable mipmaps */
303
304/** \brief PVR polygon header.
305
306 This structure contains information about how the following polygons should
307 be rendered.
308*/
309typedef __attribute__((aligned(32))) struct pvr_poly_hdr {
310 union {
311 uint32_t cmd; /**< Raw access to cmd param */
312 pvr_poly_hdr_cmd_t m0; /**< command parameters */
313 };
314 union {
315 uint32_t mode1; /**< Raw access to mode1 param */
316 pvr_poly_hdr_mode1_t m1; /**< mode1 parameters */
317 };
318 union {
319 uint32_t mode2; /**< Raw access to mode2 param */
320 uint32_t mode2_0; /**< Legacy name */
321 pvr_poly_hdr_mode2_t m2; /**< mode2 parameters (modifiers: outside volume) */
322 };
323 union {
324 uint32_t mode3; /**< Raw access to mode3 param */
325 uint32_t mode3_0; /**< Legacy name */
326 pvr_poly_hdr_mode3_t m3; /**< mode3 parameters (modifiers: outside volume) */
327 };
328 union {
329 struct {
330 /* Intensity color */
331 float a; /**< Intensity color alpha */
332 float r; /**< Intensity color red */
333 float g; /**< Intensity color green */
334 float b; /**< Intensity color blue */
335 };
336 struct {
337 /* Modifier volume */
338 union {
339 struct {
340 uint32_t mode2_1; /**< Legacy name */
341 uint32_t mode3_1; /**< Legacy name */
342 };
343 struct {
344 pvr_poly_hdr_mode2_t m2; /**< mode2 parameters (modifiers: inside volume) */
345 pvr_poly_hdr_mode3_t m3; /**< mode3 parameters (modifiers: inside volume) */
346 } modifier; /**< Modifier volume parameters */
347 };
348 };
349 struct {
350 /* Sprite */
351 uint32_t argb; /**< 32-bit ARGB vertex color for sprites */
352 uint32_t oargb; /**< 32-bit ARGB specular color for sprites */
353 };
354 struct {
355 /* User clip area */
356 uint32_t start_x; /**< Left (inclusive) border of user clip area */
357 uint32_t start_y; /**< Top (inclusive) border of user clip area */
358 uint32_t end_x; /**< Right (inclusive) border of user clip area */
359 uint32_t end_y; /**< Bottom (inclusive) border of user clip area */
360 };
361 };
363
364_Static_assert(sizeof(pvr_poly_hdr_t) == 32, "Invalid header size");
365
366/** @} */
367
368__END_DECLS
369
370#endif /* __DC_PVR_PVR_HEADER_H */
Various common macros used throughout the codebase.
static uint32_t("Please see purupuru_effect_t for modern equivalent.") PURUPURU_EFFECT2_UINTENSITY(uint8_t x)
Definition purupuru.h:96
#define PVR_RAM_SIZE
RAM size in bytes.
Definition pvr_regs.h:179
static pvr_txr_ptr_t to_pvr_txr_ptr(pvr_ptr_t addr)
Get texture address from VRAM address.
Definition pvr_header.h:218
pvr_txr_shading_mode_t
Texture color calculation modes.
Definition pvr_header.h:121
pvr_uv_size_t
Texture U/V size.
Definition pvr_header.h:97
pvr_pixel_mode_t
Texture formats.
Definition pvr_header.h:169
pvr_filter_mode_t
Texture sampling modes.
Definition pvr_header.h:129
pvr_cull_mode_t
Primitive culling modes.
Definition pvr_header.h:74
pvr_fog_type_t
Fog modes.
Definition pvr_header.h:142
pvr_depthcmp_mode_t
Depth comparison modes.
Definition pvr_header.h:85
pvr_color_fmts_t
Vertex color formats.
Definition pvr_header.h:38
pvr_list_type_t
PVR rendering lists.
Definition pvr_header.h:60
pvr_hdr_type_t
Polygon header type.
Definition pvr_header.h:195
uint32_t pvr_txr_ptr_t
Texture address.
Definition pvr_header.h:208
pvr_strip_len_t
Triangle strip length.
Definition pvr_header.h:184
pvr_blend_mode_t
Blending modes.
Definition pvr_header.h:154
pvr_clip_mode_t
Primitive clipping modes.
Definition pvr_header.h:49
@ PVR_TXRENV_MODULATE
px = A(tex) + RGB(col) * RGB(tex)
Definition pvr_header.h:123
@ PVR_TXRENV_REPLACE
px = ARGB(tex)
Definition pvr_header.h:122
@ PVR_TXRENV_MODULATEALPHA
px = ARGB(col) * ARGB(tex)
Definition pvr_header.h:125
@ PVR_TXRENV_DECAL
px = A(col) + RGB(tex) * A(tex) + RGB(col) * (1 - A(tex))
Definition pvr_header.h:124
@ PVR_UV_SIZE_64
Definition pvr_header.h:101
@ PVR_UV_SIZE_8
Definition pvr_header.h:98
@ PVR_UV_SIZE_1024
Definition pvr_header.h:105
@ PVR_UV_SIZE_128
Definition pvr_header.h:102
@ PVR_UV_SIZE_512
Definition pvr_header.h:104
@ PVR_UV_SIZE_16
Definition pvr_header.h:99
@ PVR_UV_SIZE_256
Definition pvr_header.h:103
@ PVR_UV_SIZE_32
Definition pvr_header.h:100
@ PVR_PIXEL_MODE_YUV422
YUV422 format.
Definition pvr_header.h:173
@ PVR_PIXEL_MODE_PAL_4BPP
4BPP paletted format
Definition pvr_header.h:175
@ PVR_PIXEL_MODE_BUMP
Bumpmap format.
Definition pvr_header.h:174
@ PVR_PIXEL_MODE_RGB565
16-bit RGB565
Definition pvr_header.h:171
@ PVR_PIXEL_MODE_ARGB1555
16-bit ARGB1555
Definition pvr_header.h:170
@ PVR_PIXEL_MODE_PAL_8BPP
8BPP paletted format
Definition pvr_header.h:176
@ PVR_PIXEL_MODE_ARGB4444
16-bit ARGB4444
Definition pvr_header.h:172
@ PVR_FILTER_TRILINEAR2
Trilinear interpolation pass 2.
Definition pvr_header.h:133
@ PVR_FILTER_NONE
Definition pvr_header.h:134
@ PVR_FILTER_BILINEAR
Bilinear interpolation.
Definition pvr_header.h:131
@ PVR_FILTER_NEAREST
No filtering (point sample)
Definition pvr_header.h:130
@ PVR_FILTER_TRILINEAR1
Trilinear interpolation pass 1.
Definition pvr_header.h:132
@ PVR_CULLING_CW
Cull if clockwise.
Definition pvr_header.h:78
@ PVR_CULLING_NONE
Disable culling.
Definition pvr_header.h:75
@ PVR_CULLING_SMALL
Cull if small.
Definition pvr_header.h:76
@ PVR_CULLING_CCW
Cull if counterclockwise.
Definition pvr_header.h:77
@ PVR_FOG_TABLE2
Table fog mode 2.
Definition pvr_header.h:146
@ PVR_FOG_VERTEX
Vertex fog.
Definition pvr_header.h:144
@ PVR_FOG_DISABLE
Disable fog.
Definition pvr_header.h:145
@ PVR_FOG_TABLE
Table fog.
Definition pvr_header.h:143
@ PVR_DEPTHCMP_LESS
Less than.
Definition pvr_header.h:87
@ PVR_DEPTHCMP_GEQUAL
Greater than or equal to.
Definition pvr_header.h:92
@ PVR_DEPTHCMP_GREATER
Greater than.
Definition pvr_header.h:90
@ PVR_DEPTHCMP_LEQUAL
Less than or equal to.
Definition pvr_header.h:89
@ PVR_DEPTHCMP_NOTEQUAL
Not equal to.
Definition pvr_header.h:91
@ PVR_DEPTHCMP_ALWAYS
Always pass.
Definition pvr_header.h:93
@ PVR_DEPTHCMP_EQUAL
Equal to.
Definition pvr_header.h:88
@ PVR_DEPTHCMP_NEVER
Never pass.
Definition pvr_header.h:86
@ PVR_CLRFMT_4FLOATS
4 floating point values
Definition pvr_header.h:40
@ PVR_CLRFMT_INTENSITY_PREV
Use last intensity.
Definition pvr_header.h:42
@ PVR_CLRFMT_INTENSITY
Intensity color.
Definition pvr_header.h:41
@ PVR_CLRFMT_ARGBPACKED
32-bit integer ARGB
Definition pvr_header.h:39
@ PVR_LIST_PT_POLY
Punch-thru polygon list.
Definition pvr_header.h:65
@ PVR_LIST_OP_MOD
Opaque modifier list.
Definition pvr_header.h:62
@ PVR_LIST_OP_POLY
Opaque polygon list.
Definition pvr_header.h:61
@ PVR_LIST_TR_POLY
Translucent polygon list.
Definition pvr_header.h:63
@ PVR_LIST_TR_MOD
Translucent modifier list.
Definition pvr_header.h:64
@ PVR_HDR_EOL
Definition pvr_header.h:196
@ PVR_HDR_OBJECT_LIST_SET
Definition pvr_header.h:198
@ PVR_HDR_SPRITE
Definition pvr_header.h:200
@ PVR_HDR_POLY
Definition pvr_header.h:199
@ PVR_HDR_USERCLIP
Definition pvr_header.h:197
@ PVR_STRIP_LEN_2
Definition pvr_header.h:186
@ PVR_STRIP_LEN_1
Definition pvr_header.h:185
@ PVR_STRIP_LEN_4
Definition pvr_header.h:187
@ PVR_STRIP_LEN_6
Definition pvr_header.h:188
@ PVR_BLEND_DESTCOLOR
Destination color.
Definition pvr_header.h:157
@ PVR_BLEND_DESTALPHA
Blend with destination alpha.
Definition pvr_header.h:161
@ PVR_BLEND_SRCALPHA
Blend with source alpha.
Definition pvr_header.h:159
@ PVR_BLEND_ZERO
None of this color.
Definition pvr_header.h:155
@ PVR_BLEND_ONE
All of this color.
Definition pvr_header.h:156
@ PVR_BLEND_INVSRCALPHA
Blend with inverse source alpha.
Definition pvr_header.h:160
@ PVR_BLEND_INVDESTCOLOR
Inverse of destination color.
Definition pvr_header.h:158
@ PVR_BLEND_INVDESTALPHA
Blend with inverse destination alpha.
Definition pvr_header.h:162
@ PVR_USERCLIP_INSIDE
Enable clipping inside area.
Definition pvr_header.h:51
@ PVR_USERCLIP_OUTSIDE
Enable clipping outside area.
Definition pvr_header.h:52
@ PVR_USERCLIP_DISABLE
Disable clipping.
Definition pvr_header.h:50
void * pvr_ptr_t
PVR texture memory pointer.
Definition pvr_mem.h:45
PVR Driver Registers.
Basic sys/stdio.h file from newlib.
PVR header command.
Definition pvr_header.h:232
bool txr_en
< Enable specular lighting
Definition pvr_header.h:236
bool uvfmt_f16
Definition pvr_header.h:233
bool auto_strip_len
Definition pvr_header.h:244
pvr_hdr_type_t hdr_type
< Mark an end-of-strip
Definition pvr_header.h:248
pvr_strip_len_t strip_len
< Clipping mode
Definition pvr_header.h:242
bool strip_end
Definition pvr_header.h:247
pvr_color_fmts_t color_fmt
< Enable texturing
Definition pvr_header.h:237
bool mod_normal
< Select color encoding
Definition pvr_header.h:238
bool gouraud
< Use 16-bit floating-point U/Vs
Definition pvr_header.h:234
pvr_clip_mode_t clip_mode
Definition pvr_header.h:241
pvr_list_type_t list_type
< Auto select triangle strips length
Definition pvr_header.h:245
bool modifier_en
< true: normal, false: cheap shadow
Definition pvr_header.h:239
bool oargb_en
< Enable gouraud shading
Definition pvr_header.h:235
PVR header mode1.
Definition pvr_header.h:256
bool depth_write_dis
< Enable texturing (2nd bit)
Definition pvr_header.h:259
pvr_depthcmp_mode_t depth_cmp
< Culling mode
Definition pvr_header.h:261
bool txr_en
Definition pvr_header.h:258
pvr_cull_mode_t culling
< Disable depth writes
Definition pvr_header.h:260
PVR header mode2.
Definition pvr_header.h:269
bool txralpha_dis
< Flip U after 1.0
Definition pvr_header.h:280
pvr_txr_shading_mode_t shading
< Texture width
Definition pvr_header.h:272
pvr_filter_mode_t filter_mode
< Enable texture supersampling
Definition pvr_header.h:275
bool fog_clamp
< Enable alpha channel in vertex colors
Definition pvr_header.h:282
pvr_blend_mode_t blend_src
< Blend mode for the background
Definition pvr_header.h:287
uint32_t mip_bias
< Shading mode
Definition pvr_header.h:273
pvr_fog_type_t fog_type
< Enable fog clamping
Definition pvr_header.h:283
bool supersampling
< Bias for mipmaps
Definition pvr_header.h:274
bool v_clamp
< Texture filtering mode
Definition pvr_header.h:276
bool u_clamp
< Clamp V to 1.0
Definition pvr_header.h:277
pvr_uv_size_t u_size
< Texture height
Definition pvr_header.h:271
pvr_uv_size_t v_size
Definition pvr_header.h:270
bool alpha
< Disable alpha channel in textures
Definition pvr_header.h:281
bool blend_dst_acc2
< Select fog type
Definition pvr_header.h:284
pvr_blend_mode_t blend_dst
< Blend from the 2nd accumulation buffer
Definition pvr_header.h:286
bool v_flip
< Clamp U to 1.0
Definition pvr_header.h:278
bool blend_src_acc2
< Blend to the 2nd accumulation buffer
Definition pvr_header.h:285
bool u_flip
< Flip V after 1.0
Definition pvr_header.h:279
PVR header mode3.
Definition pvr_header.h:295
bool vq_en
< Select the texture's pixel format
Definition pvr_header.h:300
bool nontwiddled
< Set if texture stride is multiple of 32
Definition pvr_header.h:298
pvr_pixel_mode_t pixel_mode
< Set if texture is not twiddled
Definition pvr_header.h:299
bool x32stride
< Pre-processed texture address
Definition pvr_header.h:297
pvr_txr_ptr_t txr_base
Definition pvr_header.h:296
bool mipmap_en
< Set if the texture is VQ encoded
Definition pvr_header.h:301
PVR polygon header.
Definition pvr_header.h:309
uint32_t mode3_0
Legacy name.
Definition pvr_header.h:325
uint32_t start_x
Left (inclusive) border of user clip area.
Definition pvr_header.h:356
uint32_t end_y
Bottom (inclusive) border of user clip area.
Definition pvr_header.h:359
uint32_t mode2_0
Legacy name.
Definition pvr_header.h:320
uint32_t cmd
Raw access to cmd param.
Definition pvr_header.h:311
pvr_poly_hdr_mode1_t m1
mode1 parameters
Definition pvr_header.h:316
float b
Intensity color blue.
Definition pvr_header.h:334
uint32_t mode3
Raw access to mode3 param.
Definition pvr_header.h:324
float r
Intensity color red.
Definition pvr_header.h:332
uint32_t mode2_1
Legacy name.
Definition pvr_header.h:340
uint32_t mode1
Raw access to mode1 param.
Definition pvr_header.h:315
uint32_t mode3_1
Legacy name.
Definition pvr_header.h:341
uint32_t mode2
Raw access to mode2 param.
Definition pvr_header.h:319
uint32_t start_y
Top (inclusive) border of user clip area.
Definition pvr_header.h:357
uint32_t end_x
Right (inclusive) border of user clip area.
Definition pvr_header.h:358
float a
Intensity color alpha.
Definition pvr_header.h:331
float g
Intensity color green.
Definition pvr_header.h:333
uint32_t oargb
32-bit ARGB specular color for sprites
Definition pvr_header.h:352
pvr_poly_hdr_mode3_t m3
mode3 parameters (modifiers: outside volume)
Definition pvr_header.h:326
pvr_poly_hdr_mode2_t m2
mode2 parameters (modifiers: outside volume)
Definition pvr_header.h:321
uint32_t argb
32-bit ARGB vertex color for sprites
Definition pvr_header.h:351
pvr_poly_hdr_cmd_t m0
command parameters
Definition pvr_header.h:312