gpu_neon: rework buffering to reduce flickering
[pcsx_rearmed.git] / plugins / gpu_neon / psx_gpu / psx_gpu.h
index 4eb622d..da9e342 100644 (file)
@@ -141,8 +141,6 @@ typedef struct
   u32 triangle_color;
   u32 dither_table[4];
 
-  u32 uvrgb_phase;
-
   struct render_block_handler_struct *render_block_handler;
   void *texture_page_ptr;
   void *texture_page_base;
@@ -150,6 +148,8 @@ typedef struct
   u16 *vram_ptr;
   u16 *vram_out_ptr;
 
+  u32 uvrgb_phase;
+
   u16 render_state_base;
   u16 render_state;
 
@@ -194,15 +194,15 @@ typedef struct
   s16 saved_viewport_start_y;
   s16 saved_viewport_end_x;
   s16 saved_viewport_end_y;
-  u8  enhancement_buf_by_x16[64];    // 0-3 specifying which buf
-  u16 enhancement_buf_start[4];      // x pos where buf[n] begins
-
-  u16 enhancement_scanout_x[4];
-  u16 enhancement_scanout_select;
+  struct psx_gpu_scanout {
+    u16 x, y, w, h;
+  } enhancement_scanouts[4];         // 0-3 specifying which buf to use
+  u16 enhancement_scanout_eselect;   // eviction selector
+  u16 enhancement_current_buf;
 
   // Align up to 64 byte boundary to keep the upcoming buffers cache line
   // aligned, also make reachable with single immediate addition
-  u8 reserved_a[142];
+  u8 reserved_a[188 + 9*4 - 9*sizeof(void *)];
 
   // 8KB
   block_struct blocks[MAX_BLOCKS_PER_ROW];