summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2011-09-13 05:53:42 +0200
committerJakob Bornecrantz <jakob@vmware.com>2011-09-23 00:58:00 +0200
commit51e4a834f89398393fb4c0190c7bf6eb374a530f (patch)
treeb439e7bc62990a8b69b44df8a649e2310b8a5a8f
parentbaaa04467b18736aec3ccb6788e5e929b95e44e7 (diff)
vmwgfx: Be more strict with fb depths when using screen objectsvmwgfx_2_0_branch
Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
-rw-r--r--vmwgfx_kms.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/vmwgfx_kms.c b/vmwgfx_kms.c
index 00110f6..e8eed61 100644
--- a/vmwgfx_kms.c
+++ b/vmwgfx_kms.c
@@ -773,6 +773,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;