aboutsummaryrefslogtreecommitdiff
path: root/plugins/gpu_neon
diff options
context:
space:
mode:
authorExophase2011-12-29 16:14:18 +0200
committernotaz2011-12-29 16:14:18 +0200
commitcec398c037bc9c9ec9010dcbed04f2c3ae7d2c61 (patch)
tree5ca418ba96d0dcd6e72e2636353c46dc953a9718 /plugins/gpu_neon
parentf9248bbfa31729f0d902db00269e50f2d03082ba (diff)
downloadpcsx_rearmed-cec398c037bc9c9ec9010dcbed04f2c3ae7d2c61.tar.gz
pcsx_rearmed-cec398c037bc9c9ec9010dcbed04f2c3ae7d2c61.tar.bz2
pcsx_rearmed-cec398c037bc9c9ec9010dcbed04f2c3ae7d2c61.zip
psx_gpu: flush render buffer before move/cppy/fill
Diffstat (limited to 'plugins/gpu_neon')
-rw-r--r--plugins/gpu_neon/psx_gpu/psx_gpu.c2
-rw-r--r--plugins/gpu_neon/psx_gpu/psx_gpu_parse.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu.c b/plugins/gpu_neon/psx_gpu/psx_gpu.c
index cc40748..72c767e 100644
--- a/plugins/gpu_neon/psx_gpu/psx_gpu.c
+++ b/plugins/gpu_neon/psx_gpu/psx_gpu.c
@@ -4319,6 +4319,7 @@ void render_block_fill(psx_gpu_struct *psx_gpu, u32 color, u32 x, u32 y,
if((width == 0) || (height == 0))
return;
+ flush_render_block_buffer(psx_gpu);
invalidate_texture_cache_region(psx_gpu, x, y, x + width - 1, y + height - 1);
#ifndef NEON_BUILD
@@ -4356,6 +4357,7 @@ void render_block_copy(psx_gpu_struct *psx_gpu, u16 *source, u32 x, u32 y,
if((width == 0) || (height == 0))
return;
+ flush_render_block_buffer(psx_gpu);
invalidate_texture_cache_region(psx_gpu, x, y, x + width - 1, y + height - 1);
for(draw_y = 0; draw_y < height; draw_y++)
diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c
index be69f44..7fee2eb 100644
--- a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c
+++ b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c
@@ -553,7 +553,10 @@ void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size)
u32 load_size = load_width * load_height;
command_length += load_size / 2;
-
+
+ if(load_size & 1)
+ command_length++;
+
render_block_copy(psx_gpu, (u16 *)&(list_s16[6]), load_x, load_y,
load_width, load_height, load_width);
break;