mirror of https://github.com/mpv-player/mpv
vo_gpu: sync duplicated condition on peak computation
pass_color_map() (in video_shaders.c) and pass_colormanage() (video.c) both duplicate the condition on whether to do peak computation. Peak computation requires a compute shader, so if the duplicated conditions don't match, video_shaders.c will generate a compute shader, but video.c will try to run it as fragment shader. This leads to a "blue screen". This can be reproduced by playing a HDTV video with --target-peak=99. It's not clear how to fix this. Should pass_tone_map() be only invoked if mp_trc_is_hdr() == true (what pass_colormanage() uses to decide whether to enable peak computation), or should pass_colormanage() just tell pass_color_map() to skip peak computation? Decide for the latter, as it's more robust. Even if not correct, at least it gets rid of the blue shit. Fixes: #7149
This commit is contained in:
parent
b2006eeb74
commit
73c3dc0a7b
|
@ -2629,6 +2629,8 @@ static void pass_colormanage(struct gl_video *p, struct mp_colorspace src,
|
||||||
"uint frame_max;"
|
"uint frame_max;"
|
||||||
"uint counter;"
|
"uint counter;"
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
tone_map.compute_peak = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adapt from src to dst as necessary
|
// Adapt from src to dst as necessary
|
||||||
|
|
Loading…
Reference in New Issue