mirror of https://github.com/proxmox/mirror_qemu
virtio-gpu: add a pixman helper header
This will allow to share the format conversion function with vhost-user-gpu. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-id: 20190524130946.31736-4-marcandre.lureau@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>master
parent
ad08e67a96
commit
83a7d3c021
|
@ -21,6 +21,7 @@
|
||||||
#include "hw/virtio/virtio.h"
|
#include "hw/virtio/virtio.h"
|
||||||
#include "hw/virtio/virtio-gpu.h"
|
#include "hw/virtio/virtio-gpu.h"
|
||||||
#include "hw/virtio/virtio-gpu-bswap.h"
|
#include "hw/virtio/virtio-gpu-bswap.h"
|
||||||
|
#include "hw/virtio/virtio-gpu-pixman.h"
|
||||||
#include "hw/virtio/virtio-bus.h"
|
#include "hw/virtio/virtio-bus.h"
|
||||||
#include "hw/display/edid.h"
|
#include "hw/display/edid.h"
|
||||||
#include "migration/blocker.h"
|
#include "migration/blocker.h"
|
||||||
|
@ -298,30 +299,6 @@ void virtio_gpu_get_edid(VirtIOGPU *g,
|
||||||
virtio_gpu_ctrl_response(g, cmd, &edid.hdr, sizeof(edid));
|
virtio_gpu_ctrl_response(g, cmd, &edid.hdr, sizeof(edid));
|
||||||
}
|
}
|
||||||
|
|
||||||
static pixman_format_code_t get_pixman_format(uint32_t virtio_gpu_format)
|
|
||||||
{
|
|
||||||
switch (virtio_gpu_format) {
|
|
||||||
case VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM:
|
|
||||||
return PIXMAN_BE_b8g8r8x8;
|
|
||||||
case VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM:
|
|
||||||
return PIXMAN_BE_b8g8r8a8;
|
|
||||||
case VIRTIO_GPU_FORMAT_X8R8G8B8_UNORM:
|
|
||||||
return PIXMAN_BE_x8r8g8b8;
|
|
||||||
case VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM:
|
|
||||||
return PIXMAN_BE_a8r8g8b8;
|
|
||||||
case VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM:
|
|
||||||
return PIXMAN_BE_r8g8b8x8;
|
|
||||||
case VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM:
|
|
||||||
return PIXMAN_BE_r8g8b8a8;
|
|
||||||
case VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM:
|
|
||||||
return PIXMAN_BE_x8b8g8r8;
|
|
||||||
case VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM:
|
|
||||||
return PIXMAN_BE_a8b8g8r8;
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t calc_image_hostmem(pixman_format_code_t pformat,
|
static uint32_t calc_image_hostmem(pixman_format_code_t pformat,
|
||||||
uint32_t width, uint32_t height)
|
uint32_t width, uint32_t height)
|
||||||
{
|
{
|
||||||
|
@ -368,7 +345,7 @@ static void virtio_gpu_resource_create_2d(VirtIOGPU *g,
|
||||||
res->format = c2d.format;
|
res->format = c2d.format;
|
||||||
res->resource_id = c2d.resource_id;
|
res->resource_id = c2d.resource_id;
|
||||||
|
|
||||||
pformat = get_pixman_format(c2d.format);
|
pformat = virtio_gpu_get_pixman_format(c2d.format);
|
||||||
if (!pformat) {
|
if (!pformat) {
|
||||||
qemu_log_mask(LOG_GUEST_ERROR,
|
qemu_log_mask(LOG_GUEST_ERROR,
|
||||||
"%s: host couldn't handle guest format %d\n",
|
"%s: host couldn't handle guest format %d\n",
|
||||||
|
@ -1144,7 +1121,7 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque, size_t size,
|
||||||
res->iov_cnt = qemu_get_be32(f);
|
res->iov_cnt = qemu_get_be32(f);
|
||||||
|
|
||||||
/* allocate */
|
/* allocate */
|
||||||
pformat = get_pixman_format(res->format);
|
pformat = virtio_gpu_get_pixman_format(res->format);
|
||||||
if (!pformat) {
|
if (!pformat) {
|
||||||
g_free(res);
|
g_free(res);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Virtio GPU Device
|
||||||
|
*
|
||||||
|
* Copyright Red Hat, Inc. 2013-2014
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Dave Airlie <airlied@redhat.com>
|
||||||
|
* Gerd Hoffmann <kraxel@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
|
* See the COPYING file in the top-level directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HW_VIRTIO_GPU_PIXMAN_H
|
||||||
|
#define HW_VIRTIO_GPU_PIXMAN_H
|
||||||
|
|
||||||
|
#include "ui/qemu-pixman.h"
|
||||||
|
#include "standard-headers/linux/virtio_gpu.h"
|
||||||
|
|
||||||
|
static inline pixman_format_code_t
|
||||||
|
virtio_gpu_get_pixman_format(uint32_t virtio_gpu_format)
|
||||||
|
{
|
||||||
|
switch (virtio_gpu_format) {
|
||||||
|
case VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM:
|
||||||
|
return PIXMAN_BE_b8g8r8x8;
|
||||||
|
case VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM:
|
||||||
|
return PIXMAN_BE_b8g8r8a8;
|
||||||
|
case VIRTIO_GPU_FORMAT_X8R8G8B8_UNORM:
|
||||||
|
return PIXMAN_BE_x8r8g8b8;
|
||||||
|
case VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM:
|
||||||
|
return PIXMAN_BE_a8r8g8b8;
|
||||||
|
case VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM:
|
||||||
|
return PIXMAN_BE_r8g8b8x8;
|
||||||
|
case VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM:
|
||||||
|
return PIXMAN_BE_r8g8b8a8;
|
||||||
|
case VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM:
|
||||||
|
return PIXMAN_BE_x8b8g8r8;
|
||||||
|
case VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM:
|
||||||
|
return PIXMAN_BE_a8b8g8r8;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue