Go to the source code of this file.
Data Structures | |
struct | cell_command_fragment_ops |
Command to specify per-fragment operations state and generated code. More... | |
struct | cell_command_fragment_program |
Command to send a fragment progra to SPUs. More... | |
struct | cell_command_framebuffer |
Tell SPUs about the framebuffer size, location. More... | |
struct | cell_command_clear_surface |
Clear framebuffer to the given value/color. More... | |
struct | cell_array_info |
Array info used by the vertex shader's vertex puller. More... | |
struct | cell_attribute_fetch_code |
struct | cell_buffer_range |
struct | cell_shader_info |
struct | cell_command_vs |
struct | cell_command_render |
struct | cell_command_release_verts |
struct | cell_command_sampler |
struct | cell_command_texture |
struct | cell_command |
XXX unions don't seem to work. More... | |
struct | cell_init_info |
This is the object passed to spe_create_thread(). More... | |
Defines | |
#define | ASSERT(x) |
Types and tokens which are common to the SPU and PPU code. | |
#define | ASSERT_ALIGN16(ptr) ASSERT((((unsigned long) (ptr)) & 0xf) == 0); |
for sanity checking | |
#define | ROUNDUP4(k) (((k) + 0x3) & ~0x3) |
round up value to next multiple of 4 | |
#define | ROUNDUP8(k) (((k) + 0x7) & ~0x7) |
round up value to next multiple of 8 | |
#define | ROUNDUP16(k) (((k) + 0xf) & ~0xf) |
round up value to next multiple of 16 | |
#define | CELL_MAX_SPUS 6 |
#define | CELL_MAX_SAMPLERS 4 |
#define | TILE_SIZE 32 |
#define | CELL_CMD_OPCODE_MASK 0xff |
The low byte of a mailbox word contains the command opcode. | |
#define | CELL_CMD_EXIT 1 |
#define | CELL_CMD_CLEAR_SURFACE 2 |
#define | CELL_CMD_FINISH 3 |
#define | CELL_CMD_RENDER 4 |
#define | CELL_CMD_BATCH 5 |
#define | CELL_CMD_RELEASE_VERTS 6 |
#define | CELL_CMD_STATE_FRAMEBUFFER 10 |
#define | CELL_CMD_STATE_FRAGMENT_OPS 11 |
#define | CELL_CMD_STATE_SAMPLER 12 |
#define | CELL_CMD_STATE_TEXTURE 13 |
#define | CELL_CMD_STATE_VERTEX_INFO 14 |
#define | CELL_CMD_STATE_VIEWPORT 15 |
#define | CELL_CMD_STATE_UNIFORMS 16 |
#define | CELL_CMD_STATE_VS_ARRAY_INFO 17 |
#define | CELL_CMD_STATE_BIND_VS 18 |
#define | CELL_CMD_STATE_FRAGMENT_PROGRAM 19 |
#define | CELL_CMD_STATE_ATTRIB_FETCH 20 |
#define | CELL_CMD_VS_EXECUTE 22 |
#define | CELL_CMD_FLUSH_BUFFER_RANGE 23 |
#define | CELL_NUM_BUFFERS 4 |
#define | CELL_BUFFER_SIZE (4*1024) |
16KB would be the max | |
#define | CELL_BUFFER_STATUS_FREE 10 |
#define | CELL_BUFFER_STATUS_USED 20 |
#define | CELL_DEBUG_CHECKER (1 << 0) |
#define | CELL_DEBUG_SYNC (1 << 1) |
#define | SPU_MAX_FRAGMENT_OPS_INSTS 64 |
Max instructions for doing per-fragment operations. | |
#define | SPU_MAX_FRAGMENT_PROGRAM_INSTS 128 |
Max instructions for fragment programs. | |
#define | SPU_VERTS_PER_BATCH 64 |
Variables | |
struct cell_command | ALIGN16_ATTRIB |
#define ASSERT | ( | x | ) |
Value:
if (!(x)) { \ ubyte *p = NULL; \ fprintf(stderr, "%s:%d: %s(): assertion %s failed.\n", \ __FILE__, __LINE__, __FUNCTION__, #x); \ *p = 0; \ exit(1); \ }
The standard assert macro doesn't seem to work reliably
#define ASSERT_ALIGN16 | ( | ptr | ) | ASSERT((((unsigned long) (ptr)) & 0xf) == 0); |
#define CELL_CMD_OPCODE_MASK 0xff |
#define ROUNDUP16 | ( | k | ) | (((k) + 0xf) & ~0xf) |
#define ROUNDUP4 | ( | k | ) | (((k) + 0x3) & ~0x3) |
#define ROUNDUP8 | ( | k | ) | (((k) + 0x7) & ~0x7) |
#define SPU_MAX_FRAGMENT_OPS_INSTS 64 |
#define SPU_MAX_FRAGMENT_PROGRAM_INSTS 128 |
struct cell_init_info ALIGN16_ATTRIB |