The driver is the last users of the drm_fb_get_bpp_depth() function. It
should ideally be converted to use struct drm_mode_fb_cmd2 instead of
the legacy struct drm_mode_fb_cmd internally, but that will require
broad changes across the code base. As a first step, replace
drm_fb_get_bpp_depth() with drm_format_info() in order to stop exporting
the function to drivers.
The new DRM_ERROR() message comes from the vmw_create_dmabuf_proxy(),
vmw_kms_new_framebuffer_surface() and vmw_kms_new_framebuffer_dmabuf()
functions that currently print an error if the pixel format is
unsupported.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Cc: VMware Graphics <linux-graphics-maintainer at vmware.com>
Cc: Sinclair Yeh <syeh at vmware.com>
Cc: Thomas Hellstrom <thellstrom at vmware.com>

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 55231cce73a0..1a7187f472de 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -980,14 +980,22 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct 
drm_device *dev,
        struct vmw_dma_buffer *bo = NULL;
        struct ttm_base_object *user_obj;
        struct drm_mode_fb_cmd mode_cmd;
+       const struct drm_format_info *info;
        int ret;

+       info = drm_format_info(mode_cmd2->pixel_format);
+       if (!info || !info->depth) {
+               DRM_ERROR("Unsupported framebuffer format %s\n",
+                         drm_get_format_name(mode_cmd2->pixel_format));
+               return ERR_PTR(-EINVAL);
+       }
+
        mode_cmd.width = mode_cmd2->width;
        mode_cmd.height = mode_cmd2->height;
        mode_cmd.pitch = mode_cmd2->pitches[0];
        mode_cmd.handle = mode_cmd2->handles[0];
-       drm_fb_get_bpp_depth(mode_cmd2->pixel_format, &mode_cmd.depth,
-                                   &mode_cmd.bpp);
+       mode_cmd.depth = info->depth;
+       mode_cmd.bpp = info->cpp[0] * 8;

        /**
         * This code should be conditioned on Screen Objects not being used.
-- 
Regards,

Laurent Pinchart

Reply via email to