pokeplatinum/include/g3d_pipeline.h
2025-08-23 14:31:51 -07:00

44 lines
1.3 KiB
C

#ifndef POKEPLATINUM_G3D_PIPELINE_H
#define POKEPLATINUM_G3D_PIPELINE_H
#include "constants/heap.h"
typedef struct G3DPipelineBuffers {
enum HeapID heapID;
void *paletteBuffer;
void *textureBuffer;
} G3DPipelineBuffers;
enum VramManagerType {
VRAM_MANAGER_TYPE_LINKED_LIST = 0,
VRAM_MANAGER_TYPE_FRAME,
};
enum TextureVramSize {
TEXTURE_VRAM_SIZE_128K = 1,
TEXTURE_VRAM_SIZE_256K,
TEXTURE_VRAM_SIZE_384K,
TEXTURE_VRAM_SIZE_512K,
};
enum PaletteVramSize {
PALETTE_VRAM_SIZE_16K = 1,
PALETTE_VRAM_SIZE_32K,
PALETTE_VRAM_SIZE_48K,
PALETTE_VRAM_SIZE_64K,
PALETTE_VRAM_SIZE_80K,
PALETTE_VRAM_SIZE_96K,
};
typedef void (*G3DPipelineSetupCallback)(void);
G3DPipelineBuffers *G3DPipeline_InitEx(enum HeapID heapID, enum VramManagerType texVramManagerType, enum TextureVramSize texVramSize, enum VramManagerType plttVramManagerType, enum PaletteVramSize plttVramSize, G3DPipelineSetupCallback cb);
void G3DPipelineBuffers_Free(G3DPipelineBuffers *state);
static inline G3DPipelineBuffers *G3DPipeline_Init(enum HeapID heapID, enum TextureVramSize texVramSize, enum PaletteVramSize plttVramSize, G3DPipelineSetupCallback cb)
{
return G3DPipeline_InitEx(heapID, VRAM_MANAGER_TYPE_LINKED_LIST, texVramSize, VRAM_MANAGER_TYPE_LINKED_LIST, plttVramSize, cb);
}
#endif // POKEPLATINUM_G3D_PIPELINE_H