20 sizeof(*resp), &resp_phys);
22 memset(resp, 0,
sizeof(*resp));
24 log(
mod,
"Sending GET_DISPLAY_INFO command");
26 (
void*) resp_phys,
sizeof(*resp))
28 log(
mod,
"Failed to send GET_DISPLAY_INFO command");
33 log(
mod,
"Bad response type: 0x%x (expected 0x%x)",
38 log(
mod,
"Display info received:");
39 int enabled_count = 0;
40 for (
int i = 0; i < 16; i++) {
42 log(
mod,
" Scanout %d: %dx%d at (%d,%d)", i,
50 if (enabled_count == 0) {
51 log(
mod,
"No enabled display modes found");
63 sizeof(*
cmd), &cmd_phys);
67 cmd->hdr.fence_id = 0;
80 memset(resp, 0,
sizeof(*resp));
84 (
void*) resp_phys,
sizeof(*resp))
86 log(
mod,
"Failed to create resource");
91 log(
mod,
"Resource create failed: 0x%x", resp->
type);
int virtio_gpu_get_display_info()
int virtio_gpu_create_resource(uint32_t resource_id, uint32_t width, uint32_t height)
int virtio_gpu_send_command(void *cmd, uint32_t cmd_size, void *resp, uint32_t resp_size)
#define log(mod, fmt,...)
void memset(void *ptr, int value, size_t num)
struct virtio_gpu_rect rect
struct virtio_gpu_resp_display_info::virtio_gpu_display_one pmodes[16]
struct virtio_gpu_ctrl_hdr hdr
#define VIRTIO_GPU_RESP_OK_NODATA
#define VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM
#define VIRTIO_GPU_RESP_OK_DISPLAY_INFO
#define VIRTIO_GPU_CMD_GET_DISPLAY_INFO
#define VIRTIO_GPU_CMD_RESOURCE_CREATE_2D