psx_gpu: flush render buffer before move/cppy/fill
authorExophase <exophase@gmail.com>
Thu, 29 Dec 2011 14:14:18 +0000 (16:14 +0200)
committernotaz <notasas@gmail.com>
Thu, 29 Dec 2011 14:14:18 +0000 (16:14 +0200)
plugins/gpu_neon/psx_gpu/psx_gpu.c
plugins/gpu_neon/psx_gpu/psx_gpu_parse.c

index cc40748..72c767e 100644 (file)
@@ -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++)
index be69f44..7fee2eb 100644 (file)
@@ -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;