[PATCH 02/10] drm/radeon: Improve fbdev object-test helper
Thomas Zimmermann
tzimmermann at suse.de
Thu Mar 16 09:37:30 UTC 2023
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.
Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
---
drivers/gpu/drm/radeon/radeon_fb.c | 16 ++++++++++++----
1 file 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;
}
--
2.39.2
More information about the amd-gfx
mailing list