Lines Matching refs:vctx

115 static bool virgl_res_needs_flush(struct virgl_context *vctx,
118 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws;
124 if (!vws->res_is_referenced(vws, vctx->cbuf, res->hw_res))
140 static bool virgl_res_needs_readback(struct virgl_context *vctx,
155 virgl_resource_transfer_prepare(struct virgl_context *vctx,
158 struct virgl_screen *vs = virgl_screen(vctx->base.screen);
178 flush = virgl_res_needs_flush(vctx, xfer);
179 readback = virgl_res_needs_readback(vctx, res, xfer->base.usage,
216 can_realloc = virgl_can_rebind_resource(vctx, &res->b);
222 if (can_realloc || vctx->supports_staging) {
239 flush = (vctx->queued_staging_res_size >
260 if (!flush && virgl_transfer_queue_is_queued(&vctx->queue, xfer))
265 vctx->base.flush(&vctx->base, NULL, 0);
341 virgl_staging_map(struct virgl_context *vctx,
352 assert(vctx->supports_staging);
374 virgl_staging_alloc(&vctx->staging, size + align_offset,
399 vctx->queued_staging_res_size += size + align_offset;
409 virgl_staging_read_map(struct virgl_context *vctx,
412 struct virgl_screen *vscreen = virgl_screen(vctx->base.screen);
427 map_addr = virgl_staging_map(vctx, vtransfer);
429 virgl_encode_copy_transfer(vctx, vtransfer);
430 vctx->base.flush(&vctx->base, NULL, 0);
436 virgl_resource_realloc(struct virgl_context *vctx, struct virgl_resource *res)
438 struct virgl_screen *vs = virgl_screen(vctx->base.screen);
473 vctx->queued_staging_res_size += res->metadata.total_size;
475 virgl_rebind_resource(vctx, &res->b);
488 struct virgl_context *vctx = virgl_context(ctx);
511 trans = virgl_resource_create_transfer(vctx, resource,
514 map_type = virgl_resource_transfer_prepare(vctx, trans);
517 if (!virgl_resource_realloc(vctx, vres)) {
531 map_addr = virgl_staging_map(vctx, trans);
537 map_addr = virgl_staging_read_map(vctx, trans);
542 map_addr = virgl_staging_read_map(vctx, trans);
555 virgl_resource_destroy_transfer(vctx, trans);
804 struct virgl_context *vctx = virgl_context(pipe);
815 virgl_transfer_queue_extend_buffer(&vctx->queue,
837 virgl_resource_create_transfer(struct virgl_context *vctx,
843 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws;
868 trans = slab_zalloc(&vctx->transfer_pool);
895 void virgl_resource_destroy_transfer(struct virgl_context *vctx,
898 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws;
905 slab_free(&vctx->transfer_pool, trans);