diff options
-rw-r--r-- | video/out/vo_gpu_next.c | 10 | ||||
-rw-r--r-- | wscript | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/video/out/vo_gpu_next.c b/video/out/vo_gpu_next.c index a462cdc68a..0760a070ef 100644 --- a/video/out/vo_gpu_next.c +++ b/video/out/vo_gpu_next.c @@ -583,8 +583,14 @@ static void draw_frame(struct vo *vo, struct vo_frame *frame) return; struct pl_swapchain_frame swframe; - if (!pl_swapchain_start_frame(p->sw, &swframe)) + if (!pl_swapchain_start_frame(p->sw, &swframe)) { + // Advance the queue state to the current PTS to discard unused frames + pl_queue_update(p->queue, NULL, &(struct pl_queue_params) { + .pts = frame->current->pts + frame->vsync_offset, + .radius = pl_frame_mix_radius(&p->params), + }); return; + } bool valid = false; p->is_interpolated = false; @@ -616,7 +622,7 @@ static void draw_frame(struct vo *vo, struct vo_frame *frame) tbits->sample_depth = opts->dither_depth; } - struct pl_frame_mix mix = {0}; + struct pl_frame_mix mix; if (frame->current) { // Update queue state struct pl_queue_params qparams = { @@ -741,9 +741,9 @@ video_output_features = [ 'func': check_pkg_config('libplacebo >= 3.104.0'), }, { 'name': 'libplacebo-v4', - 'desc': 'libplacebo v4.157+, needed for vo_gpu_next', + 'desc': 'libplacebo v4.170+, needed for vo_gpu_next', 'deps': 'libplacebo', - 'func': check_preprocessor('libplacebo/config.h', 'PL_API_VER >= 157', + 'func': check_preprocessor('libplacebo/config.h', 'PL_API_VER >= 170', use='libplacebo'), }, { 'name': '--vulkan', |