libdragon
rdp.h
Go to the documentation of this file.
1
6#ifndef __LIBDRAGON_RDP_H
7#define __LIBDRAGON_RDP_H
8
9#include "display.h"
10#include "graphics.h"
11
20typedef enum
21{
31
35typedef enum
36{
46
50typedef enum
51{
57
60#ifdef __cplusplus
61extern "C" {
62#endif
63
64void rdp_init( void );
65void rdp_attach( surface_t* disp );
66void rdp_detach( void );
67void rdp_sync( sync_t sync );
68void rdp_set_clipping( uint32_t tx, uint32_t ty, uint32_t bx, uint32_t by );
69void rdp_set_default_clipping( void );
70void rdp_enable_primitive_fill( void );
71void rdp_enable_blend_fill( void );
72void rdp_enable_texture_copy( void );
73uint32_t rdp_load_texture( uint32_t texslot, uint32_t texloc, mirror_t mirror, sprite_t *sprite );
74uint32_t rdp_load_texture_stride( uint32_t texslot, uint32_t texloc, mirror_t mirror, sprite_t *sprite, int offset );
75void rdp_draw_textured_rectangle( uint32_t texslot, int tx, int ty, int bx, int by, mirror_t mirror );
76void rdp_draw_textured_rectangle_scaled( uint32_t texslot, int tx, int ty, int bx, int by, double x_scale, double y_scale, mirror_t mirror );
77void rdp_draw_sprite( uint32_t texslot, int x, int y , mirror_t mirror);
78void rdp_draw_sprite_scaled( uint32_t texslot, int x, int y, double x_scale, double y_scale, mirror_t mirror);
79void rdp_set_primitive_color( uint32_t color );
80void rdp_set_blend_color( uint32_t color );
81void rdp_draw_filled_rectangle( int tx, int ty, int bx, int by );
82void rdp_draw_filled_triangle( float x1, float y1, float x2, float y2, float x3, float y3 );
83void rdp_set_texture_flush( flush_t flush );
84void rdp_close( void );
85
86__attribute__((deprecated("use rdp_attach instead")))
87static inline void rdp_attach_display( display_context_t disp )
88{
89 rdp_attach(disp);
90}
91
92__attribute__((deprecated("use rdp_detach instead")))
93static inline void rdp_detach_display( void )
94{
95 rdp_detach();
96}
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif
Display Subsystem.
2D Graphics
Sprite structure.
Definition: graphics.h:63
void rdp_draw_filled_rectangle(int tx, int ty, int bx, int by)
Draw a filled rectangle.
Definition: rdp.c:787
void rdp_sync(sync_t sync)
Perform a sync operation.
Definition: rdp.c:343
void rdp_draw_textured_rectangle_scaled(uint32_t texslot, int tx, int ty, int bx, int by, double x_scale, double y_scale, mirror_t mirror)
Draw a textured rectangle with a scaled texture.
Definition: rdp.c:601
void rdp_set_texture_flush(flush_t flush)
Set the flush strategy for texture loads.
Definition: rdp.c:874
uint32_t rdp_load_texture(uint32_t texslot, uint32_t texloc, mirror_t mirror, sprite_t *sprite)
Load a sprite into RDP TMEM.
Definition: rdp.c:521
void rdp_draw_sprite_scaled(uint32_t texslot, int x, int y, double x_scale, double y_scale, mirror_t mirror)
Draw a texture to the screen as a scaled sprite.
Definition: rdp.c:722
mirror_t
Mirror settings for textures.
Definition: rdp.h:21
void rdp_draw_textured_rectangle(uint32_t texslot, int tx, int ty, int bx, int by, mirror_t mirror)
Draw a textured rectangle.
Definition: rdp.c:672
void rdp_set_default_clipping(void)
Set the hardware clipping boundary to the entire screen.
Definition: rdp.c:387
void rdp_detach(void)
Detach the RDP from the current surface, after the RDP will have finished writing to it.
Definition: rdp.c:312
void rdp_draw_sprite(uint32_t texslot, int x, int y, mirror_t mirror)
Draw a texture to the screen as a sprite.
Definition: rdp.c:695
uint32_t rdp_load_texture_stride(uint32_t texslot, uint32_t texloc, mirror_t mirror, sprite_t *sprite, int offset)
Load part of a sprite into RDP TMEM.
Definition: rdp.c:557
void rdp_enable_blend_fill(void)
Enable display of 2D filled (untextured) triangles.
Definition: rdp.c:411
sync_t
RDP sync operations.
Definition: rdp.h:36
void rdp_draw_filled_triangle(float x1, float y1, float x2, float y2, float x3, float y3)
Draw a filled triangle.
Definition: rdp.c:819
void rdp_close(void)
Close the RDP system.
Definition: rdp.c:270
void rdp_enable_texture_copy(void)
Enable display of 2D sprites.
Definition: rdp.c:424
void rdp_enable_primitive_fill(void)
Enable display of 2D filled (untextured) rectangles.
Definition: rdp.c:398
void rdp_set_clipping(uint32_t tx, uint32_t ty, uint32_t bx, uint32_t by)
Set the hardware clipping boundary.
Definition: rdp.c:376
flush_t
Caching strategy for loaded textures.
Definition: rdp.h:51
void rdp_set_primitive_color(uint32_t color)
Set the primitive draw color for subsequent filled primitive operations.
Definition: rdp.c:743
void rdp_init(void)
Initialize the RDP system.
Definition: rdp.c:250
void rdp_attach(surface_t *disp)
Attach the RDP to a surface.
Definition: rdp.c:293
void rdp_set_blend_color(uint32_t color)
Set the blend draw color for subsequent filled primitive operations.
Definition: rdp.c:759
@ MIRROR_X
Enable texture mirroring on x axis.
Definition: rdp.h:25
@ MIRROR_Y
Enable texture mirroring on y axis.
Definition: rdp.h:27
@ MIRROR_XY
Enable texture mirroring on both x & y axis.
Definition: rdp.h:29
@ MIRROR_DISABLED
Disable texture mirroring.
Definition: rdp.h:23
@ SYNC_PIPE
Sync the RDP pipeline.
Definition: rdp.h:40
@ SYNC_LOAD
Block until all texture load operations are complete.
Definition: rdp.h:42
@ SYNC_FULL
Wait for any operation to complete before causing a DP interrupt.
Definition: rdp.h:38
@ SYNC_TILE
Block until all tile operations are complete.
Definition: rdp.h:44
@ FLUSH_STRATEGY_AUTOMATIC
Cache will be flushed on all incoming textures.
Definition: rdp.h:55
@ FLUSH_STRATEGY_NONE
Textures are assumed to be pre-flushed.
Definition: rdp.h:53
A surface buffer for graphics.
Definition: surface.h:134