vo_gpu_next: fix resource exhaustion on minimized windows

This required an upstream API change to implement in a way that doesn't
unnecessarily re-push or upload frames that won't be used. I consider
this a big enough bug to justify bumping the minimum version for it.

Closes #9401
This commit is contained in:
Niklas Haas 2021-11-07 11:00:48 +01:00 committed by Niklas Haas
parent f5d545c917
commit ff0864d5f0
2 changed files with 10 additions and 4 deletions

View File

@ -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 = {

View File

@ -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',