KallistiOS git master
Independent SDK for the Sega Dreamcast
Loading...
Searching...
No Matches
Direct Rendering

API for using direct rendering with the PVR More...

Macros

#define pvr_dr_target(...)
 Obtain the target address for Direct Rendering.
 
#define pvr_dr_commit(addr)
 Commit a primitive written into the Direct Rendering target address.
 

Functions

void pvr_send_to_ta (void *data)
 Upload a 32-byte payload to the Tile Accelerator.
 

Detailed Description

API for using direct rendering with the PVR

Macro Definition Documentation

◆ pvr_dr_commit

#define pvr_dr_commit ( addr)
Value:
sq_flush(addr)
#define sq_flush(dest)
Write-back one Store Queue.
Definition sq.h:113

Commit a primitive written into the Direct Rendering target address.

Parameters
addrThe address returned by pvr_dr_target(), after you have written the primitive to it.

Referenced by do_frame(), render_back_buffer_step1(), render_back_buffer_step2(), render_bouncing_cube(), and render_coords().

◆ pvr_dr_target

#define pvr_dr_target ( ...)
Value:
__builtin_assume_aligned((void *)((pvr_dr_addr ^= 32)), 32)

Obtain the target address for Direct Rendering.

Note that you're not expected to pass any argument. The macro can take arguments for compatibility reasons and will ignore them.

Returns
A write-only destination address where a primitive should be written to get ready to submit it to the TA in DR mode.

Referenced by do_frame(), render_back_buffer_step1(), render_back_buffer_step2(), render_bouncing_cube(), and render_coords().

Function Documentation

◆ pvr_send_to_ta()

void pvr_send_to_ta ( void * data)

Upload a 32-byte payload to the Tile Accelerator.

Upload the given payload to the Tile Accelerator. The difference with the Direct Rendering approach above is that the Store Queues are not used, and therefore can be used for anything else.

Parameters
dataA pointer to the 32-byte payload. The pointer must be aligned to 8 bytes.