Revert "drm/virtio: fix DRM_FORMAT_* handling"
This reverts commit 42fd9e6c29.
This restores the standard pixel formats that Android requires of all
GPU implementations.
BUG: 139386555
Change-Id: Ie6e33501c9d9e308a2636547ad3cd9a210d011bd
Test: Booted local build of master with -gpu_mode=drm_virgl
Signed-off-by: Greg Hartman <ghartman@google.com>
This commit is contained in:
parent
b4e6f1a6fc
commit
05aaa5dd43
2 changed files with 47 additions and 6 deletions
|
|
@ -298,10 +298,6 @@ virtio_gpu_user_framebuffer_create(struct drm_device *dev,
|
|||
struct virtio_gpu_framebuffer *virtio_gpu_fb;
|
||||
int ret;
|
||||
|
||||
if (mode_cmd->pixel_format != DRM_FORMAT_HOST_XRGB8888 &&
|
||||
mode_cmd->pixel_format != DRM_FORMAT_HOST_ARGB8888)
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
/* lookup object associated with res handle */
|
||||
obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[0]);
|
||||
if (!obj)
|
||||
|
|
@ -350,7 +346,6 @@ void virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev)
|
|||
int i;
|
||||
|
||||
drm_mode_config_init(vgdev->ddev);
|
||||
vgdev->ddev->mode_config.quirk_addfb_prefer_host_byte_order = true;
|
||||
vgdev->ddev->mode_config.funcs = &virtio_gpu_mode_funcs;
|
||||
vgdev->ddev->mode_config.helper_private = &virtio_mode_config_helpers;
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,14 @@
|
|||
#include "virtgpu_drv.h"
|
||||
|
||||
static const uint32_t virtio_gpu_formats[] = {
|
||||
DRM_FORMAT_HOST_XRGB8888,
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_ARGB8888,
|
||||
DRM_FORMAT_BGRX8888,
|
||||
DRM_FORMAT_BGRA8888,
|
||||
DRM_FORMAT_RGBX8888,
|
||||
DRM_FORMAT_RGBA8888,
|
||||
DRM_FORMAT_XBGR8888,
|
||||
DRM_FORMAT_ABGR8888,
|
||||
};
|
||||
|
||||
static const uint32_t virtio_gpu_cursor_formats[] = {
|
||||
|
|
@ -42,6 +49,32 @@ uint32_t virtio_gpu_translate_format(uint32_t drm_fourcc)
|
|||
uint32_t format;
|
||||
|
||||
switch (drm_fourcc) {
|
||||
#ifdef __BIG_ENDIAN
|
||||
case DRM_FORMAT_XRGB8888:
|
||||
format = VIRTIO_GPU_FORMAT_X8R8G8B8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_ARGB8888:
|
||||
format = VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_BGRX8888:
|
||||
format = VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_BGRA8888:
|
||||
format = VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_RGBX8888:
|
||||
format = VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_RGBA8888:
|
||||
format = VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_XBGR8888:
|
||||
format = VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_ABGR8888:
|
||||
format = VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM;
|
||||
break;
|
||||
#else
|
||||
case DRM_FORMAT_XRGB8888:
|
||||
format = VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM;
|
||||
break;
|
||||
|
|
@ -54,6 +87,19 @@ uint32_t virtio_gpu_translate_format(uint32_t drm_fourcc)
|
|||
case DRM_FORMAT_BGRA8888:
|
||||
format = VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_RGBX8888:
|
||||
format = VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_RGBA8888:
|
||||
format = VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_XBGR8888:
|
||||
format = VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM;
|
||||
break;
|
||||
case DRM_FORMAT_ABGR8888:
|
||||
format = VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
/*
|
||||
* This should not happen, we handle everything listed
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue