diff options
author | Twinaphex | 2018-07-11 10:13:53 +0200 |
---|---|---|
committer | GitHub | 2018-07-11 10:13:53 +0200 |
commit | 229fe6f5478221c6a23054089ba2c446697eeccc (patch) | |
tree | c3dbff7f60476e4fa038df069de0a136ffb13d1d /frontend | |
parent | 5095009a1a893a04af9bb62d8cf4fe54dd97acf0 (diff) | |
parent | 49c61096e871833d8e77397f1d3072b58b943887 (diff) | |
download | pcsx_rearmed-229fe6f5478221c6a23054089ba2c446697eeccc.tar.gz pcsx_rearmed-229fe6f5478221c6a23054089ba2c446697eeccc.tar.bz2 pcsx_rearmed-229fe6f5478221c6a23054089ba2c446697eeccc.zip |
Merge pull request #178 from GTechAlpha/rp_fix_sw_fb
Fix zero-copy (software) buffer
Diffstat (limited to 'frontend')
-rw-r--r-- | frontend/libretro.c | 22 |
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) |