On Thu, Feb 02, 2017 at 11:31:56AM +0100, Maxime Ripard wrote: > From: Xinliang Liu <xinliang....@linaro.org> > > This patch add a config to support to create multi buffer for cma fbdev. > Such as double buffer and triple buffer. > > Cma fbdev is convient to add a legency fbdev. And still many Android > devices use fbdev now and at least double buffer is needed for these > Android devices, so that a buffer flip can be operated. It will need > some time for Android device vendors to abondon legency fbdev. So multi > buffer for fbdev is needed. > > Signed-off-by: Xinliang Liu <xinliang....@linaro.org> > [s.chr...@phytec.de: Picking patch from > https://lkml.org/lkml/2015/9/14/188] > Signed-off-by: Stefan Christ <s.chr...@phytec.de> > Signed-off-by: Maxime Ripard <maxime.rip...@free-electrons.com> > --- > drivers/gpu/drm/Kconfig | 8 ++++++++ > drivers/gpu/drm/drm_fb_cma_helper.c | 8 +++++++- > 2 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index ebfe8404c25f..2ca9bb26a4e4 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -121,6 +121,14 @@ config DRM_KMS_CMA_HELPER > help > Choose this if you need the KMS CMA helper functions > > +config DRM_CMA_FBDEV_BUFFER_NUM > + int "Cma Fbdev Buffer Number" > + depends on DRM_KMS_CMA_HELPER > + default 1 > + help > + Defines the buffer number of cma fbdev. Default is one buffer. > + For double buffer please set to 2 and 3 for triple buffer. > + > source "drivers/gpu/drm/i2c/Kconfig" > > source "drivers/gpu/drm/arm/Kconfig" > diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c > b/drivers/gpu/drm/drm_fb_cma_helper.c > index 81b3558302b5..e3f8b9e720a0 100644 > --- a/drivers/gpu/drm/drm_fb_cma_helper.c > +++ b/drivers/gpu/drm/drm_fb_cma_helper.c > @@ -411,6 +411,12 @@ static void drm_fbdev_cma_defio_fini(struct fb_info *fbi) > kfree(fbi->fbops); > } > > +static int fbdev_num_buffers = CONFIG_DRM_CMA_FBDEV_BUFFER_NUM; > +module_param(fbdev_num_buffers, int, 0444); > +MODULE_PARM_DESC(fbdev_num_buffers, > + "Number of frame buffers to allocate [default=" > + __MODULE_STRING(CONFIG_DRM_CMA_FBDEV_BUFFER_NUM) "]");
Pure bikshed: Should this be an overallocation %? 200 for double-buffering, 100 as the default? Slightly less bikesheddy: Can't we do this in the core helpers somehow? I'd be nice if this is not cma specific. If it's not possible, I'd at least move the symbol to drm_fb_helper.c, and add some kernel-doc around it. That allows any other non-cma driver to at least implement support for this. That also has the benefit of featuring it more prominently, in our docs. Besides these bikesheds/question, looks all reasonable to me. If you can get some more acks would be great, but will merge anyway. -Daniel > + > /* > * For use in a (struct drm_fb_helper_funcs *)->fb_probe callback function > that > * needs custom struct drm_framebuffer_funcs, like dirty() for deferred_io > use. > @@ -437,7 +443,7 @@ int drm_fbdev_cma_create_with_funcs(struct drm_fb_helper > *helper, > bytes_per_pixel = DIV_ROUND_UP(sizes->surface_bpp, 8); > > mode_cmd.width = sizes->surface_width; > - mode_cmd.height = sizes->surface_height; > + mode_cmd.height = sizes->surface_height * fbdev_num_buffers; > mode_cmd.pitches[0] = sizes->surface_width * bytes_per_pixel; > mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, > sizes->surface_depth); > -- > git-series 0.8.11 > _______________________________________________ > dri-devel mailing list > dri-de...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch