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
clean up switching between dynarec and interpreter
[pcsx_rearmed.git]
/
plugins
/
gpulib
/
vout_pl.c
diff --git
a/plugins/gpulib/vout_pl.c
b/plugins/gpulib/vout_pl.c
index
541b5e0
..
ac55fa7
100644
(file)
--- a/
plugins/gpulib/vout_pl.c
+++ b/
plugins/gpulib/vout_pl.c
@@
-27,8
+27,6
@@
int vout_finish(void)
static void check_mode_change(int force)
{
static void check_mode_change(int force)
{
- static uint32_t old_status;
- static int old_h;
int w = gpu.screen.hres;
int h = gpu.screen.h;
int w_out = w;
int w = gpu.screen.hres;
int h = gpu.screen.h;
int w_out = w;
@@
-36,26
+34,38
@@
static void check_mode_change(int force)
gpu.state.enhancement_active =
gpu.get_enhancement_bufer != NULL && gpu.state.enhancement_enable
gpu.state.enhancement_active =
gpu.get_enhancement_bufer != NULL && gpu.state.enhancement_enable
- && w <= 512 && h <= 256 && !
gpu.status.rgb24
;
+ && w <= 512 && h <= 256 && !
(gpu.status & PSX_GPU_STATUS_RGB24)
;
if (gpu.state.enhancement_active) {
w_out *= 2;
h_out *= 2;
}
if (gpu.state.enhancement_active) {
w_out *= 2;
h_out *= 2;
}
+ gpu.state.downscale_active =
+ gpu.get_downscale_buffer != NULL && gpu.state.downscale_enable
+ && (w >= 512 || h >= 256);
+
+ if (gpu.state.downscale_active) {
+ w_out = w < 512 ? w : 320;
+ h_out = h < 256 ? h : h / 2;
+ }
+
// width|rgb24 change?
// width|rgb24 change?
- if (force || (gpu.status.reg ^ old_status) & ((7<<16)|(1<<21)) || h != old_h)
+ if (force || (gpu.status ^ gpu.state.status_vo_old) & ((7<<16)|(1<<21))
+ || w_out != gpu.state.w_out_old || h_out != gpu.state.h_out_old)
{
{
- old_status = gpu.status.reg;
- old_h = h;
+ gpu.state.status_vo_old = gpu.status;
+ gpu.state.w_out_old = w_out;
+ gpu.state.h_out_old = h_out;
- cbs->pl_vout_set_mode(w_out, h_out, w, h, gpu.status.rgb24 ? 24 : 16);
+ cbs->pl_vout_set_mode(w_out, h_out, w, h,
+ (gpu.status & PSX_GPU_STATUS_RGB24) ? 24 : 16);
}
}
void vout_update(void)
{
}
}
void vout_update(void)
{
- int x = gpu.screen.x
& ~1; // alignment needed by blitter
+ int x = gpu.screen.x
;
int y = gpu.screen.y;
int w = gpu.screen.w;
int h = gpu.screen.h;
int y = gpu.screen.y;
int w = gpu.screen.w;
int h = gpu.screen.h;
@@
-69,6
+79,9
@@
void vout_update(void)
if (gpu.state.enhancement_active)
vram = gpu.get_enhancement_bufer(&x, &y, &w, &h, &vram_h);
if (gpu.state.enhancement_active)
vram = gpu.get_enhancement_bufer(&x, &y, &w, &h, &vram_h);
+ if (gpu.state.downscale_active)
+ vram = gpu.get_downscale_buffer(&x, &y, &w, &h, &vram_h);
+
if (y + h > vram_h) {
if (y + h - vram_h > h / 2) {
// wrap
if (y + h > vram_h) {
if (y + h - vram_h > h / 2) {
// wrap
@@
-82,19
+95,20
@@
void vout_update(void)
vram += y * 1024 + x;
vram += y * 1024 + x;
- cbs->pl_vout_flip(vram, 1024,
gpu.status.rgb24
, w, h);
+ cbs->pl_vout_flip(vram, 1024,
!!(gpu.status & PSX_GPU_STATUS_RGB24)
, w, h);
}
void vout_blank(void)
{
int w = gpu.screen.hres;
int h = gpu.screen.h;
}
void vout_blank(void)
{
int w = gpu.screen.hres;
int h = gpu.screen.h;
+
+ check_mode_change(0);
if (gpu.state.enhancement_active) {
w *= 2;
h *= 2;
}
if (gpu.state.enhancement_active) {
w *= 2;
h *= 2;
}
- check_mode_change(0);
- cbs->pl_vout_flip(NULL, 1024, gpu.status.rgb24, w, h);
+ cbs->pl_vout_flip(NULL, 1024, !!(gpu.status & PSX_GPU_STATUS_RGB24), w, h);
}
long GPUopen(void **unused)
}
long GPUopen(void **unused)