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
(Android) renamed gte_arm.s to gte_arm.S so it builds on Linux
[pcsx_rearmed.git]
/
plugins
/
gpulib
/
vout_pl.c
diff --git
a/plugins/gpulib/vout_pl.c
b/plugins/gpulib/vout_pl.c
index
91de057
..
0bd1ecf
100644
(file)
--- a/
plugins/gpulib/vout_pl.c
+++ b/
plugins/gpulib/vout_pl.c
@@
-9,6
+9,7
@@
* See the COPYING file in the top-level directory.
*/
* See the COPYING file in the top-level directory.
*/
+#include <string.h>
#include "gpu.h"
#include "cspace.h"
#include "../../frontend/plugin_lib.h"
#include "gpu.h"
#include "cspace.h"
#include "../../frontend/plugin_lib.h"
@@
-36,8
+37,8
@@
static void check_mode_change(void)
{
old_status = gpu.status.reg;
old_h = gpu.screen.h;
{
old_status = gpu.status.reg;
old_h = gpu.screen.h;
- screen_buf = cbs->pl_vout_set_mode(gpu.screen.hres,
-
gpu.screen.h, gpu.status.rgb24
? 24 : 16);
+ screen_buf = cbs->pl_vout_set_mode(gpu.screen.hres,
gpu.screen.h,
+
(gpu.status.rgb24 && !cbs->only_16bpp)
? 24 : 16);
}
}
}
}
@@
-52,29
+53,33
@@
static void blit(void)
int fb_offs, doffs;
uint8_t *dest;
int fb_offs, doffs;
uint8_t *dest;
- fb_offs = y * 1024 + x;
dest = (uint8_t *)screen_buf;
dest = (uint8_t *)screen_buf;
+ if (dest == NULL)
+ return;
+
+ fb_offs = y * 1024 + x;
// only do centering, at least for now
doffs = (stride - w) / 2 & ~1;
if (gpu.status.rgb24)
{
// only do centering, at least for now
doffs = (stride - w) / 2 & ~1;
if (gpu.status.rgb24)
{
-#ifndef MAEMO
- dest += (doffs / 8) * 24;
- for (; h-- > 0; dest += stride * 3, fb_offs += 1024)
- {
- fb_offs &= 1024*512-1;
- bgr888_to_rgb888(dest, vram + fb_offs, w * 3);
+ if (cbs->only_16bpp) {
+ dest += doffs * 2;
+ for (; h-- > 0; dest += stride * 2, fb_offs += 1024)
+ {
+ fb_offs &= 1024*512-1;
+ bgr888_to_rgb565(dest, vram + fb_offs, w * 3);
+ }
}
}
-#else
- dest += doffs * 2;
- for (; h-- > 0; dest += stride * 2, fb_offs += 1024)
- {
- fb_offs &= 1024*512-1;
- bgr888_to_rgb565(dest, vram + fb_offs, w * 3);
+ else {
+ dest += (doffs / 8) * 24;
+ for (; h-- > 0; dest += stride * 3, fb_offs += 1024)
+ {
+ fb_offs &= 1024*512-1;
+ bgr888_to_rgb888(dest, vram + fb_offs, w * 3);
+ }
}
}
-#endif
}
else
{
}
else
{
@@
-98,6
+103,16
@@
void vout_update(void)
blit();
}
blit();
}
+void vout_blank(void)
+{
+ check_mode_change();
+ if (cbs->pl_vout_raw_flip == NULL) {
+ int bytespp = gpu.status.rgb24 ? 3 : 2;
+ memset(screen_buf, 0, gpu.screen.hres * gpu.screen.h * bytespp);
+ screen_buf = cbs->pl_vout_flip();
+ }
+}
+
long GPUopen(void **unused)
{
gpu.frameskip.active = 0;
long GPUopen(void **unused)
{
gpu.frameskip.active = 0;