diff options
author | Jakob Bornecrantz <jakob@vmware.com> | 2011-09-13 05:53:42 +0200 |
---|---|---|
committer | Jakob Bornecrantz <jakob@vmware.com> | 2011-09-23 00:58:00 +0200 |
commit | 51e4a834f89398393fb4c0190c7bf6eb374a530f (patch) | |
tree | b439e7bc62990a8b69b44df8a649e2310b8a5a8f | |
parent | baaa04467b18736aec3ccb6788e5e929b95e44e7 (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.c | 27 |
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; |