gallium: remove resource_get_handle from u_resource_vtbl
This is the initial step towards removing u_resource_vtbl. Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10659>
This commit is contained in:
parent
a7a3de6902
commit
078e129d54
|
@ -84,16 +84,6 @@ void u_default_texture_subdata(struct pipe_context *pipe,
|
|||
pipe_transfer_unmap(pipe, transfer);
|
||||
}
|
||||
|
||||
|
||||
bool u_default_resource_get_handle(UNUSED struct pipe_screen *screen,
|
||||
UNUSED struct pipe_resource *resource,
|
||||
UNUSED struct winsys_handle *handle)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void u_default_transfer_flush_region(UNUSED struct pipe_context *pipe,
|
||||
UNUSED struct pipe_transfer *transfer,
|
||||
UNUSED const struct pipe_box *box)
|
||||
|
@ -108,16 +98,6 @@ u_resource( struct pipe_resource *res )
|
|||
return (struct u_resource *)res;
|
||||
}
|
||||
|
||||
bool u_resource_get_handle_vtbl(struct pipe_screen *screen,
|
||||
UNUSED struct pipe_context *ctx,
|
||||
struct pipe_resource *resource,
|
||||
struct winsys_handle *handle,
|
||||
UNUSED unsigned usage)
|
||||
{
|
||||
struct u_resource *ur = u_resource(resource);
|
||||
return ur->vtbl->resource_get_handle(screen, resource, handle);
|
||||
}
|
||||
|
||||
void u_resource_destroy_vtbl(struct pipe_screen *screen,
|
||||
struct pipe_resource *resource)
|
||||
{
|
||||
|
|
|
@ -14,10 +14,6 @@ struct winsys_handle;
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
bool u_default_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_resource *resource,
|
||||
struct winsys_handle *handle);
|
||||
|
||||
void u_default_buffer_subdata(struct pipe_context *pipe,
|
||||
struct pipe_resource *resource,
|
||||
unsigned usage, unsigned offset,
|
||||
|
@ -40,11 +36,6 @@ void u_default_transfer_flush_region( struct pipe_context *pipe,
|
|||
* to exist in a single driver. This is intended to be transitionary!
|
||||
*/
|
||||
struct u_resource_vtbl {
|
||||
|
||||
bool (*resource_get_handle)(struct pipe_screen *,
|
||||
struct pipe_resource *tex,
|
||||
struct winsys_handle *handle);
|
||||
|
||||
void (*resource_destroy)(struct pipe_screen *,
|
||||
struct pipe_resource *pt);
|
||||
|
||||
|
@ -71,12 +62,6 @@ struct u_resource {
|
|||
};
|
||||
|
||||
|
||||
bool u_resource_get_handle_vtbl(struct pipe_screen *screen,
|
||||
struct pipe_context *ctx,
|
||||
struct pipe_resource *resource,
|
||||
struct winsys_handle *handle,
|
||||
unsigned usage);
|
||||
|
||||
void u_resource_destroy_vtbl(struct pipe_screen *screen,
|
||||
struct pipe_resource *resource);
|
||||
|
||||
|
|
|
@ -48,6 +48,6 @@ i915_init_screen_resource_functions(struct i915_screen *is)
|
|||
{
|
||||
is->base.resource_create = i915_resource_create;
|
||||
is->base.resource_from_handle = i915_resource_from_handle;
|
||||
is->base.resource_get_handle = u_resource_get_handle_vtbl;
|
||||
is->base.resource_get_handle = i915_resource_get_handle;
|
||||
is->base.resource_destroy = u_resource_destroy_vtbl;
|
||||
}
|
||||
|
|
|
@ -113,6 +113,13 @@ i915_texture_create(struct pipe_screen *screen,
|
|||
const struct pipe_resource *template,
|
||||
boolean force_untiled);
|
||||
|
||||
bool
|
||||
i915_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *texture,
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage);
|
||||
|
||||
struct pipe_resource *
|
||||
i915_texture_from_handle(struct pipe_screen * screen,
|
||||
const struct pipe_resource *template,
|
||||
|
|
|
@ -40,15 +40,6 @@
|
|||
#include "i915_resource.h"
|
||||
|
||||
|
||||
|
||||
static bool
|
||||
i915_buffer_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_resource *resource,
|
||||
struct winsys_handle *handle)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
i915_buffer_destroy(struct pipe_screen *screen,
|
||||
struct pipe_resource *resource)
|
||||
|
@ -106,7 +97,6 @@ i915_buffer_subdata(struct pipe_context *rm_ctx,
|
|||
|
||||
struct u_resource_vtbl i915_buffer_vtbl =
|
||||
{
|
||||
i915_buffer_get_handle, /* get_handle */
|
||||
i915_buffer_destroy, /* resource_destroy */
|
||||
i915_buffer_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -681,11 +681,16 @@ i945_texture_layout(struct i915_texture * tex)
|
|||
|
||||
|
||||
|
||||
static bool
|
||||
i915_texture_get_handle(struct pipe_screen * screen,
|
||||
struct pipe_resource *texture,
|
||||
struct winsys_handle *whandle)
|
||||
bool
|
||||
i915_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *texture,
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage)
|
||||
{
|
||||
if (texture->target == PIPE_BUFFER)
|
||||
return false;
|
||||
|
||||
struct i915_screen *is = i915_screen(screen);
|
||||
struct i915_texture *tex = i915_texture(texture);
|
||||
struct i915_winsys *iws = is->iws;
|
||||
|
@ -908,7 +913,6 @@ out:
|
|||
|
||||
struct u_resource_vtbl i915_texture_vtbl =
|
||||
{
|
||||
i915_texture_get_handle, /* get_handle */
|
||||
i915_texture_destroy, /* resource_destroy */
|
||||
i915_texture_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -630,7 +630,6 @@ nouveau_resource_map_offset(struct nouveau_context *nv,
|
|||
|
||||
const struct u_resource_vtbl nouveau_buffer_vtbl =
|
||||
{
|
||||
u_default_resource_get_handle, /* get_handle */
|
||||
nouveau_buffer_destroy, /* resource_destroy */
|
||||
nouveau_buffer_transfer_map, /* transfer_map */
|
||||
nouveau_buffer_transfer_flush_region, /* transfer_flush_region */
|
||||
|
@ -670,7 +669,6 @@ nouveau_user_ptr_transfer_unmap(struct pipe_context *pipe,
|
|||
|
||||
const struct u_resource_vtbl nouveau_user_ptr_buffer_vtbl =
|
||||
{
|
||||
u_default_resource_get_handle, /* get_handle */
|
||||
nouveau_user_ptr_destroy, /* resource_destroy */
|
||||
nouveau_user_ptr_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -46,11 +46,16 @@ layer_offset(struct pipe_resource *pt, unsigned level, unsigned layer)
|
|||
return lvl->offset + (layer * lvl->zslice_size);
|
||||
}
|
||||
|
||||
static bool
|
||||
bool
|
||||
nv30_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pt,
|
||||
struct winsys_handle *handle)
|
||||
struct winsys_handle *handle,
|
||||
unsigned usage)
|
||||
{
|
||||
if (pt->target == PIPE_BUFFER)
|
||||
return false;
|
||||
|
||||
struct nv30_miptree *mt = nv30_miptree(pt);
|
||||
unsigned stride;
|
||||
|
||||
|
@ -398,7 +403,6 @@ nv30_miptree_transfer_unmap(struct pipe_context *pipe,
|
|||
}
|
||||
|
||||
const struct u_resource_vtbl nv30_miptree_vtbl = {
|
||||
nv30_miptree_get_handle,
|
||||
nv30_miptree_destroy,
|
||||
nv30_miptree_transfer_map,
|
||||
u_default_transfer_flush_region,
|
||||
|
|
|
@ -76,7 +76,7 @@ nv30_resource_screen_init(struct pipe_screen *pscreen)
|
|||
{
|
||||
pscreen->resource_create = nv30_resource_create;
|
||||
pscreen->resource_from_handle = nv30_resource_from_handle;
|
||||
pscreen->resource_get_handle = u_resource_get_handle_vtbl;
|
||||
pscreen->resource_get_handle = nv30_miptree_get_handle;
|
||||
pscreen->resource_destroy = u_resource_destroy_vtbl;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,6 +58,13 @@ nv30_miptree_surface_new(struct pipe_context *, struct pipe_resource *,
|
|||
void
|
||||
nv30_miptree_surface_del(struct pipe_context *, struct pipe_surface *);
|
||||
|
||||
bool
|
||||
nv30_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pt,
|
||||
struct winsys_handle *handle,
|
||||
unsigned usage);
|
||||
|
||||
void
|
||||
nv30_resource_copy_region(struct pipe_context *pipe,
|
||||
struct pipe_resource *dst, unsigned dst_level,
|
||||
|
|
|
@ -180,9 +180,14 @@ nv50_miptree_destroy(struct pipe_screen *pscreen, struct pipe_resource *pt)
|
|||
|
||||
bool
|
||||
nv50_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pt,
|
||||
struct winsys_handle *whandle)
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage)
|
||||
{
|
||||
if (pt->target == PIPE_BUFFER)
|
||||
return false;
|
||||
|
||||
struct nv50_miptree *mt = nv50_miptree(pt);
|
||||
unsigned stride;
|
||||
|
||||
|
@ -199,7 +204,6 @@ nv50_miptree_get_handle(struct pipe_screen *pscreen,
|
|||
|
||||
const struct u_resource_vtbl nv50_miptree_vtbl =
|
||||
{
|
||||
nv50_miptree_get_handle, /* get_handle */
|
||||
nv50_miptree_destroy, /* resource_destroy */
|
||||
nv50_miptree_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -109,6 +109,6 @@ nv50_screen_init_resource_functions(struct pipe_screen *pscreen)
|
|||
{
|
||||
pscreen->resource_create = nv50_resource_create;
|
||||
pscreen->resource_from_handle = nv50_resource_from_handle;
|
||||
pscreen->resource_get_handle = u_resource_get_handle_vtbl;
|
||||
pscreen->resource_get_handle = nv50_miptree_get_handle;
|
||||
pscreen->resource_destroy = u_resource_destroy_vtbl;
|
||||
}
|
||||
|
|
|
@ -88,8 +88,10 @@ nv50_miptree_from_handle(struct pipe_screen *pscreen,
|
|||
|
||||
bool
|
||||
nv50_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pt,
|
||||
struct winsys_handle *whandle);
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage);
|
||||
|
||||
struct nv50_surface {
|
||||
struct pipe_surface base;
|
||||
|
|
|
@ -339,15 +339,17 @@ nvc0_miptree_get_modifier(struct pipe_screen *pscreen, struct nv50_miptree *mt)
|
|||
NVC0_TILE_MODE_Y(config->nvc0.tile_mode));
|
||||
}
|
||||
|
||||
static bool
|
||||
bool
|
||||
nvc0_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pt,
|
||||
struct winsys_handle *whandle)
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage)
|
||||
{
|
||||
struct nv50_miptree *mt = nv50_miptree(pt);
|
||||
bool ret;
|
||||
|
||||
ret = nv50_miptree_get_handle(pscreen, pt, whandle);
|
||||
ret = nv50_miptree_get_handle(pscreen, context, pt, whandle, usage);
|
||||
if (!ret)
|
||||
return ret;
|
||||
|
||||
|
@ -436,7 +438,6 @@ nvc0_miptree_select_best_modifier(struct pipe_screen *pscreen,
|
|||
|
||||
const struct u_resource_vtbl nvc0_miptree_vtbl =
|
||||
{
|
||||
nvc0_miptree_get_handle, /* get_handle */
|
||||
nv50_miptree_destroy, /* resource_destroy */
|
||||
nvc0_miptree_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -163,7 +163,7 @@ nvc0_screen_init_resource_functions(struct pipe_screen *pscreen)
|
|||
pscreen->query_dmabuf_modifiers = nvc0_query_dmabuf_modifiers;
|
||||
pscreen->is_dmabuf_modifier_supported = nvc0_is_dmabuf_modifier_supported;
|
||||
pscreen->resource_from_handle = nvc0_resource_from_handle;
|
||||
pscreen->resource_get_handle = u_resource_get_handle_vtbl;
|
||||
pscreen->resource_get_handle = nvc0_miptree_get_handle;
|
||||
pscreen->resource_destroy = u_resource_destroy_vtbl;
|
||||
pscreen->resource_from_user_memory = nvc0_resource_from_user_memory;
|
||||
}
|
||||
|
|
|
@ -53,6 +53,13 @@ nvc0_miptree_create(struct pipe_screen *pscreen,
|
|||
const struct pipe_resource *tmp,
|
||||
const uint64_t *modifiers, unsigned int count);
|
||||
|
||||
bool
|
||||
nvc0_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pt,
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage);
|
||||
|
||||
extern const struct u_resource_vtbl nvc0_miptree_vtbl;
|
||||
|
||||
struct pipe_surface *
|
||||
|
|
|
@ -148,7 +148,6 @@ static void r300_buffer_transfer_unmap( struct pipe_context *pipe,
|
|||
|
||||
static const struct u_resource_vtbl r300_buffer_vtbl =
|
||||
{
|
||||
NULL, /* get_handle */
|
||||
r300_buffer_destroy, /* resource_destroy */
|
||||
r300_buffer_transfer_map, /* transfer_map */
|
||||
NULL, /* transfer_flush_region */
|
||||
|
|
|
@ -1059,7 +1059,6 @@ bool r300_resource_get_handle(struct pipe_screen* screen,
|
|||
|
||||
static const struct u_resource_vtbl r300_texture_vtbl =
|
||||
{
|
||||
NULL, /* get_handle */
|
||||
r300_texture_destroy, /* resource_destroy */
|
||||
r300_texture_transfer_map, /* transfer_map */
|
||||
NULL, /* transfer_flush_region */
|
||||
|
|
|
@ -1324,7 +1324,6 @@ static void r600_compute_global_buffer_destroy(struct pipe_screen *screen,
|
|||
|
||||
static const struct u_resource_vtbl r600_global_buffer_vtbl =
|
||||
{
|
||||
u_default_resource_get_handle, /* get_handle */
|
||||
r600_compute_global_buffer_destroy, /* resource_destroy */
|
||||
r600_compute_global_transfer_map, /* transfer_map */
|
||||
r600_compute_global_transfer_flush_region,/* transfer_flush_region */
|
||||
|
|
|
@ -561,7 +561,6 @@ void r600_buffer_subdata(struct pipe_context *ctx,
|
|||
|
||||
static const struct u_resource_vtbl r600_buffer_vtbl =
|
||||
{
|
||||
NULL, /* get_handle */
|
||||
r600_buffer_destroy, /* resource_destroy */
|
||||
r600_buffer_transfer_map, /* transfer_map */
|
||||
r600_buffer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -1521,7 +1521,6 @@ static void r600_texture_transfer_unmap(struct pipe_context *ctx,
|
|||
|
||||
static const struct u_resource_vtbl r600_texture_vtbl =
|
||||
{
|
||||
NULL, /* get_handle */
|
||||
r600_texture_destroy, /* resource_destroy */
|
||||
r600_texture_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -551,7 +551,6 @@ static void si_buffer_subdata(struct pipe_context *ctx, struct pipe_resource *bu
|
|||
}
|
||||
|
||||
static const struct u_resource_vtbl si_buffer_vtbl = {
|
||||
NULL, /* get_handle */
|
||||
si_buffer_destroy, /* resource_destroy */
|
||||
si_buffer_transfer_map, /* transfer_map */
|
||||
si_buffer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -1474,7 +1474,6 @@ static void si_auxiliary_texture_destroy(struct pipe_screen *screen,
|
|||
}
|
||||
|
||||
static const struct u_resource_vtbl si_auxiliary_texture_vtbl = {
|
||||
NULL, /* get_handle */
|
||||
si_auxiliary_texture_destroy, /* resource_destroy */
|
||||
NULL, /* transfer_map */
|
||||
NULL, /* transfer_flush_region */
|
||||
|
@ -1962,7 +1961,6 @@ static void si_texture_transfer_unmap(struct pipe_context *ctx, struct pipe_tran
|
|||
}
|
||||
|
||||
static const struct u_resource_vtbl si_texture_vtbl = {
|
||||
NULL, /* get_handle */
|
||||
si_texture_destroy, /* resource_destroy */
|
||||
si_texture_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -138,7 +138,7 @@ svga_init_screen_resource_functions(struct svga_screen *is)
|
|||
{
|
||||
is->screen.resource_create = svga_resource_create;
|
||||
is->screen.resource_from_handle = svga_resource_from_handle;
|
||||
is->screen.resource_get_handle = u_resource_get_handle_vtbl;
|
||||
is->screen.resource_get_handle = svga_resource_get_handle;
|
||||
is->screen.resource_destroy = u_resource_destroy_vtbl;
|
||||
is->screen.can_create_resource = svga_can_create_resource;
|
||||
}
|
||||
|
|
|
@ -424,7 +424,6 @@ svga_buffer_destroy(struct pipe_screen *screen,
|
|||
|
||||
struct u_resource_vtbl svga_buffer_vtbl =
|
||||
{
|
||||
u_default_resource_get_handle, /* get_handle */
|
||||
svga_buffer_destroy, /* resource_destroy */
|
||||
svga_buffer_transfer_map, /* transfer_map */
|
||||
svga_buffer_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -196,14 +196,19 @@ svga_transfer_dma(struct svga_context *svga,
|
|||
|
||||
|
||||
|
||||
static bool
|
||||
svga_texture_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_resource *texture,
|
||||
struct winsys_handle *whandle)
|
||||
bool
|
||||
svga_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *texture,
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage)
|
||||
{
|
||||
struct svga_winsys_screen *sws = svga_winsys_screen(texture->screen);
|
||||
unsigned stride;
|
||||
|
||||
if (texture->target == PIPE_BUFFER)
|
||||
return false;
|
||||
|
||||
assert(svga_texture(texture)->key.cachable == 0);
|
||||
svga_texture(texture)->key.cachable = 0;
|
||||
|
||||
|
@ -872,7 +877,6 @@ format_has_depth(enum pipe_format format)
|
|||
|
||||
struct u_resource_vtbl svga_texture_vtbl =
|
||||
{
|
||||
svga_texture_get_handle, /* get_handle */
|
||||
svga_texture_destroy, /* resource_destroy */
|
||||
svga_texture_transfer_map, /* transfer_map */
|
||||
u_default_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -282,6 +282,13 @@ struct pipe_resource *
|
|||
svga_texture_create(struct pipe_screen *screen,
|
||||
const struct pipe_resource *template);
|
||||
|
||||
bool
|
||||
svga_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *texture,
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage);
|
||||
|
||||
struct pipe_resource *
|
||||
svga_texture_from_handle(struct pipe_screen * screen,
|
||||
const struct pipe_resource *template,
|
||||
|
|
|
@ -78,7 +78,6 @@ static void virgl_buffer_transfer_flush_region(struct pipe_context *ctx,
|
|||
|
||||
static const struct u_resource_vtbl virgl_buffer_vtbl =
|
||||
{
|
||||
u_default_resource_get_handle, /* get_handle */
|
||||
virgl_resource_destroy, /* resource_destroy */
|
||||
virgl_resource_transfer_map, /* transfer_map */
|
||||
virgl_buffer_transfer_flush_region, /* transfer_flush_region */
|
||||
|
|
|
@ -641,7 +641,7 @@ void virgl_init_screen_resource_functions(struct pipe_screen *screen)
|
|||
{
|
||||
screen->resource_create = virgl_resource_create;
|
||||
screen->resource_from_handle = virgl_resource_from_handle;
|
||||
screen->resource_get_handle = u_resource_get_handle_vtbl;
|
||||
screen->resource_get_handle = virgl_resource_get_handle;
|
||||
screen->resource_destroy = u_resource_destroy_vtbl;
|
||||
}
|
||||
|
||||
|
@ -772,8 +772,10 @@ void virgl_resource_destroy(struct pipe_screen *screen,
|
|||
}
|
||||
|
||||
bool virgl_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *resource,
|
||||
struct winsys_handle *whandle)
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage)
|
||||
{
|
||||
struct virgl_screen *vs = virgl_screen(screen);
|
||||
struct virgl_resource *res = virgl_resource(resource);
|
||||
|
|
|
@ -188,8 +188,10 @@ void virgl_resource_destroy(struct pipe_screen *screen,
|
|||
struct pipe_resource *resource);
|
||||
|
||||
bool virgl_resource_get_handle(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *resource,
|
||||
struct winsys_handle *whandle);
|
||||
struct winsys_handle *whandle,
|
||||
unsigned usage);
|
||||
|
||||
void virgl_resource_dirty(struct virgl_resource *res, uint32_t level);
|
||||
|
||||
|
|
|
@ -304,7 +304,6 @@ static void virgl_texture_transfer_unmap(struct pipe_context *ctx,
|
|||
|
||||
static const struct u_resource_vtbl virgl_texture_vtbl =
|
||||
{
|
||||
virgl_resource_get_handle, /* get_handle */
|
||||
virgl_resource_destroy, /* resource_destroy */
|
||||
virgl_texture_transfer_map, /* transfer_map */
|
||||
NULL, /* transfer_flush_region */
|
||||
|
|
Loading…
Reference in New Issue