diff options
author | Thomas Zimmermann <tzimmermann@suse.de> | 2023-03-16 10:37:30 +0100 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2023-03-31 11:18:42 -0400 |
commit | 276f7b4bd52425cd0ae38fd7bf870d94abac6b82 (patch) | |
tree | d0611b1f1aaaa04b8af006d4c855f485251afb12 /drivers/gpu/drm/radeon | |
parent | f04b8af5e9fc42a8e3b26ebf3b8ccf681a064985 (diff) |
drm/radeon: Improve fbdev object-test helper
Look up the framebuffer GEM object in fbdev object test with the
respective helper drm_gem_fb_get_obj(). The look-up helper warns if
no GEM object has been installed. Upcasting types prevents runtime
type checking, so avoid upcast to struct radeon_bo.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/radeon')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_fb.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index bbb0de2196d3..b1700ce8166a 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -35,6 +35,7 @@ #include <drm/drm_fb_helper.h> #include <drm/drm_fourcc.h> #include <drm/drm_framebuffer.h> +#include <drm/drm_gem_framebuffer_helper.h> #include <drm/radeon_drm.h> #include "radeon.h" @@ -366,10 +367,17 @@ void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state) bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj) { - if (!rdev->mode_info.rfbdev) + struct drm_fb_helper *fb_helper = rdev->ddev->fb_helper; + struct drm_gem_object *gobj; + + if (!fb_helper) + return false; + + gobj = drm_gem_fb_get_obj(fb_helper->fb, 0); + if (!gobj) + return false; + if (gobj != &robj->tbo.base) return false; - if (robj == gem_to_radeon_bo(rdev->mode_info.rfbdev->fb.obj[0])) - return true; - return false; + return true; } |