aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorGTechAlpha2018-07-10 19:30:00 -0500
committerGTechAlpha2018-07-10 23:36:40 -0500
commit49c61096e871833d8e77397f1d3072b58b943887 (patch)
treec3dbff7f60476e4fa038df069de0a136ffb13d1d /frontend
parent5095009a1a893a04af9bb62d8cf4fe54dd97acf0 (diff)
downloadpcsx_rearmed-49c61096e871833d8e77397f1d3072b58b943887.tar.gz
pcsx_rearmed-49c61096e871833d8e77397f1d3072b58b943887.tar.bz2
pcsx_rearmed-49c61096e871833d8e77397f1d3072b58b943887.zip
Fix zero-copy (software) buffer
Diffstat (limited to 'frontend')
-rw-r--r--frontend/libretro.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/frontend/libretro.c b/frontend/libretro.c
index 708e497..92bf1b9 100644
--- a/frontend/libretro.c
+++ b/frontend/libretro.c
@@ -131,24 +131,26 @@ static void init_memcard(char *mcd_data)
}
}
-static void vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
+static void set_vout_fb()
{
- vout_width = w;
- vout_height = h;
-
struct retro_framebuffer fb = {0};
fb.width = vout_width;
fb.height = vout_height;
fb.access_flags = RETRO_MEMORY_ACCESS_WRITE;
- vout_buf_ptr = vout_buf;
-
if (environ_cb(RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER, &fb) && fb.format == RETRO_PIXEL_FORMAT_RGB565)
- {
- vout_buf_ptr = (uint16_t*)fb.data;
- }
+ vout_buf_ptr = (uint16_t*)fb.data;
+ else
+ vout_buf_ptr = vout_buf;
+}
+static void vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
+{
+ vout_width = w;
+ vout_height = h;
+
+ set_vout_fb();
}
#ifndef FRONTEND_SUPPORTS_RGB565
@@ -1575,6 +1577,8 @@ void retro_run(void)
video_cb((vout_fb_dirty || !vout_can_dupe || !duping_enable) ? vout_buf_ptr : NULL,
vout_width, vout_height, vout_width * 2);
vout_fb_dirty = 0;
+
+ set_vout_fb();
}
static bool try_use_bios(const char *path)