Message ID | 20180330141138.28987-9-daniels@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Mar 30, 2018 at 03:11:23PM +0100, Daniel Stone wrote: > Since drm_framebuffer can now store GEM objects directly, place them > there rather than in our own subclass. As this makes the framebuffer > create_handle and destroy functions the same as the GEM framebuffer > helper, we can reuse those. > > Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Sean Paul <seanpaul@chromium.org> > Cc: CK Hu <ck.hu@mediatek.com> > Cc: Philipp Zabel <p.zabel@pengutronix.de> > --- > drivers/gpu/drm/mediatek/mtk_drm_fb.c | 38 +++++--------------------------- > drivers/gpu/drm/mediatek/mtk_drm_fb.h | 1 - > drivers/gpu/drm/mediatek/mtk_drm_plane.c | 4 ++-- > 3 files changed, 7 insertions(+), 36 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.c b/drivers/gpu/drm/mediatek/mtk_drm_fb.c > index 0d8d506695f9..f130e37123b5 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.c > @@ -15,6 +15,7 @@ > #include <drm/drm_crtc_helper.h> > #include <drm/drm_fb_helper.h> > #include <drm/drm_gem.h> > +#include <drm/drm_gem_framebuffer_helper.h> > #include <linux/dma-buf.h> > #include <linux/reservation.h> > > @@ -30,42 +31,13 @@ > */ > struct mtk_drm_fb { > struct drm_framebuffer base; > - /* For now we only support a single plane */ > - struct drm_gem_object *gem_obj; > }; > > #define to_mtk_fb(x) container_of(x, struct mtk_drm_fb, base) > > -struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb) > -{ > - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); > - > - return mtk_fb->gem_obj; > -} > - > -static int mtk_drm_fb_create_handle(struct drm_framebuffer *fb, > - struct drm_file *file_priv, > - unsigned int *handle) > -{ > - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); > - > - return drm_gem_handle_create(file_priv, mtk_fb->gem_obj, handle); > -} > - > -static void mtk_drm_fb_destroy(struct drm_framebuffer *fb) > -{ > - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); > - > - drm_framebuffer_cleanup(fb); > - > - drm_gem_object_put_unlocked(mtk_fb->gem_obj); > - > - kfree(mtk_fb); > -} > - > static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { > - .create_handle = mtk_drm_fb_create_handle, > - .destroy = mtk_drm_fb_destroy, > + .create_handle = drm_gem_fb_create_handle, > + .destroy = drm_gem_fb_destroy, > }; > > static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, > @@ -84,7 +56,7 @@ static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, > > drm_helper_mode_fill_fb_struct(dev, &mtk_fb->base, mode); > > - mtk_fb->gem_obj = obj; > + mtk_fb->base.obj[0] = obj; > > ret = drm_framebuffer_init(dev, &mtk_fb->base, &mtk_drm_fb_funcs); > if (ret) { > @@ -110,7 +82,7 @@ int mtk_fb_wait(struct drm_framebuffer *fb) > if (!fb) > return 0; > > - gem = mtk_fb_get_gem_obj(fb); > + gem = fb->obj[0]; > if (!gem || !gem->dma_buf || !gem->dma_buf->resv) > return 0; > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.h b/drivers/gpu/drm/mediatek/mtk_drm_fb.h > index 9b2ae345a4e9..7f976b196a15 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.h > @@ -14,7 +14,6 @@ > #ifndef MTK_DRM_FB_H > #define MTK_DRM_FB_H > > -struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb); > int mtk_fb_wait(struct drm_framebuffer *fb); > struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev, > struct drm_file *file, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > index ac010365d88b..5370f926e63d 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > @@ -95,7 +95,7 @@ static int mtk_plane_atomic_check(struct drm_plane *plane, > if (!fb) > return 0; > > - WARN_ON(!mtk_fb_get_gem_obj(fb)); > + WARN_ON(!fb->obj[0]); > > if (!state->crtc) > return 0; > @@ -124,7 +124,7 @@ static void mtk_plane_atomic_update(struct drm_plane *plane, > if (!crtc || WARN_ON(!fb)) > return; > > - gem = mtk_fb_get_gem_obj(fb); > + gem = fb->obj[0]; > mtk_gem = to_mtk_gem_obj(gem); > addr = mtk_gem->dma_addr; > pitch = fb->pitches[0]; > -- > 2.16.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
On Fri, Mar 30, 2018 at 03:11:23PM +0100, Daniel Stone wrote: > Since drm_framebuffer can now store GEM objects directly, place them > there rather than in our own subclass. As this makes the framebuffer > create_handle and destroy functions the same as the GEM framebuffer > helper, we can reuse those. > > Signed-off-by: Daniel Stone <daniels@collabora.com> > Cc: CK Hu <ck.hu@mediatek.com> > Cc: Philipp Zabel <p.zabel@pengutronix.de> > --- > drivers/gpu/drm/mediatek/mtk_drm_fb.c | 38 +++++--------------------------- > drivers/gpu/drm/mediatek/mtk_drm_fb.h | 1 - > drivers/gpu/drm/mediatek/mtk_drm_plane.c | 4 ++-- > 3 files changed, 7 insertions(+), 36 deletions(-) Reviewed-by: Thierry Reding <treding@nvidia.com>
On Fri, 2018-03-30 at 22:11 +0800, Daniel Stone wrote: > Since drm_framebuffer can now store GEM objects directly, place them > there rather than in our own subclass. As this makes the framebuffer > create_handle and destroy functions the same as the GEM framebuffer > helper, we can reuse those. > Reviewed-by: CK Hu <ck.hu@mediatek.com> > Signed-off-by: Daniel Stone <daniels@collabora.com> > Cc: CK Hu <ck.hu@mediatek.com> > Cc: Philipp Zabel <p.zabel@pengutronix.de> > --- > drivers/gpu/drm/mediatek/mtk_drm_fb.c | 38 +++++--------------------------- > drivers/gpu/drm/mediatek/mtk_drm_fb.h | 1 - > drivers/gpu/drm/mediatek/mtk_drm_plane.c | 4 ++-- > 3 files changed, 7 insertions(+), 36 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.c b/drivers/gpu/drm/mediatek/mtk_drm_fb.c > index 0d8d506695f9..f130e37123b5 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.c > @@ -15,6 +15,7 @@ > #include <drm/drm_crtc_helper.h> > #include <drm/drm_fb_helper.h> > #include <drm/drm_gem.h> > +#include <drm/drm_gem_framebuffer_helper.h> > #include <linux/dma-buf.h> > #include <linux/reservation.h> > > @@ -30,42 +31,13 @@ > */ > struct mtk_drm_fb { > struct drm_framebuffer base; > - /* For now we only support a single plane */ > - struct drm_gem_object *gem_obj; > }; > > #define to_mtk_fb(x) container_of(x, struct mtk_drm_fb, base) > > -struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb) > -{ > - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); > - > - return mtk_fb->gem_obj; > -} > - > -static int mtk_drm_fb_create_handle(struct drm_framebuffer *fb, > - struct drm_file *file_priv, > - unsigned int *handle) > -{ > - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); > - > - return drm_gem_handle_create(file_priv, mtk_fb->gem_obj, handle); > -} > - > -static void mtk_drm_fb_destroy(struct drm_framebuffer *fb) > -{ > - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); > - > - drm_framebuffer_cleanup(fb); > - > - drm_gem_object_put_unlocked(mtk_fb->gem_obj); > - > - kfree(mtk_fb); > -} > - > static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { > - .create_handle = mtk_drm_fb_create_handle, > - .destroy = mtk_drm_fb_destroy, > + .create_handle = drm_gem_fb_create_handle, > + .destroy = drm_gem_fb_destroy, > }; > > static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, > @@ -84,7 +56,7 @@ static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, > > drm_helper_mode_fill_fb_struct(dev, &mtk_fb->base, mode); > > - mtk_fb->gem_obj = obj; > + mtk_fb->base.obj[0] = obj; > > ret = drm_framebuffer_init(dev, &mtk_fb->base, &mtk_drm_fb_funcs); > if (ret) { > @@ -110,7 +82,7 @@ int mtk_fb_wait(struct drm_framebuffer *fb) > if (!fb) > return 0; > > - gem = mtk_fb_get_gem_obj(fb); > + gem = fb->obj[0]; > if (!gem || !gem->dma_buf || !gem->dma_buf->resv) > return 0; > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.h b/drivers/gpu/drm/mediatek/mtk_drm_fb.h > index 9b2ae345a4e9..7f976b196a15 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.h > @@ -14,7 +14,6 @@ > #ifndef MTK_DRM_FB_H > #define MTK_DRM_FB_H > > -struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb); > int mtk_fb_wait(struct drm_framebuffer *fb); > struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev, > struct drm_file *file, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > index ac010365d88b..5370f926e63d 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > @@ -95,7 +95,7 @@ static int mtk_plane_atomic_check(struct drm_plane *plane, > if (!fb) > return 0; > > - WARN_ON(!mtk_fb_get_gem_obj(fb)); > + WARN_ON(!fb->obj[0]); > > if (!state->crtc) > return 0; > @@ -124,7 +124,7 @@ static void mtk_plane_atomic_update(struct drm_plane *plane, > if (!crtc || WARN_ON(!fb)) > return; > > - gem = mtk_fb_get_gem_obj(fb); > + gem = fb->obj[0]; > mtk_gem = to_mtk_gem_obj(gem); > addr = mtk_gem->dma_addr; > pitch = fb->pitches[0];
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.c b/drivers/gpu/drm/mediatek/mtk_drm_fb.c index 0d8d506695f9..f130e37123b5 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.c @@ -15,6 +15,7 @@ #include <drm/drm_crtc_helper.h> #include <drm/drm_fb_helper.h> #include <drm/drm_gem.h> +#include <drm/drm_gem_framebuffer_helper.h> #include <linux/dma-buf.h> #include <linux/reservation.h> @@ -30,42 +31,13 @@ */ struct mtk_drm_fb { struct drm_framebuffer base; - /* For now we only support a single plane */ - struct drm_gem_object *gem_obj; }; #define to_mtk_fb(x) container_of(x, struct mtk_drm_fb, base) -struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb) -{ - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); - - return mtk_fb->gem_obj; -} - -static int mtk_drm_fb_create_handle(struct drm_framebuffer *fb, - struct drm_file *file_priv, - unsigned int *handle) -{ - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); - - return drm_gem_handle_create(file_priv, mtk_fb->gem_obj, handle); -} - -static void mtk_drm_fb_destroy(struct drm_framebuffer *fb) -{ - struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); - - drm_framebuffer_cleanup(fb); - - drm_gem_object_put_unlocked(mtk_fb->gem_obj); - - kfree(mtk_fb); -} - static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { - .create_handle = mtk_drm_fb_create_handle, - .destroy = mtk_drm_fb_destroy, + .create_handle = drm_gem_fb_create_handle, + .destroy = drm_gem_fb_destroy, }; static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, @@ -84,7 +56,7 @@ static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, drm_helper_mode_fill_fb_struct(dev, &mtk_fb->base, mode); - mtk_fb->gem_obj = obj; + mtk_fb->base.obj[0] = obj; ret = drm_framebuffer_init(dev, &mtk_fb->base, &mtk_drm_fb_funcs); if (ret) { @@ -110,7 +82,7 @@ int mtk_fb_wait(struct drm_framebuffer *fb) if (!fb) return 0; - gem = mtk_fb_get_gem_obj(fb); + gem = fb->obj[0]; if (!gem || !gem->dma_buf || !gem->dma_buf->resv) return 0; diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.h b/drivers/gpu/drm/mediatek/mtk_drm_fb.h index 9b2ae345a4e9..7f976b196a15 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.h +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.h @@ -14,7 +14,6 @@ #ifndef MTK_DRM_FB_H #define MTK_DRM_FB_H -struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb); int mtk_fb_wait(struct drm_framebuffer *fb); struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev, struct drm_file *file, diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c index ac010365d88b..5370f926e63d 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c @@ -95,7 +95,7 @@ static int mtk_plane_atomic_check(struct drm_plane *plane, if (!fb) return 0; - WARN_ON(!mtk_fb_get_gem_obj(fb)); + WARN_ON(!fb->obj[0]); if (!state->crtc) return 0; @@ -124,7 +124,7 @@ static void mtk_plane_atomic_update(struct drm_plane *plane, if (!crtc || WARN_ON(!fb)) return; - gem = mtk_fb_get_gem_obj(fb); + gem = fb->obj[0]; mtk_gem = to_mtk_gem_obj(gem); addr = mtk_gem->dma_addr; pitch = fb->pitches[0];
Since drm_framebuffer can now store GEM objects directly, place them there rather than in our own subclass. As this makes the framebuffer create_handle and destroy functions the same as the GEM framebuffer helper, we can reuse those. Signed-off-by: Daniel Stone <daniels@collabora.com> Cc: CK Hu <ck.hu@mediatek.com> Cc: Philipp Zabel <p.zabel@pengutronix.de> --- drivers/gpu/drm/mediatek/mtk_drm_fb.c | 38 +++++--------------------------- drivers/gpu/drm/mediatek/mtk_drm_fb.h | 1 - drivers/gpu/drm/mediatek/mtk_drm_plane.c | 4 ++-- 3 files changed, 7 insertions(+), 36 deletions(-)