Lines Matching +full:io +full:- +full:width

29     DisplaySurface *surface = qemu_console_surface(qxl->vga.con);  in qxl_blit()
37 trace_qxl_render_blit(qxl->guest_primary.qxl_stride, in qxl_blit()
38 rect->left, rect->right, rect->top, rect->bottom); in qxl_blit()
39 src = qxl->guest_primary.data; in qxl_blit()
40 if (qxl->guest_primary.qxl_stride < 0) { in qxl_blit()
43 src += (qxl->guest_primary.surface.height - rect->top - 1) * in qxl_blit()
44 qxl->guest_primary.abs_stride; in qxl_blit()
46 src += rect->top * qxl->guest_primary.abs_stride; in qxl_blit()
48 dst += rect->top * qxl->guest_primary.abs_stride; in qxl_blit()
49 src += rect->left * qxl->guest_primary.bytes_pp; in qxl_blit()
50 dst += rect->left * qxl->guest_primary.bytes_pp; in qxl_blit()
51 len = (rect->right - rect->left) * qxl->guest_primary.bytes_pp; in qxl_blit()
53 for (i = rect->top; i < rect->bottom; i++) { in qxl_blit()
55 dst += qxl->guest_primary.abs_stride; in qxl_blit()
56 src += qxl->guest_primary.qxl_stride; in qxl_blit()
62 QXLSurfaceCreate *sc = &qxl->guest_primary.surface; in qxl_render_resize()
64 qxl->guest_primary.qxl_stride = sc->stride; in qxl_render_resize()
65 qxl->guest_primary.abs_stride = abs(sc->stride); in qxl_render_resize()
66 qxl->guest_primary.resized++; in qxl_render_resize()
67 switch (sc->format) { in qxl_render_resize()
69 qxl->guest_primary.bytes_pp = 2; in qxl_render_resize()
70 qxl->guest_primary.bits_pp = 15; in qxl_render_resize()
73 qxl->guest_primary.bytes_pp = 2; in qxl_render_resize()
74 qxl->guest_primary.bits_pp = 16; in qxl_render_resize()
78 qxl->guest_primary.bytes_pp = 4; in qxl_render_resize()
79 qxl->guest_primary.bits_pp = 32; in qxl_render_resize()
83 qxl->guest_primary.surface.format); in qxl_render_resize()
84 qxl->guest_primary.bytes_pp = 4; in qxl_render_resize()
85 qxl->guest_primary.bits_pp = 32; in qxl_render_resize()
92 area->left = 0; in qxl_set_rect_to_surface()
93 area->right = qxl->guest_primary.surface.width; in qxl_set_rect_to_surface()
94 area->top = 0; in qxl_set_rect_to_surface()
95 area->bottom = qxl->guest_primary.surface.height; in qxl_set_rect_to_surface()
100 VGACommonState *vga = &qxl->vga; in qxl_render_update_area_unlocked()
102 int width = qxl->guest_head0_width ?: qxl->guest_primary.surface.width; in qxl_render_update_area_unlocked() local
103 int height = qxl->guest_head0_height ?: qxl->guest_primary.surface.height; in qxl_render_update_area_unlocked()
106 if (qxl->guest_primary.resized) { in qxl_render_update_area_unlocked()
107 qxl->guest_primary.resized = 0; in qxl_render_update_area_unlocked()
108 qxl->guest_primary.data = qxl_phys2virt(qxl, in qxl_render_update_area_unlocked()
109 qxl->guest_primary.surface.mem, in qxl_render_update_area_unlocked()
111 qxl->guest_primary.abs_stride in qxl_render_update_area_unlocked()
113 if (!qxl->guest_primary.data) { in qxl_render_update_area_unlocked()
116 qxl_set_rect_to_surface(qxl, &qxl->dirty[0]); in qxl_render_update_area_unlocked()
117 qxl->num_dirty_rects = 1; in qxl_render_update_area_unlocked()
119 width, in qxl_render_update_area_unlocked()
121 qxl->guest_primary.qxl_stride, in qxl_render_update_area_unlocked()
122 qxl->guest_primary.bytes_pp, in qxl_render_update_area_unlocked()
123 qxl->guest_primary.bits_pp); in qxl_render_update_area_unlocked()
124 if (qxl->guest_primary.qxl_stride > 0) { in qxl_render_update_area_unlocked()
126 qemu_default_pixman_format(qxl->guest_primary.bits_pp, true); in qxl_render_update_area_unlocked()
128 (width, in qxl_render_update_area_unlocked()
131 qxl->guest_primary.abs_stride, in qxl_render_update_area_unlocked()
132 qxl->guest_primary.data); in qxl_render_update_area_unlocked()
135 (width, in qxl_render_update_area_unlocked()
138 dpy_gfx_replace_surface(vga->con, surface); in qxl_render_update_area_unlocked()
141 if (!qxl->guest_primary.data) { in qxl_render_update_area_unlocked()
144 for (i = 0; i < qxl->num_dirty_rects; i++) { in qxl_render_update_area_unlocked()
145 if (qemu_spice_rect_is_empty(qxl->dirty+i)) { in qxl_render_update_area_unlocked()
148 if (qxl->dirty[i].left < 0 || in qxl_render_update_area_unlocked()
149 qxl->dirty[i].top < 0 || in qxl_render_update_area_unlocked()
150 qxl->dirty[i].left > qxl->dirty[i].right || in qxl_render_update_area_unlocked()
151 qxl->dirty[i].top > qxl->dirty[i].bottom || in qxl_render_update_area_unlocked()
152 qxl->dirty[i].right > width || in qxl_render_update_area_unlocked()
153 qxl->dirty[i].bottom > height) { in qxl_render_update_area_unlocked()
156 qxl_blit(qxl, qxl->dirty+i); in qxl_render_update_area_unlocked()
157 dpy_gfx_update(vga->con, in qxl_render_update_area_unlocked()
158 qxl->dirty[i].left, qxl->dirty[i].top, in qxl_render_update_area_unlocked()
159 qxl->dirty[i].right - qxl->dirty[i].left, in qxl_render_update_area_unlocked()
160 qxl->dirty[i].bottom - qxl->dirty[i].top); in qxl_render_update_area_unlocked()
162 qxl->num_dirty_rects = 0; in qxl_render_update_area_unlocked()
165 if (qxl->render_update_cookie_num == 0) { in qxl_render_update_area_unlocked()
166 graphic_hw_update_done(qxl->ssd.dcl.con); in qxl_render_update_area_unlocked()
172 * qxl_render_update is called by io thread or vcpu thread, and the completion
174 * io thread.
180 qemu_mutex_lock(&qxl->ssd.lock); in qxl_render_update()
182 if (!runstate_is_running() || !qxl->guest_primary.commands || in qxl_render_update()
183 qxl->mode == QXL_MODE_UNDEFINED) { in qxl_render_update()
185 qemu_mutex_unlock(&qxl->ssd.lock); in qxl_render_update()
186 graphic_hw_update_done(qxl->ssd.dcl.con); in qxl_render_update()
190 qxl->guest_primary.commands = 0; in qxl_render_update()
191 qxl->render_update_cookie_num++; in qxl_render_update()
192 qemu_mutex_unlock(&qxl->ssd.lock); in qxl_render_update()
195 qxl_set_rect_to_surface(qxl, &cookie->u.render.area); in qxl_render_update()
196 qxl_spice_update_area(qxl, 0, &cookie->u.render.area, NULL, in qxl_render_update()
204 qemu_mutex_lock(&qxl->ssd.lock); in qxl_render_update_area_bh()
206 qemu_mutex_unlock(&qxl->ssd.lock); in qxl_render_update_area_bh()
211 qemu_mutex_lock(&qxl->ssd.lock); in qxl_render_update_area_done()
213 qemu_bh_schedule(qxl->update_area_bh); in qxl_render_update_area_done()
214 qxl->render_update_cookie_num--; in qxl_render_update_area_done()
215 qemu_mutex_unlock(&qxl->ssd.lock); in qxl_render_update_area_done()
227 bytes = MIN(size - offset, chunk->data_size); in qxl_unpack_chunks()
228 memcpy(dest + offset, chunk->data, bytes); in qxl_unpack_chunks()
233 chunk = qxl_phys2virt(qxl, chunk->next_chunk, group_id, in qxl_unpack_chunks()
234 sizeof(QXLDataChunk) + chunk->data_size); in qxl_unpack_chunks()
238 max_chunks--; in qxl_unpack_chunks()
252 c = cursor_alloc(cursor->header.width, cursor->header.height); in qxl_cursor()
256 cursor->header.width, cursor->header.height); in qxl_cursor()
260 c->hot_x = cursor->header.hot_spot_x; in qxl_cursor()
261 c->hot_y = cursor->header.hot_spot_y; in qxl_cursor()
262 switch (cursor->header.type) { in qxl_cursor()
265 size = 2 * cursor_get_mono_bpl(c) * c->height; in qxl_cursor()
266 if (size != cursor->data_size) { in qxl_cursor()
268 __func__, c->width, c->height, cursor->data_size); in qxl_cursor()
271 and_mask = cursor->chunk.data; in qxl_cursor()
272 xor_mask = and_mask + cursor_get_mono_bpl(c) * c->height; in qxl_cursor()
274 if (qxl->debug > 2) { in qxl_cursor()
279 size = sizeof(uint32_t) * c->width * c->height; in qxl_cursor()
280 qxl_unpack_chunks(c->data, size, qxl, &cursor->chunk, group_id); in qxl_cursor()
281 if (qxl->debug > 2) { in qxl_cursor()
287 __func__, cursor->header.type); in qxl_cursor()
301 QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id, in qxl_render_cursor()
310 if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) { in qxl_render_cursor()
312 qxl_log_cmd_cursor(qxl, cmd, ext->group_id); in qxl_render_cursor()
315 switch (cmd->type) { in qxl_render_cursor()
318 cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id, in qxl_render_cursor()
324 cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id, in qxl_render_cursor()
325 sizeof(QXLCursor) + cursor->chunk.data_size); in qxl_render_cursor()
329 c = qxl_cursor(qxl, cursor, ext->group_id); in qxl_render_cursor()
333 qemu_mutex_lock(&qxl->ssd.lock); in qxl_render_cursor()
334 if (qxl->ssd.cursor) { in qxl_render_cursor()
335 cursor_unref(qxl->ssd.cursor); in qxl_render_cursor()
337 qxl->ssd.cursor = c; in qxl_render_cursor()
338 qxl->ssd.mouse_x = cmd->u.set.position.x; in qxl_render_cursor()
339 qxl->ssd.mouse_y = cmd->u.set.position.y; in qxl_render_cursor()
340 qemu_mutex_unlock(&qxl->ssd.lock); in qxl_render_cursor()
341 qemu_bh_schedule(qxl->ssd.cursor_bh); in qxl_render_cursor()
344 qemu_mutex_lock(&qxl->ssd.lock); in qxl_render_cursor()
345 qxl->ssd.mouse_x = cmd->u.position.x; in qxl_render_cursor()
346 qxl->ssd.mouse_y = cmd->u.position.y; in qxl_render_cursor()
347 qemu_mutex_unlock(&qxl->ssd.lock); in qxl_render_cursor()
348 qemu_bh_schedule(qxl->ssd.cursor_bh); in qxl_render_cursor()