- util_slab_free(&vctx->texture_transfer_pool, trans);
-}
-
-
-static boolean
-vrend_resource_layout(struct virgl_texture *res,
- uint32_t *total_size)
-{
- struct pipe_resource *pt = &res->base.u.b;
- unsigned level;
- unsigned width = pt->width0;
- unsigned height = pt->height0;
- unsigned depth = pt->depth0;
- unsigned buffer_size = 0;
-
- for (level = 0; level <= pt->last_level; level++) {
- unsigned slices;
-
- if (pt->target == PIPE_TEXTURE_CUBE)
- slices = 6;
- else if (pt->target == PIPE_TEXTURE_3D)
- slices = depth;
- else
- slices = pt->array_size;
-
- res->stride[level] = util_format_get_stride(pt->format, width);
- res->level_offset[level] = buffer_size;
-
- buffer_size += (util_format_get_nblocksy(pt->format, height) *
- slices * res->stride[level]);
-
- width = u_minify(width, 1);
- height = u_minify(height, 1);
- depth = u_minify(depth, 1);
- }
-
- if (pt->nr_samples <= 1)
- *total_size = buffer_size;
- else /* don't create guest backing store for MSAA */
- *total_size = 0;
- return TRUE;
-}
-
-static boolean virgl_texture_get_handle(struct pipe_screen *screen,
- struct pipe_resource *ptex,
- struct winsys_handle *whandle)
-{
- struct virgl_screen *vs = virgl_screen(screen);
- struct virgl_texture *vtex = virgl_texture(ptex);
-
- return vs->vws->resource_get_handle(vs->vws, vtex->base.hw_res, vtex->stride[0], whandle);
-}
-
-static void virgl_texture_destroy(struct pipe_screen *screen,
- struct pipe_resource *res)
-{
- struct virgl_screen *vs = virgl_screen(screen);
- struct virgl_texture *vtex = virgl_texture(res);
- vs->vws->resource_unref(vs->vws, vtex->base.hw_res);
- FREE(vtex);