#ifndef IS_VRAM_H_
|
|
#define IS_VRAM_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#define MAX_XFERS 5
|
|
|
|
typedef enum { XFER_TYPE_ROW, XFER_TYPE_COL } MEM_XFER_TYPE;
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
uint16_t dest;
|
|
const uint8_t *source;
|
|
uint8_t size;
|
|
} mem_xfer_t;
|
|
|
|
extern mem_xfer_t mem_xfer_queue[MAX_XFERS];
|
|
extern uint8_t mem_xfer_queue_size;
|
|
|
|
/**
|
|
* @brief Initialize VRAM engine
|
|
*/
|
|
void vram_init(void);
|
|
|
|
/**
|
|
* @brief Process VRAM memory transfers
|
|
*/
|
|
void vram_update(void);
|
|
|
|
#define vram_enqueue_mem_xfer(_type, _dest, _source, _size) \
|
|
do { \
|
|
mem_xfer_t *node = &mem_xfer_queue[mem_xfer_queue_size++]; \
|
|
node->type = (_type); \
|
|
node->dest = (_dest); \
|
|
node->source = (_source); \
|
|
node->size = (_size); \
|
|
} while (0)
|
|
|
|
#endif
|