drm/armada: Move GEM BO to drm_framebuffer
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: Thierry Reding <treding@nvidia.com> Reviewed-by: Russell King <linux@armlinux.org.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20180330141138.28987-19-daniels@collabora.com
This commit is contained in:
parent
3823da3aeb
commit
ecb8a94785
|
@ -7,30 +7,15 @@
|
|||
*/
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
#include <drm/drm_fb_helper.h>
|
||||
#include <drm/drm_gem_framebuffer_helper.h>
|
||||
#include "armada_drm.h"
|
||||
#include "armada_fb.h"
|
||||
#include "armada_gem.h"
|
||||
#include "armada_hw.h"
|
||||
|
||||
static void armada_fb_destroy(struct drm_framebuffer *fb)
|
||||
{
|
||||
struct armada_framebuffer *dfb = drm_fb_to_armada_fb(fb);
|
||||
|
||||
drm_framebuffer_cleanup(&dfb->fb);
|
||||
drm_gem_object_put_unlocked(&dfb->obj->obj);
|
||||
kfree(dfb);
|
||||
}
|
||||
|
||||
static int armada_fb_create_handle(struct drm_framebuffer *fb,
|
||||
struct drm_file *dfile, unsigned int *handle)
|
||||
{
|
||||
struct armada_framebuffer *dfb = drm_fb_to_armada_fb(fb);
|
||||
return drm_gem_handle_create(dfile, &dfb->obj->obj, handle);
|
||||
}
|
||||
|
||||
static const struct drm_framebuffer_funcs armada_fb_funcs = {
|
||||
.destroy = armada_fb_destroy,
|
||||
.create_handle = armada_fb_create_handle,
|
||||
.destroy = drm_gem_fb_destroy,
|
||||
.create_handle = drm_gem_fb_create_handle,
|
||||
};
|
||||
|
||||
struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
|
||||
|
@ -78,7 +63,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
|
|||
|
||||
dfb->fmt = format;
|
||||
dfb->mod = config;
|
||||
dfb->obj = obj;
|
||||
dfb->fb.obj[0] = &obj->obj;
|
||||
|
||||
drm_helper_mode_fill_fb_struct(dev, &dfb->fb, mode);
|
||||
|
||||
|
|
|
@ -10,13 +10,12 @@
|
|||
|
||||
struct armada_framebuffer {
|
||||
struct drm_framebuffer fb;
|
||||
struct armada_gem_object *obj;
|
||||
uint8_t fmt;
|
||||
uint8_t mod;
|
||||
};
|
||||
#define drm_fb_to_armada_fb(dfb) \
|
||||
container_of(dfb, struct armada_framebuffer, fb)
|
||||
#define drm_fb_obj(fb) drm_fb_to_armada_fb(fb)->obj
|
||||
#define drm_fb_obj(fb) drm_to_armada_gem((fb)->obj[0])
|
||||
|
||||
struct armada_framebuffer *armada_framebuffer_create(struct drm_device *,
|
||||
const struct drm_mode_fb_cmd2 *, struct armada_gem_object *);
|
||||
|
|
Loading…
Reference in a new issue