Lines Matching full:scanout
87 s = &g->parent_obj.scanout[cursor->pos.scanout_id]; in update_cursor()
218 if (get_edid.scanout >= b->conf.max_outputs) { in virtio_gpu_get_edid()
223 trace_virtio_gpu_cmd_get_edid(get_edid.scanout); in virtio_gpu_get_edid()
226 virtio_gpu_base_generate_edid(VIRTIO_GPU_BASE(g), get_edid.scanout, &edid); in virtio_gpu_get_edid()
367 struct virtio_gpu_scanout *scanout = &g->parent_obj.scanout[scanout_id]; in virtio_gpu_disable_scanout() local
370 if (scanout->resource_id == 0) { in virtio_gpu_disable_scanout()
374 res = virtio_gpu_find_resource(g, scanout->resource_id); in virtio_gpu_disable_scanout()
379 dpy_gfx_replace_surface(scanout->con, NULL); in virtio_gpu_disable_scanout()
380 scanout->resource_id = 0; in virtio_gpu_disable_scanout()
381 scanout->ds = NULL; in virtio_gpu_disable_scanout()
382 scanout->width = 0; in virtio_gpu_disable_scanout()
383 scanout->height = 0; in virtio_gpu_disable_scanout()
493 struct virtio_gpu_scanout *scanout; in virtio_gpu_resource_flush() local
512 scanout = &g->parent_obj.scanout[i]; in virtio_gpu_resource_flush()
513 if (scanout->resource_id == res->resource_id && in virtio_gpu_resource_flush()
514 rf.r.x < scanout->x + scanout->width && in virtio_gpu_resource_flush()
515 rf.r.x + rf.r.width >= scanout->x && in virtio_gpu_resource_flush()
516 rf.r.y < scanout->y + scanout->height && in virtio_gpu_resource_flush()
517 rf.r.y + rf.r.height >= scanout->y) { in virtio_gpu_resource_flush()
520 if (console_has_gl(scanout->con)) { in virtio_gpu_resource_flush()
521 dpy_gl_update(scanout->con, 0, 0, scanout->width, in virtio_gpu_resource_flush()
522 scanout->height); in virtio_gpu_resource_flush()
563 scanout = &g->parent_obj.scanout[i]; in virtio_gpu_resource_flush()
565 qemu_rect_init(&rect, scanout->x, scanout->y, in virtio_gpu_resource_flush()
566 scanout->width, scanout->height); in virtio_gpu_resource_flush()
570 qemu_rect_translate(&rect, -scanout->x, -scanout->y); in virtio_gpu_resource_flush()
571 dpy_gfx_update(g->parent_obj.scanout[i].con, in virtio_gpu_resource_flush()
589 struct virtio_gpu_scanout *scanout; in virtio_gpu_update_scanout() local
591 scanout = &g->parent_obj.scanout[scanout_id]; in virtio_gpu_update_scanout()
592 ores = virtio_gpu_find_resource(g, scanout->resource_id); in virtio_gpu_update_scanout()
598 scanout->resource_id = res->resource_id; in virtio_gpu_update_scanout()
599 scanout->x = r->x; in virtio_gpu_update_scanout()
600 scanout->y = r->y; in virtio_gpu_update_scanout()
601 scanout->width = r->width; in virtio_gpu_update_scanout()
602 scanout->height = r->height; in virtio_gpu_update_scanout()
603 scanout->fb = *fb; in virtio_gpu_update_scanout()
613 struct virtio_gpu_scanout *scanout; in virtio_gpu_do_set_scanout() local
616 scanout = &g->parent_obj.scanout[scanout_id]; in virtio_gpu_do_set_scanout()
626 qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout %d bounds for" in virtio_gpu_do_set_scanout()
638 if (console_has_gl(scanout->con)) { in virtio_gpu_do_set_scanout()
653 /* create a surface for this scanout */ in virtio_gpu_do_set_scanout()
654 if ((res->blob && !console_has_gl(scanout->con)) || in virtio_gpu_do_set_scanout()
655 !scanout->ds || in virtio_gpu_do_set_scanout()
656 surface_data(scanout->ds) != data + fb->offset || in virtio_gpu_do_set_scanout()
657 scanout->width != r->width || in virtio_gpu_do_set_scanout()
658 scanout->height != r->height) { in virtio_gpu_do_set_scanout()
671 scanout->ds = qemu_create_displaysurface_pixman(rect); in virtio_gpu_do_set_scanout()
672 qemu_displaysurface_set_share_handle(scanout->ds, res->share_handle, fb->offset); in virtio_gpu_do_set_scanout()
675 dpy_gfx_replace_surface(g->parent_obj.scanout[scanout_id].con, in virtio_gpu_do_set_scanout()
676 scanout->ds); in virtio_gpu_do_set_scanout()
696 qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout id specified %d", in virtio_gpu_set_scanout()
773 qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout id specified %d", in virtio_gpu_set_scanout_blob()
1170 struct VirtIOGPUBase *base = container_of(opaque, VirtIOGPUBase, scanout); in scanout_vmstate_after_v2()
1177 .name = "virtio-gpu-one-scanout",
1213 VMSTATE_STRUCT_VARRAY_UINT32(parent_obj.scanout, struct VirtIOGPU,
1345 /* load & apply scanout state */ in virtio_gpu_load()
1423 struct virtio_gpu_scanout *scanout; in virtio_gpu_post_load() local
1428 scanout = &g->parent_obj.scanout[i]; in virtio_gpu_post_load()
1429 if (!scanout->resource_id) { in virtio_gpu_post_load()
1433 res = virtio_gpu_find_resource(g, scanout->resource_id); in virtio_gpu_post_load()
1438 if (scanout->fb.format != 0) { in virtio_gpu_post_load()
1441 .x = scanout->x, in virtio_gpu_post_load()
1442 .y = scanout->y, in virtio_gpu_post_load()
1443 .width = scanout->width, in virtio_gpu_post_load()
1444 .height = scanout->height in virtio_gpu_post_load()
1447 if (!virtio_gpu_do_set_scanout(g, i, &scanout->fb, res, &r, &error)) { in virtio_gpu_post_load()
1455 scanout->ds = qemu_create_displaysurface_pixman(res->image); in virtio_gpu_post_load()
1456 qemu_displaysurface_set_share_handle(scanout->ds, res->share_handle, 0); in virtio_gpu_post_load()
1457 dpy_gfx_replace_surface(scanout->con, scanout->ds); in virtio_gpu_post_load()
1460 dpy_gfx_update_full(scanout->con); in virtio_gpu_post_load()
1461 if (scanout->cursor.resource_id) { in virtio_gpu_post_load()
1462 update_cursor(g, &scanout->cursor); in virtio_gpu_post_load()
1561 dpy_gfx_replace_surface(g->parent_obj.scanout[i].con, NULL); in virtio_gpu_reset_bh()
1684 DEFINE_PROP_UINT8("x-scanout-vmstate-version", VirtIOGPU, scanout_vmstate_version, 2),