Lines Matching full:g
33 virtio_gpu_virgl_find_resource(VirtIOGPU *g, uint32_t resource_id) in virtio_gpu_virgl_find_resource() argument
37 res = virtio_gpu_find_resource(g, resource_id); in virtio_gpu_virgl_find_resource()
56 struct VirtIOGPU *g; member
68 VirtIOGPU *g = opaque; in virtio_gpu_virgl_resume_cmdq_bh() local
70 virtio_gpu_process_cmdq(g); in virtio_gpu_virgl_resume_cmdq_bh()
83 b = VIRTIO_GPU_BASE(vmr->g); in virtio_gpu_virgl_hostmem_region_free()
91 gl = VIRTIO_GPU_GL(vmr->g); in virtio_gpu_virgl_hostmem_region_free()
96 virtio_gpu_virgl_map_resource_blob(VirtIOGPU *g, in virtio_gpu_virgl_map_resource_blob() argument
101 VirtIOGPUBase *b = VIRTIO_GPU_BASE(g); in virtio_gpu_virgl_map_resource_blob()
120 vmr->g = g; in virtio_gpu_virgl_map_resource_blob()
141 virtio_gpu_virgl_unmap_resource_blob(VirtIOGPU *g, in virtio_gpu_virgl_unmap_resource_blob() argument
146 VirtIOGPUBase *b = VIRTIO_GPU_BASE(g); in virtio_gpu_virgl_unmap_resource_blob()
192 static void virgl_cmd_create_resource_2d(VirtIOGPU *g, in virgl_cmd_create_resource_2d() argument
210 res = virtio_gpu_virgl_find_resource(g, c2d.resource_id); in virgl_cmd_create_resource_2d()
224 QTAILQ_INSERT_HEAD(&g->reslist, &res->base, next); in virgl_cmd_create_resource_2d()
240 static void virgl_cmd_create_resource_3d(VirtIOGPU *g, in virgl_cmd_create_resource_3d() argument
258 res = virtio_gpu_virgl_find_resource(g, c3d.resource_id); in virgl_cmd_create_resource_3d()
272 QTAILQ_INSERT_HEAD(&g->reslist, &res->base, next); in virgl_cmd_create_resource_3d()
288 static void virgl_cmd_resource_unref(VirtIOGPU *g, in virgl_cmd_resource_unref() argument
300 res = virtio_gpu_virgl_find_resource(g, unref.resource_id); in virgl_cmd_resource_unref()
309 if (virtio_gpu_virgl_unmap_resource_blob(g, res, cmd_suspended)) { in virgl_cmd_resource_unref()
322 virtio_gpu_cleanup_mapping_iov(g, res_iovs, num_iovs); in virgl_cmd_resource_unref()
326 QTAILQ_REMOVE(&g->reslist, &res->base, next); in virgl_cmd_resource_unref()
331 static void virgl_cmd_context_create(VirtIOGPU *g, in virgl_cmd_context_create() argument
341 if (!virtio_gpu_context_init_enabled(g->parent_obj.conf)) { in virgl_cmd_context_create()
360 static void virgl_cmd_context_destroy(VirtIOGPU *g, in virgl_cmd_context_destroy() argument
371 static void virtio_gpu_rect_update(VirtIOGPU *g, int idx, int x, int y, in virtio_gpu_rect_update() argument
374 if (!g->parent_obj.scanout[idx].con) { in virtio_gpu_rect_update()
378 dpy_gl_update(g->parent_obj.scanout[idx].con, x, y, width, height); in virtio_gpu_rect_update()
381 static void virgl_cmd_resource_flush(VirtIOGPU *g, in virgl_cmd_resource_flush() argument
391 for (i = 0; i < g->parent_obj.conf.max_outputs; i++) { in virgl_cmd_resource_flush()
392 if (g->parent_obj.scanout[i].resource_id != rf.resource_id) { in virgl_cmd_resource_flush()
395 virtio_gpu_rect_update(g, i, rf.r.x, rf.r.y, rf.r.width, rf.r.height); in virgl_cmd_resource_flush()
399 static void virgl_cmd_set_scanout(VirtIOGPU *g, in virgl_cmd_set_scanout() argument
409 if (ss.scanout_id >= g->parent_obj.conf.max_outputs) { in virgl_cmd_set_scanout()
415 g->parent_obj.enable = 1; in virgl_cmd_set_scanout()
438 qemu_console_resize(g->parent_obj.scanout[ss.scanout_id].con, in virgl_cmd_set_scanout()
442 g->parent_obj.scanout[ss.scanout_id].con, info.tex_id, in virgl_cmd_set_scanout()
449 g->parent_obj.scanout[ss.scanout_id].con, NULL); in virgl_cmd_set_scanout()
450 dpy_gl_scanout_disable(g->parent_obj.scanout[ss.scanout_id].con); in virgl_cmd_set_scanout()
452 g->parent_obj.scanout[ss.scanout_id].resource_id = ss.resource_id; in virgl_cmd_set_scanout()
455 static void virgl_cmd_submit_3d(VirtIOGPU *g, in virgl_cmd_submit_3d() argument
475 if (virtio_gpu_stats_enabled(g->parent_obj.conf)) { in virgl_cmd_submit_3d()
476 g->stats.req_3d++; in virgl_cmd_submit_3d()
477 g->stats.bytes_3d += cs.size; in virgl_cmd_submit_3d()
486 static void virgl_cmd_transfer_to_host_2d(VirtIOGPU *g, in virgl_cmd_transfer_to_host_2d() argument
511 static void virgl_cmd_transfer_to_host_3d(VirtIOGPU *g, in virgl_cmd_transfer_to_host_3d() argument
529 virgl_cmd_transfer_from_host_3d(VirtIOGPU *g, in virgl_cmd_transfer_from_host_3d() argument
547 static void virgl_resource_attach_backing(VirtIOGPU *g, in virgl_resource_attach_backing() argument
558 ret = virtio_gpu_create_mapping_iov(g, att_rb.nr_entries, sizeof(att_rb), in virgl_resource_attach_backing()
569 virtio_gpu_cleanup_mapping_iov(g, res_iovs, res_niov); in virgl_resource_attach_backing()
572 static void virgl_resource_detach_backing(VirtIOGPU *g, in virgl_resource_detach_backing() argument
588 virtio_gpu_cleanup_mapping_iov(g, res_iovs, num_iovs); in virgl_resource_detach_backing()
592 static void virgl_cmd_ctx_attach_resource(VirtIOGPU *g, in virgl_cmd_ctx_attach_resource() argument
604 static void virgl_cmd_ctx_detach_resource(VirtIOGPU *g, in virgl_cmd_ctx_detach_resource() argument
616 static void virgl_cmd_get_capset_info(VirtIOGPU *g, in virgl_cmd_get_capset_info() argument
626 if (info.capset_index < g->capset_ids->len) { in virgl_cmd_get_capset_info()
627 resp.capset_id = g_array_index(g->capset_ids, uint32_t, in virgl_cmd_get_capset_info()
634 virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp)); in virgl_cmd_get_capset_info()
637 static void virgl_cmd_get_capset(VirtIOGPU *g, in virgl_cmd_get_capset() argument
657 virtio_gpu_ctrl_response(g, cmd, &resp->hdr, sizeof(*resp) + max_size); in virgl_cmd_get_capset()
662 static void virgl_cmd_resource_create_blob(VirtIOGPU *g, in virgl_cmd_resource_create_blob() argument
671 if (!virtio_gpu_blob_enabled(g->parent_obj.conf)) { in virgl_cmd_resource_create_blob()
687 res = virtio_gpu_virgl_find_resource(g, cblob.resource_id); in virgl_cmd_resource_create_blob()
701 ret = virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(cblob), in virgl_cmd_resource_create_blob()
724 virtio_gpu_cleanup_mapping(g, &res->base); in virgl_cmd_resource_create_blob()
734 virtio_gpu_cleanup_mapping(g, &res->base); in virgl_cmd_resource_create_blob()
741 QTAILQ_INSERT_HEAD(&g->reslist, &res->base, next); in virgl_cmd_resource_create_blob()
745 static void virgl_cmd_resource_map_blob(VirtIOGPU *g, in virgl_cmd_resource_map_blob() argument
756 res = virtio_gpu_virgl_find_resource(g, mblob.resource_id); in virgl_cmd_resource_map_blob()
764 ret = virtio_gpu_virgl_map_resource_blob(g, res, mblob.offset); in virgl_cmd_resource_map_blob()
773 virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp)); in virgl_cmd_resource_map_blob()
776 static void virgl_cmd_resource_unmap_blob(VirtIOGPU *g, in virgl_cmd_resource_unmap_blob() argument
787 res = virtio_gpu_virgl_find_resource(g, ublob.resource_id); in virgl_cmd_resource_unmap_blob()
795 ret = virtio_gpu_virgl_unmap_resource_blob(g, res, cmd_suspended); in virgl_cmd_resource_unmap_blob()
802 static void virgl_cmd_set_scanout_blob(VirtIOGPU *g, in virgl_cmd_set_scanout_blob() argument
815 if (ss.scanout_id >= g->parent_obj.conf.max_outputs) { in virgl_cmd_set_scanout_blob()
823 virtio_gpu_disable_scanout(g, ss.scanout_id); in virgl_cmd_set_scanout_blob()
840 res = virtio_gpu_virgl_find_resource(g, ss.resource_id); in virgl_cmd_set_scanout_blob()
859 g->parent_obj.enable = 1; in virgl_cmd_set_scanout_blob()
860 if (virtio_gpu_update_dmabuf(g, ss.scanout_id, &res->base, &fb, &ss.r)) { in virgl_cmd_set_scanout_blob()
867 virtio_gpu_update_scanout(g, ss.scanout_id, &res->base, &fb, &ss.r); in virgl_cmd_set_scanout_blob()
871 void virtio_gpu_virgl_process_cmd(VirtIOGPU *g, in virtio_gpu_virgl_process_cmd() argument
881 virgl_cmd_context_create(g, cmd); in virtio_gpu_virgl_process_cmd()
884 virgl_cmd_context_destroy(g, cmd); in virtio_gpu_virgl_process_cmd()
887 virgl_cmd_create_resource_2d(g, cmd); in virtio_gpu_virgl_process_cmd()
890 virgl_cmd_create_resource_3d(g, cmd); in virtio_gpu_virgl_process_cmd()
893 virgl_cmd_submit_3d(g, cmd); in virtio_gpu_virgl_process_cmd()
896 virgl_cmd_transfer_to_host_2d(g, cmd); in virtio_gpu_virgl_process_cmd()
899 virgl_cmd_transfer_to_host_3d(g, cmd); in virtio_gpu_virgl_process_cmd()
902 virgl_cmd_transfer_from_host_3d(g, cmd); in virtio_gpu_virgl_process_cmd()
905 virgl_resource_attach_backing(g, cmd); in virtio_gpu_virgl_process_cmd()
908 virgl_resource_detach_backing(g, cmd); in virtio_gpu_virgl_process_cmd()
911 virgl_cmd_set_scanout(g, cmd); in virtio_gpu_virgl_process_cmd()
914 virgl_cmd_resource_flush(g, cmd); in virtio_gpu_virgl_process_cmd()
917 virgl_cmd_resource_unref(g, cmd, &cmd_suspended); in virtio_gpu_virgl_process_cmd()
921 virgl_cmd_ctx_attach_resource(g, cmd); in virtio_gpu_virgl_process_cmd()
925 virgl_cmd_ctx_detach_resource(g, cmd); in virtio_gpu_virgl_process_cmd()
928 virgl_cmd_get_capset_info(g, cmd); in virtio_gpu_virgl_process_cmd()
931 virgl_cmd_get_capset(g, cmd); in virtio_gpu_virgl_process_cmd()
934 virtio_gpu_get_display_info(g, cmd); in virtio_gpu_virgl_process_cmd()
937 virtio_gpu_get_edid(g, cmd); in virtio_gpu_virgl_process_cmd()
941 virgl_cmd_resource_create_blob(g, cmd); in virtio_gpu_virgl_process_cmd()
944 virgl_cmd_resource_map_blob(g, cmd); in virtio_gpu_virgl_process_cmd()
947 virgl_cmd_resource_unmap_blob(g, cmd, &cmd_suspended); in virtio_gpu_virgl_process_cmd()
950 virgl_cmd_set_scanout_blob(g, cmd); in virtio_gpu_virgl_process_cmd()
964 virtio_gpu_ctrl_response_nodata(g, cmd, cmd->error); in virtio_gpu_virgl_process_cmd()
968 virtio_gpu_ctrl_response_nodata(g, cmd, VIRTIO_GPU_RESP_OK_NODATA); in virtio_gpu_virgl_process_cmd()
978 VirtIOGPU *g = opaque; in virgl_write_fence() local
981 QTAILQ_FOREACH_SAFE(cmd, &g->fenceq, next, tmp) { in virgl_write_fence()
990 virtio_gpu_ctrl_response_nodata(g, cmd, VIRTIO_GPU_RESP_OK_NODATA); in virgl_write_fence()
991 QTAILQ_REMOVE(&g->fenceq, cmd, next); in virgl_write_fence()
993 g->inflight--; in virgl_write_fence()
994 if (virtio_gpu_stats_enabled(g->parent_obj.conf)) { in virgl_write_fence()
995 trace_virtio_gpu_dec_inflight_fences(g->inflight); in virgl_write_fence()
1004 VirtIOGPU *g = opaque; in virgl_create_context() local
1011 ctx = dpy_gl_ctx_create(g->parent_obj.scanout[scanout_idx].con, &qparams); in virgl_create_context()
1017 VirtIOGPU *g = opaque; in virgl_destroy_context() local
1020 dpy_gl_ctx_destroy(g->parent_obj.scanout[0].con, qctx); in virgl_destroy_context()
1026 VirtIOGPU *g = opaque; in virgl_make_context_current() local
1029 return dpy_gl_ctx_make_current(g->parent_obj.scanout[scanout_idx].con, in virgl_make_context_current()
1043 VirtIOGPU *g = opaque; in virtio_gpu_print_stats() local
1044 VirtIOGPUGL *gl = VIRTIO_GPU_GL(g); in virtio_gpu_print_stats()
1046 if (g->stats.requests) { in virtio_gpu_print_stats()
1048 g->stats.requests, in virtio_gpu_print_stats()
1049 g->stats.max_inflight, in virtio_gpu_print_stats()
1050 g->stats.req_3d, in virtio_gpu_print_stats()
1051 g->stats.bytes_3d); in virtio_gpu_print_stats()
1052 g->stats.requests = 0; in virtio_gpu_print_stats()
1053 g->stats.max_inflight = 0; in virtio_gpu_print_stats()
1054 g->stats.req_3d = 0; in virtio_gpu_print_stats()
1055 g->stats.bytes_3d = 0; in virtio_gpu_print_stats()
1064 VirtIOGPU *g = opaque; in virtio_gpu_fence_poll() local
1065 VirtIOGPUGL *gl = VIRTIO_GPU_GL(g); in virtio_gpu_fence_poll()
1068 virtio_gpu_process_cmdq(g); in virtio_gpu_fence_poll()
1069 if (!QTAILQ_EMPTY(&g->cmdq) || !QTAILQ_EMPTY(&g->fenceq)) { in virtio_gpu_fence_poll()
1074 void virtio_gpu_virgl_fence_poll(VirtIOGPU *g) in virtio_gpu_virgl_fence_poll() argument
1076 virtio_gpu_fence_poll(g); in virtio_gpu_virgl_fence_poll()
1079 void virtio_gpu_virgl_reset_scanout(VirtIOGPU *g) in virtio_gpu_virgl_reset_scanout() argument
1083 for (i = 0; i < g->parent_obj.conf.max_outputs; i++) { in virtio_gpu_virgl_reset_scanout()
1084 dpy_gfx_replace_surface(g->parent_obj.scanout[i].con, NULL); in virtio_gpu_virgl_reset_scanout()
1085 dpy_gl_scanout_disable(g->parent_obj.scanout[i].con); in virtio_gpu_virgl_reset_scanout()
1089 void virtio_gpu_virgl_reset(VirtIOGPU *g) in virtio_gpu_virgl_reset() argument
1094 int virtio_gpu_virgl_init(VirtIOGPU *g) in virtio_gpu_virgl_init() argument
1098 VirtIOGPUGL *gl = VIRTIO_GPU_GL(g); in virtio_gpu_virgl_init()
1112 if (virtio_gpu_venus_enabled(g->parent_obj.conf)) { in virtio_gpu_virgl_init()
1117 ret = virgl_renderer_init(g, flags, &virtio_gpu_3d_cbs); in virtio_gpu_virgl_init()
1124 virtio_gpu_fence_poll, g); in virtio_gpu_virgl_init()
1126 if (virtio_gpu_stats_enabled(g->parent_obj.conf)) { in virtio_gpu_virgl_init()
1128 virtio_gpu_print_stats, g); in virtio_gpu_virgl_init()
1136 g); in virtio_gpu_virgl_init()
1147 GArray *virtio_gpu_virgl_get_capsets(VirtIOGPU *g) in virtio_gpu_virgl_get_capsets() argument
1164 if (virtio_gpu_venus_enabled(g->parent_obj.conf)) { in virtio_gpu_virgl_get_capsets()