From: Jakob Bornecrantz <ja...@vmware.com>

Signed-off-by: Jakob Bornecrantz <jakob at vmware.com>
Reviewed-by: Thomas Hellstrom <thellstrom at vmware.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index fdf1fe9..fec8d1b 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -776,6 +776,33 @@ static int vmw_kms_new_framebuffer_dmabuf(struct 
vmw_private *dev_priv,
                return -EINVAL;
        }

+       /* Limited framebuffer color depth support for screen objects */
+       if (dev_priv->sou_priv) {
+               switch (mode_cmd->depth) {
+               case 32:
+               case 24:
+                       /* Only support 32 bpp for 32 and 24 depth fbs */
+                       if (mode_cmd->bpp == 32)
+                               break;
+
+                       DRM_ERROR("Invalid color depth/bbp: %d %d\n",
+                                 mode_cmd->depth, mode_cmd->bpp);
+                       return -EINVAL;
+               case 16:
+               case 15:
+                       /* Only support 16 bpp for 16 and 15 depth fbs */
+                       if (mode_cmd->bpp == 16)
+                               break;
+
+                       DRM_ERROR("Invalid color depth/bbp: %d %d\n",
+                                 mode_cmd->depth, mode_cmd->bpp);
+                       return -EINVAL;
+               default:
+                       DRM_ERROR("Invalid color depth: %d\n", mode_cmd->depth);
+                       return -EINVAL;
+               }
+       }
+
        vfbd = kzalloc(sizeof(*vfbd), GFP_KERNEL);
        if (!vfbd) {
                ret = -ENOMEM;
-- 
1.7.4.4

Reply via email to