X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu_neon%2Fpsx_gpu%2Fpsx_gpu.h;h=687715a5566fc92b517286ae256b99f7450f8526;hb=8412166f53abb220b85e0aff47924c04724abfa4;hp=0ef957f29be3ed693d14356690ca74869a8f100e;hpb=0b4038f8edd327a3a9a2fbdefbc25ece921bc2ab;p=pcsx_rearmed.git diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu.h b/plugins/gpu_neon/psx_gpu/psx_gpu.h index 0ef957f2..687715a5 100644 --- a/plugins/gpu_neon/psx_gpu/psx_gpu.h +++ b/plugins/gpu_neon/psx_gpu/psx_gpu.h @@ -15,6 +15,14 @@ #ifndef PSX_GPU_H #define PSX_GPU_H +#define MAX_SPANS 512 +#define MAX_BLOCKS 64 +#define MAX_BLOCKS_PER_ROW 128 + +#define SPAN_DATA_BLOCKS_SIZE 32 + +#ifndef __ASSEMBLER__ + #include "vector_types.h" typedef enum @@ -101,12 +109,6 @@ typedef struct vec_8x16u dither_offsets; } block_struct; -#define MAX_SPANS 512 -#define MAX_BLOCKS 64 -#define MAX_BLOCKS_PER_ROW 128 - -#define SPAN_DATA_BLOCKS_SIZE 32 - typedef struct render_block_handler_struct render_block_handler_struct; typedef struct @@ -139,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; @@ -148,6 +148,8 @@ typedef struct u16 *vram_ptr; u16 *vram_out_ptr; + u32 uvrgb_phase; + u16 render_state_base; u16 render_state; @@ -192,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]; @@ -242,7 +244,7 @@ void render_block_move(psx_gpu_struct *psx_gpu, u32 source_x, u32 source_y, void render_triangle(psx_gpu_struct *psx_gpu, vertex_struct *vertexes, u32 flags); void render_sprite(psx_gpu_struct *psx_gpu, s32 x, s32 y, u32 u, u32 v, - s32 width, s32 height, u32 flags, u32 color); + s32 *width, s32 *height, u32 flags, u32 color); void render_line(psx_gpu_struct *gpu, vertex_struct *vertexes, u32 flags, u32 color, int double_resolution); @@ -252,7 +254,8 @@ void update_texture_8bpp_cache(psx_gpu_struct *psx_gpu); void flush_render_block_buffer(psx_gpu_struct *psx_gpu); void initialize_psx_gpu(psx_gpu_struct *psx_gpu, u16 *vram); -u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_command); +u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, + s32 *cpu_cycles_sum_out, s32 *cpu_cycles_last, u32 *last_command); void triangle_benchmark(psx_gpu_struct *psx_gpu); @@ -260,5 +263,5 @@ void compute_all_gradients(psx_gpu_struct * __restrict__ psx_gpu, const vertex_struct * __restrict__ a, const vertex_struct * __restrict__ b, const vertex_struct * __restrict__ c); -#endif - +#endif // __ASSEMBLER__ +#endif // PSX_GPU_H