Hi Don't apply this patch, I will try and use ioctl directly instead of using xf86's GetFB2.
Based on the reported compile issue with initialising global const for the fbtile patch when using older versions of gcc, I was checking the same using Ubuntu 16.04 setup, and realised that the older xf86drmMode.h in it doesn't provide GetFB2. On Sun, 5 Jul, 2020, 00:51 Lynne, <[email protected]> wrote: > Jul 4, 2020, 14:17 by [email protected]: > > > If user doesnt specify a format_modifier explicitly, then use GetFB2 > > to identify the format_modifier of the framebuffer being grabbed. > > --- > > Changelog | 1 + > > libavdevice/kmsgrab.c | 22 +++++++++++++++++++++- > > 2 files changed, 22 insertions(+), 1 deletion(-) > > > > diff --git a/Changelog b/Changelog > > index a60e7d2eb8..3881587caa 100644 > > --- a/Changelog > > +++ b/Changelog > > @@ -2,6 +2,7 @@ Entries are sorted chronologically from oldest to > youngest within each release, > > releases are sorted from youngest to oldest. > > > > version <next>: > > +- kmsgrab GetFB2 format_modifier, if user doesnt specify > > - AudioToolbox output device > > - MacCaption demuxer > > > > diff --git a/libavdevice/kmsgrab.c b/libavdevice/kmsgrab.c > > index d0de774871..10ed707e60 100644 > > --- a/libavdevice/kmsgrab.c > > +++ b/libavdevice/kmsgrab.c > > @@ -239,6 +239,7 @@ static av_cold int > kmsgrab_read_header(AVFormatContext *avctx) > > drmModePlaneRes *plane_res = NULL; > > drmModePlane *plane = NULL; > > drmModeFB *fb = NULL; > > + drmModeFB2 *fb2 = NULL; > > AVStream *stream; > > int err, i; > > > > @@ -364,6 +365,23 @@ static av_cold int > kmsgrab_read_header(AVFormatContext *avctx) > > goto fail; > > } > > > > + fb2 = drmModeGetFB2(ctx->hwctx->fd, plane->fb_id); > > + if (!fb2) { > > + err = errno; > > + av_log(avctx, AV_LOG_ERROR, "Failed to get " > > + "framebuffer2 %"PRIu32": %s.\n", > > + plane->fb_id, strerror(err)); > > + err = AVERROR(err); > > + goto fail; > > + } > > + > > + av_log(avctx, AV_LOG_INFO, "Template framebuffer2 is %"PRIu32": " > > + "%"PRIu32"x%"PRIu32", pixel_format: 0x%"PRIx32", > format_modifier: 0x%"PRIx64".\n", > > + fb2->fb_id, fb2->width, fb2->height, fb2->pixel_format, > fb2->modifier); > > + > > + if (ctx->drm_format_modifier == DRM_FORMAT_MOD_INVALID) > > + ctx->drm_format_modifier = fb2->modifier; > > + > > stream = avformat_new_stream(avctx, NULL); > > if (!stream) { > > err = AVERROR(ENOMEM); > > @@ -408,6 +426,8 @@ fail: > > drmModeFreePlane(plane); > > if (fb) > > drmModeFreeFB(fb); > > + if (fb2) > > + drmModeFreeFB2(fb2); > > > > return err; > > } > > @@ -433,7 +453,7 @@ static const AVOption options[] = { > > { .i64 = AV_PIX_FMT_BGR0 }, 0, UINT32_MAX, FLAGS }, > > { "format_modifier", "DRM format modifier for framebuffer", > > OFFSET(drm_format_modifier), AV_OPT_TYPE_INT64, > > - { .i64 = DRM_FORMAT_MOD_NONE }, 0, INT64_MAX, FLAGS }, > > + { .i64 = DRM_FORMAT_MOD_INVALID}, 0, INT64_MAX, FLAGS }, > > { "crtc_id", "CRTC ID to define capture source", > > OFFSET(source_crtc), AV_OPT_TYPE_INT64, > > { .i64 = 0 }, 0, UINT32_MAX, FLAGS }, > > -- > > 2.25.1 > > > > _______________________________________________ > > ffmpeg-devel mailing list > > [email protected] > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > [email protected]> with subject "unsubscribe". > > > > This one looks fine to me, but Mark Thompson should check this one too. > > _______________________________________________ > ffmpeg-devel mailing list > [email protected] > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > [email protected] with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
