psx_gpu: switch enhancement to 2048 width
[pcsx_rearmed.git] / plugins / gpu_neon / psx_gpu / psx_gpu.h
index 4605c39..71b99cd 100644 (file)
@@ -56,8 +56,9 @@ typedef enum
 typedef enum
 {
   RENDER_INTERLACE_ENABLED     = 0x1,
-  RENDER_INTERLACE_ODD         = 0x2
-} render_interlace_enum;
+  RENDER_INTERLACE_ODD         = 0x2,
+  RENDER_DOUBLE_MODE           = 0x4,
+} render_mode_enum;
 
 typedef struct
 {
@@ -122,7 +123,7 @@ typedef struct
   vec_4x32u g_block_span;
   vec_4x32u b_block_span;
 
-  // 72 bytes
+  // 76 bytes
   u32 b;
   u32 b_dy;
 
@@ -143,6 +144,7 @@ typedef struct
   void *texture_page_base;
   u16 *clut_ptr;
   u16 *vram_ptr;
+  u16 *vram_out_ptr;
 
   // 26 bytes
   u16 render_state_base;
@@ -178,11 +180,18 @@ typedef struct
   u8 texture_window_y;
 
   u8 primitive_type;
-  u8 interlace_mode;
+  u8 render_mode;
+
+  // enhancement stuff
+  u16 *enhancement_buf_ptr;
+  s16 saved_viewport_start_x;
+  s16 saved_viewport_start_y;
+  s16 saved_viewport_end_x;
+  s16 saved_viewport_end_y;
 
   // Align up to 64 byte boundary to keep the upcoming buffers cache line
-  // aligned
-  //u8 reserved_a[0];
+  // aligned, also make reachable with single immediate addition
+  u8 reserved_a[240];
 
   // 8KB
   block_struct blocks[MAX_BLOCKS_PER_ROW];
@@ -231,7 +240,7 @@ u32 texture_region_mask(s32 x1, s32 y1, s32 x2, s32 y2);
 void flush_render_block_buffer(psx_gpu_struct *psx_gpu);
 
 void initialize_psx_gpu(psx_gpu_struct *psx_gpu, u16 *vram);
-void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size);
+u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_command);
 
 void triangle_benchmark(psx_gpu_struct *psx_gpu);