mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 04:20:28 +00:00
Implement support for video_max_swapchain_images setting.
This commit is contained in:
parent
80dc3bec09
commit
2cb9c912f4
@ -302,12 +302,17 @@ static void dispmanx_surface_update(void *data, const void *frame,
|
|||||||
struct dispmanx_video *_dispvars = data;
|
struct dispmanx_video *_dispvars = data;
|
||||||
struct dispmanx_page *page = NULL;
|
struct dispmanx_page *page = NULL;
|
||||||
|
|
||||||
/* Wait until last issued flip completes to get a free page. Also,
|
settings_t *settings = config_get_ptr();
|
||||||
dispmanx doesn't support issuing more than one pageflip.*/
|
|
||||||
slock_lock(_dispvars->pending_mutex);
|
if (settings->video.max_swapchain_images >= 3)
|
||||||
if (_dispvars->pageflip_pending > 0)
|
{
|
||||||
scond_wait(_dispvars->vsync_condition, _dispvars->pending_mutex);
|
/* Wait until last issued flip completes to get a free page. Also,
|
||||||
slock_unlock(_dispvars->pending_mutex);
|
* dispmanx doesn't support issuing more than one pageflip. */
|
||||||
|
slock_lock(_dispvars->pending_mutex);
|
||||||
|
if (_dispvars->pageflip_pending > 0)
|
||||||
|
scond_wait(_dispvars->vsync_condition, _dispvars->pending_mutex);
|
||||||
|
slock_unlock(_dispvars->pending_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
page = dispmanx_get_free_page(_dispvars, surface);
|
page = dispmanx_get_free_page(_dispvars, surface);
|
||||||
|
|
||||||
@ -326,6 +331,17 @@ static void dispmanx_surface_update(void *data, const void *frame,
|
|||||||
slock_lock(_dispvars->pending_mutex);
|
slock_lock(_dispvars->pending_mutex);
|
||||||
_dispvars->pageflip_pending++;
|
_dispvars->pageflip_pending++;
|
||||||
slock_unlock(_dispvars->pending_mutex);
|
slock_unlock(_dispvars->pending_mutex);
|
||||||
|
|
||||||
|
if (settings->video.max_swapchain_images <= 2)
|
||||||
|
{
|
||||||
|
/* Wait for page flip before continuing, i.e. do not allow core to run
|
||||||
|
* ahead. This reduces input lag, but is less forgiving performance-
|
||||||
|
* wise. */
|
||||||
|
slock_lock(_dispvars->pending_mutex);
|
||||||
|
if (_dispvars->pageflip_pending > 0)
|
||||||
|
scond_wait(_dispvars->vsync_condition, _dispvars->pending_mutex);
|
||||||
|
slock_unlock(_dispvars->pending_mutex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable/disable bilinear filtering. */
|
/* Enable/disable bilinear filtering. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user