drm/vmwgfx: Do not allow invalid bpp's for dumb buffers
Dumb buffers allow a very limited set of formats. Basically everything apart from 1, 2 and 4 is expected to return an error. Make vmwgfx follow those guidelines. This fixes igt's dumb_buffer invalid_bpp test on vmwgfx. Signed-off-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Martin Krastev <krastevm@vmware.com> Reviewed-by: Maaz Mombasawala <mombasawalam@vmware.com> Link: https://patchwork.freedesktop.org/patch/msgid/20221022040236.616490-13-zack@kde.org
This commit is contained in:
parent
9da30cdd6a
commit
1c8d537bbc
@ -807,9 +807,23 @@ int vmw_dumb_create(struct drm_file *file_priv,
|
||||
{
|
||||
struct vmw_private *dev_priv = vmw_priv(dev);
|
||||
struct vmw_buffer_object *vbo;
|
||||
int cpp = DIV_ROUND_UP(args->bpp, 8);
|
||||
int ret;
|
||||
|
||||
args->pitch = args->width * ((args->bpp + 7) / 8);
|
||||
switch (cpp) {
|
||||
case 1: /* DRM_FORMAT_C8 */
|
||||
case 2: /* DRM_FORMAT_RGB565 */
|
||||
case 4: /* DRM_FORMAT_XRGB8888 */
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
* Dumb buffers don't allow anything else.
|
||||
* This is tested via IGT's dumb_buffers
|
||||
*/
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
args->pitch = args->width * cpp;
|
||||
args->size = ALIGN(args->pitch * args->height, PAGE_SIZE);
|
||||
|
||||
ret = vmw_gem_object_create_with_handle(dev_priv, file_priv,
|
||||
|
Loading…
x
Reference in New Issue
Block a user