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
git subrepo pull --force deps/lightrec
[pcsx_rearmed.git]
/
plugins
/
gpulib
/
vout_pl.c
diff --git
a/plugins/gpulib/vout_pl.c
b/plugins/gpulib/vout_pl.c
index
5af0762
..
064b349
100644
(file)
--- a/
plugins/gpulib/vout_pl.c
+++ b/
plugins/gpulib/vout_pl.c
@@
-11,7
+11,6
@@
#include <string.h>
#include "gpu.h"
#include <string.h>
#include "gpu.h"
-#include "cspace.h"
#include "../../frontend/plugin_lib.h"
static const struct rearmed_cbs *cbs;
#include "../../frontend/plugin_lib.h"
static const struct rearmed_cbs *cbs;
@@
-44,20
+43,28
@@
static void check_mode_change(int force)
h_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?
if (force || (gpu.status.reg ^ old_status) & ((7<<16)|(1<<21)) || h != old_h)
{
old_status = gpu.status.reg;
old_h = h;
// width|rgb24 change?
if (force || (gpu.status.reg ^ old_status) & ((7<<16)|(1<<21)) || h != old_h)
{
old_status = gpu.status.reg;
old_h = h;
- cbs->pl_vout_set_mode(w_out, h_out, w, h,
- (gpu.status.rgb24 && !cbs->only_16bpp) ? 24 : 16);
+ cbs->pl_vout_set_mode(w_out, h_out, w, h, 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;
@@
-71,6
+78,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
@@
-91,11
+101,12
@@
void vout_blank(void)
{
int w = gpu.screen.hres;
int h = gpu.screen.h;
{
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.rgb24, w, h);
}