} screen;
struct {
int x, y, w, h;
- int offset;
- } dma;
+ short int offset, is_read;
+ } dma, dma_start;
int cmd_len;
uint32_t zero;
struct {
uint32_t fb_dirty:1;
+ uint32_t old_interlace:1;
+ uint32_t allow_interlace:2;
uint32_t *frame_count;
uint32_t *hcnt; /* hsync count */
struct {
uint32_t addr;
- uint32_t words;
+ uint32_t cycles;
uint32_t frame;
uint32_t hcnt;
} last_list;
+ uint32_t last_vram_read_frame;
} state;
struct {
- int32_t set:3; /* -1 auto, 0 off, 1 fixed */
+ int32_t set:3; /* -1 auto, 0 off, 1-3 fixed */
+ int32_t cnt:3; /* amount skipped in a row */
uint32_t active:1;
uint32_t allow:1;
uint32_t frame_ready:1;
void do_cmd_list(uint32_t *list, int count);
+struct rearmed_cbs;
+
int renderer_init(void);
void renderer_sync_ecmds(uint32_t * ecmds);
-void renderer_invalidate_caches(int x, int y, int w, int h);
+void renderer_update_caches(int x, int y, int w, int h);
void renderer_flush_queues(void);
+void renderer_set_interlace(int enable, int is_odd);
+void renderer_set_config(const struct rearmed_cbs *config);
-int vout_init(void);
-int vout_finish(void);
+int vout_init(void);
+int vout_finish(void);
+void vout_update(void);
+void vout_set_config(const struct rearmed_cbs *config);
/* listing these here for correct linkage if rasterizer uses c++ */
struct GPUFreeze;
-struct rearmed_cbs;
long GPUinit(void);
long GPUshutdown(void);
void GPUupdateLace(void);
long GPUopen(void **dpy);
long GPUclose(void);
+void GPUvBlank(int is_vblank, int lcf);
void GPUrearmedCallbacks(const struct rearmed_cbs *cbs_);
#ifdef __cplusplus