mirror of https://github.com/mpv-player/mpv
drm_prime: fallback to drmModeAddFB2
Fallback to drmModeAddFB2 if drmModeAddFB2WithModifiers fails. I've observed it failing on a pinebook pro running manjaro. We also got "0" as modifiers from FFmpeg anyway, which might or might not have something to do with this. Instead of trying to find the source of the problem, just add this fallback.
This commit is contained in:
parent
6c04eb0508
commit
9dfcc496a5
|
@ -73,10 +73,16 @@ int drm_prime_create_framebuffer(struct mp_log *log, int fd,
|
||||||
modifiers, &framebuffer->fb_id,
|
modifiers, &framebuffer->fb_id,
|
||||||
DRM_MODE_FB_MODIFIERS);
|
DRM_MODE_FB_MODIFIERS);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
mp_err(log, "Failed to create framebuffer on layer %d: %s\n",
|
ret = drmModeAddFB2(fd, width, height, layer->format,
|
||||||
0, mp_strerror(errno));
|
handles, pitches, offsets,
|
||||||
goto fail;
|
&framebuffer->fb_id, 0);
|
||||||
|
if (ret < 0) {
|
||||||
|
mp_err(log, "Failed to create framebuffer with drmModeAddFB2 on layer %d: %s\n",
|
||||||
|
0, mp_strerror(errno));
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int plane = 0; plane < AV_DRM_MAX_PLANES; plane++) {
|
for (int plane = 0; plane < AV_DRM_MAX_PLANES; plane++) {
|
||||||
drm_prime_add_handle_ref(handle_refs, framebuffer->gem_handles[plane]);
|
drm_prime_add_handle_ref(handle_refs, framebuffer->gem_handles[plane]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue