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 (merge) --force deps/lightning
[pcsx_rearmed.git]
/
frontend
/
plugin_lib.c
diff --git
a/frontend/plugin_lib.c
b/frontend/plugin_lib.c
index
5ee8604
..
bdf09c7
100644
(file)
--- a/
frontend/plugin_lib.c
+++ b/
frontend/plugin_lib.c
@@
-16,6
+16,7
@@
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
+#include <assert.h>
#include "libpicofe/fonts.h"
#include "libpicofe/input.h"
#include "libpicofe/fonts.h"
#include "libpicofe/input.h"
@@
-118,9
+119,9
@@
static void print_fps(int h, int border)
pl_rearmed_cbs.vsps_cur);
}
pl_rearmed_cbs.vsps_cur);
}
-static void print_cpu_usage(int
w, int h, int border
)
+static void print_cpu_usage(int
x, int h
)
{
{
- hud_printf(pl_vout_buf, pl_vout_w,
pl_vout_w - border
- 28,
+ hud_printf(pl_vout_buf, pl_vout_w,
x
- 28,
h - HUD_HEIGHT, "%3d", pl_rearmed_cbs.cpu_usage);
}
h - HUD_HEIGHT, "%3d", pl_rearmed_cbs.cpu_usage);
}
@@
-154,13
+155,11
@@
static __attribute__((noinline)) void draw_active_chans(int vout_w, int vout_h)
}
}
}
}
-static void print_hud(int
w, int h, int xborder
)
+static void print_hud(int
x, int w, int h
)
{
{
- if (h < 1
6
)
+ if (h < 1
92
)
return;
return;
- if (w < pl_vout_w)
- xborder += (pl_vout_w - w) / 2;
if (h > pl_vout_h)
h = pl_vout_h;
if (h > pl_vout_h)
h = pl_vout_h;
@@
-168,12
+167,12
@@
static void print_hud(int w, int h, int xborder)
draw_active_chans(w, h);
if (hud_msg[0] != 0)
draw_active_chans(w, h);
if (hud_msg[0] != 0)
- print_msg(h, x
border
);
+ print_msg(h, x);
else if (g_opts & OPT_SHOWFPS)
else if (g_opts & OPT_SHOWFPS)
- print_fps(h, x
border
);
+ print_fps(h, x);
if (g_opts & OPT_SHOWCPU)
if (g_opts & OPT_SHOWCPU)
- print_cpu_usage(
w, h, xborder
);
+ print_cpu_usage(
x + w, h
);
}
/* update scaler target size according to user settings */
}
/* update scaler target size according to user settings */
@@
-262,11
+261,7
@@
static void pl_vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
if (pl_rearmed_cbs.only_16bpp)
vout_bpp = 16;
if (pl_rearmed_cbs.only_16bpp)
vout_bpp = 16;
- // don't use very low heights
- if (vout_h < 192) {
- buf_yoffset = (192 - vout_h) / 2;
- vout_h = 192;
- }
+ assert(vout_h >= 192);
pl_vout_scale_w = pl_vout_scale_h = 1;
#ifdef __ARM_NEON__
pl_vout_scale_w = pl_vout_scale_h = 1;
#ifdef __ARM_NEON__
@@
-307,13
+302,15
@@
static void pl_vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
menu_notify_mode_change(pl_vout_w, pl_vout_h, pl_vout_bpp);
}
menu_notify_mode_change(pl_vout_w, pl_vout_h, pl_vout_bpp);
}
-static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h)
+static void pl_vout_flip(const void *vram, int stride, int bgr24,
+ int x, int y, int w, int h, int dims_changed)
{
{
- static int
doffs_old,
clear_counter;
+ static int clear_counter;
unsigned char *dest = pl_vout_buf;
const unsigned short *src = vram;
int dstride = pl_vout_w, h1 = h;
unsigned char *dest = pl_vout_buf;
const unsigned short *src = vram;
int dstride = pl_vout_w, h1 = h;
- int doffs;
+ int h_full = pl_vout_h - pl_vout_yoffset;
+ int xoffs = 0, doffs;
pcnt_start(PCNT_BLIT);
pcnt_start(PCNT_BLIT);
@@
-323,23
+320,26
@@
static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h)
pl_plat_clear();
else
memset(pl_vout_buf, 0,
pl_plat_clear();
else
memset(pl_vout_buf, 0,
- dstride *
pl_vout_h
* pl_vout_bpp / 8);
+ dstride *
h_full
* pl_vout_bpp / 8);
goto out_hud;
}
goto out_hud;
}
- // borders
- doffs = (dstride - w * pl_vout_scale_w) / 2 & ~1;
+ assert(x + w <= pl_vout_w);
+ assert(y + h <= pl_vout_h);
+
+ // offset
+ xoffs = x * pl_vout_scale_w;
+ doffs = xoffs + y * dstride;
- if (d
offs > doffs_ol
d)
+ if (d
ims_change
d)
clear_counter = 2;
clear_counter = 2;
- doffs_old = doffs;
if (clear_counter > 0) {
if (pl_plat_clear)
pl_plat_clear();
else
memset(pl_vout_buf, 0,
if (clear_counter > 0) {
if (pl_plat_clear)
pl_plat_clear();
else
memset(pl_vout_buf, 0,
- dstride *
pl_vout_h
* pl_vout_bpp / 8);
+ dstride *
h_full
* pl_vout_bpp / 8);
clear_counter--;
}
clear_counter--;
}
@@
-401,8
+401,6
@@
static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h)
#endif
else
{
#endif
else
{
- src = (void *)((uintptr_t)src & ~3); // align for the blitter
-
for (; h1-- > 0; dest += dstride * 2, src += stride)
{
bgr555_to_rgb565(dest, src, w * 2);
for (; h1-- > 0; dest += dstride * 2, src += stride)
{
bgr555_to_rgb565(dest, src, w * 2);
@@
-410,7
+408,7
@@
static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h)
}
out_hud:
}
out_hud:
- print_hud(
w * pl_vout_scale_w, h * pl_vout_scale_h, 0
);
+ print_hud(
xoffs, w * pl_vout_scale_w, (y + h) * pl_vout_scale_h
);
out:
pcnt_end(PCNT_BLIT);
out:
pcnt_end(PCNT_BLIT);
@@
-473,7
+471,7
@@
static int dispmode_default(void)
return 1;
}
return 1;
}
-#ifdef
__ARM_NEON__
+#ifdef
BUILTIN_GPU_NEON
static int dispmode_doubleres(void)
{
if (!(pl_rearmed_cbs.gpu_caps & GPU_CAP_SUPPORTS_2X)
static int dispmode_doubleres(void)
{
if (!(pl_rearmed_cbs.gpu_caps & GPU_CAP_SUPPORTS_2X)
@@
-485,7
+483,9
@@
static int dispmode_doubleres(void)
snprintf(hud_msg, sizeof(hud_msg), "double resolution");
return 1;
}
snprintf(hud_msg, sizeof(hud_msg), "double resolution");
return 1;
}
+#endif
+#ifdef __ARM_NEON__
static int dispmode_scale2x(void)
{
if (!resolution_ok(psx_w * 2, psx_h * 2) || psx_bpp != 16)
static int dispmode_scale2x(void)
{
if (!resolution_ok(psx_w * 2, psx_h * 2) || psx_bpp != 16)
@@
-511,8
+511,10
@@
static int dispmode_eagle2x(void)
static int (*dispmode_switchers[])(void) = {
dispmode_default,
static int (*dispmode_switchers[])(void) = {
dispmode_default,
-#ifdef
__ARM_NEON__
+#ifdef
BUILTIN_GPU_NEON
dispmode_doubleres,
dispmode_doubleres,
+#endif
+#ifdef __ARM_NEON__
dispmode_scale2x,
dispmode_eagle2x,
#endif
dispmode_scale2x,
dispmode_eagle2x,
#endif
@@
-595,7
+597,6
@@
static void update_analogs(void)
}
}
}
}
- //printf("%4d %4d %4d %4d\n", in_a1[0], in_a1[1], in_a2[0], in_a2[1]);
}
static void update_input(void)
}
static void update_input(void)
@@
-677,6
+678,7
@@
void pl_frame_limit(void)
hud_msg[0] = 0;
}
tv_old = now;
hud_msg[0] = 0;
}
tv_old = now;
+ //new_dynarec_print_stats();
}
#ifdef PCNT
static int ya_vsync_count;
}
#ifdef PCNT
static int ya_vsync_count;