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