notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libretro: adjust psxclock description
[pcsx_rearmed.git]
/
plugins
/
gpu_neon
/
psx_gpu
/
psx_gpu.c
diff --git
a/plugins/gpu_neon/psx_gpu/psx_gpu.c
b/plugins/gpu_neon/psx_gpu/psx_gpu.c
index
af24e77
..
b671a75
100644
(file)
--- a/
plugins/gpu_neon/psx_gpu/psx_gpu.c
+++ b/
plugins/gpu_neon/psx_gpu/psx_gpu.c
@@
-15,6
+15,7
@@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
+#include <stddef.h>
#include <string.h>
#include <assert.h>
#include <string.h>
#include <assert.h>
@@
-23,6
+24,7
@@
#include "vector_ops.h"
#endif
#include "psx_gpu_simd.h"
#include "vector_ops.h"
#endif
#include "psx_gpu_simd.h"
+#include "psx_gpu_offsets.h"
#if 0
void dump_r_d(const char *name, void *dump);
#if 0
void dump_r_d(const char *name, void *dump);
@@
-4192,10
+4194,10
@@
render_block_handler_struct render_sprite_block_handlers[] =
void render_sprite(psx_gpu_struct *psx_gpu, s32 x, s32 y, u32 u, u32 v,
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)
{
{
- s32 x_right = x + width - 1;
- s32 y_bottom = y + height - 1;
+ s32 x_right = x +
*
width - 1;
+ s32 y_bottom = y +
*
height - 1;
#ifdef PROFILE
sprites++;
#ifdef PROFILE
sprites++;
@@
-4204,6
+4206,7
@@
void render_sprite(psx_gpu_struct *psx_gpu, s32 x, s32 y, u32 u, u32 v,
if(invalidate_texture_cache_region_viewport(psx_gpu, x, y, x_right,
y_bottom) == 0)
{
if(invalidate_texture_cache_region_viewport(psx_gpu, x, y, x_right,
y_bottom) == 0)
{
+ *width = *height = 0;
return;
}
return;
}
@@
-4212,7
+4215,7
@@
void render_sprite(psx_gpu_struct *psx_gpu, s32 x, s32 y, u32 u, u32 v,
u32 clip = psx_gpu->viewport_start_x - x;
x += clip;
u += clip;
u32 clip = psx_gpu->viewport_start_x - x;
x += clip;
u += clip;
- width -= clip;
+
*
width -= clip;
}
if(y < psx_gpu->viewport_start_y)
}
if(y < psx_gpu->viewport_start_y)
@@
-4220,21
+4223,24
@@
void render_sprite(psx_gpu_struct *psx_gpu, s32 x, s32 y, u32 u, u32 v,
s32 clip = psx_gpu->viewport_start_y - y;
y += clip;
v += clip;
s32 clip = psx_gpu->viewport_start_y - y;
y += clip;
v += clip;
- height -= clip;
+
*
height -= clip;
}
if(x_right > psx_gpu->viewport_end_x)
}
if(x_right > psx_gpu->viewport_end_x)
- width -= x_right - psx_gpu->viewport_end_x;
+
*
width -= x_right - psx_gpu->viewport_end_x;
if(y_bottom > psx_gpu->viewport_end_y)
if(y_bottom > psx_gpu->viewport_end_y)
- height -= y_bottom - psx_gpu->viewport_end_y;
+
*
height -= y_bottom - psx_gpu->viewport_end_y;
- if((width <= 0) || (height <= 0))
+ if((*width <= 0) || (*height <= 0))
+ {
+ *width = *height = 0;
return;
return;
+ }
#ifdef PROFILE
#ifdef PROFILE
- span_pixels +=
width *
height;
- spans += height;
+ span_pixels +=
*width * *
height;
+ spans +=
*
height;
#endif
u32 render_state = flags &
#endif
u32 render_state = flags &
@@
-4271,7
+4277,7
@@
void render_sprite(psx_gpu_struct *psx_gpu, s32 x, s32 y, u32 u, u32 v,
psx_gpu->render_block_handler = render_block_handler;
((setup_sprite_function_type *)render_block_handler->setup_blocks)
psx_gpu->render_block_handler = render_block_handler;
((setup_sprite_function_type *)render_block_handler->setup_blocks)
- (psx_gpu, x, y, u, v,
width,
height, color);
+ (psx_gpu, x, y, u, v,
*width, *
height, color);
}
#define draw_pixel_line_mask_evaluate_yes() \
}
#define draw_pixel_line_mask_evaluate_yes() \
@@
-4582,6
+4588,7
@@
void render_line(psx_gpu_struct *psx_gpu, vertex_struct *vertexes, u32 flags,
if(vertex_a->x >= vertex_b->x)
{
vertex_swap(vertex_a, vertex_b);
if(vertex_a->x >= vertex_b->x)
{
vertex_swap(vertex_a, vertex_b);
+ (void)triangle_winding;
}
x_a = vertex_a->x;
}
x_a = vertex_a->x;
@@
-4888,6
+4895,7
@@
void render_block_fill_enh(psx_gpu_struct *psx_gpu, u32 color, u32 x, u32 y,
}
}
}
}
+#ifndef PCSX
void render_block_copy(psx_gpu_struct *psx_gpu, u16 *source, u32 x, u32 y,
u32 width, u32 height, u32 pitch)
{
void render_block_copy(psx_gpu_struct *psx_gpu, u16 *source, u32 x, u32 y,
u32 width, u32 height, u32 pitch)
{
@@
-4919,7
+4927,7
@@
void render_block_move(psx_gpu_struct *psx_gpu, u32 source_x, u32 source_y,
render_block_copy(psx_gpu, psx_gpu->vram_ptr + source_x + (source_y * 1024),
dest_x, dest_y, width, height, 1024);
}
render_block_copy(psx_gpu, psx_gpu->vram_ptr + source_x + (source_y * 1024),
dest_x, dest_y, width, height, 1024);
}
-
+#endif
void initialize_reciprocal_table(void)
{
void initialize_reciprocal_table(void)
{
@@
-4975,6
+4983,8
@@
void initialize_psx_gpu(psx_gpu_struct *psx_gpu, u16 *vram)
psx_gpu->texture_page_ptr = psx_gpu->vram_ptr;
psx_gpu->clut_ptr = psx_gpu->vram_ptr;
psx_gpu->texture_page_ptr = psx_gpu->vram_ptr;
psx_gpu->clut_ptr = psx_gpu->vram_ptr;
+ psx_gpu->viewport_start_x = psx_gpu->viewport_start_y = 0;
+ psx_gpu->viewport_end_x = psx_gpu->viewport_end_y = 0;
psx_gpu->mask_msb = 0;
psx_gpu->texture_window_x = 0;
psx_gpu->mask_msb = 0;
psx_gpu->texture_window_x = 0;
@@
-5008,6
+5018,9
@@
void initialize_psx_gpu(psx_gpu_struct *psx_gpu, u16 *vram)
psx_gpu->primitive_type = PRIMITIVE_TYPE_UNKNOWN;
psx_gpu->saved_hres = 256;
psx_gpu->primitive_type = PRIMITIVE_TYPE_UNKNOWN;
psx_gpu->saved_hres = 256;
+
+ // check some offset
+ psx_gpu->reserved_a[(offsetof(psx_gpu_struct, blocks) == psx_gpu_blocks_offset) - 1] = 0;
}
u64 get_us(void)
}
u64 get_us(void)