gallium: add get_sparse_texture_virtual_page_size for noop/rbug/trace

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14223>
This commit is contained in:
Qiang Yu 2021-12-06 17:43:20 +08:00
parent eed8421bba
commit 1a616c4b29
3 changed files with 61 additions and 0 deletions

View file

@ -664,6 +664,19 @@ static void noop_get_device_uuid(struct pipe_screen *screen, char *uuid)
oscreen->get_device_uuid(oscreen, uuid);
}
static int noop_get_sparse_texture_virtual_page_size(struct pipe_screen *screen,
enum pipe_texture_target target,
enum pipe_format format,
unsigned offset, unsigned size,
int *x, int *y, int *z)
{
struct noop_pipe_screen *noop_screen = (struct noop_pipe_screen*)screen;
struct pipe_screen *oscreen = noop_screen->oscreen;
return oscreen->get_sparse_texture_virtual_page_size(screen, target, format, offset,
size, x, y, z);
}
static void noop_query_dmabuf_modifiers(struct pipe_screen *screen,
enum pipe_format format, int max,
uint64_t *modifiers,
@ -753,6 +766,8 @@ struct pipe_screen *noop_screen_create(struct pipe_screen *oscreen)
screen->resource_create_with_modifiers = noop_resource_create_with_modifiers;
screen->create_vertex_state = noop_create_vertex_state;
screen->vertex_state_destroy = noop_vertex_state_destroy;
if (oscreen->get_sparse_texture_virtual_page_size)
screen->get_sparse_texture_virtual_page_size = noop_get_sparse_texture_virtual_page_size;
slab_create_parent(&noop_screen->pool_transfers,
sizeof(struct pipe_transfer), 64);

View file

@ -191,6 +191,20 @@ rbug_screen_get_dmabuf_modifier_planes(struct pipe_screen *_screen,
return screen->get_dmabuf_modifier_planes(screen, modifier, format);
}
static int
rbug_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
enum pipe_texture_target target,
enum pipe_format format,
unsigned offset, unsigned size,
int *x, int *y, int *z)
{
struct rbug_screen *rb_screen = rbug_screen(_screen);
struct pipe_screen *screen = rb_screen->screen;
return screen->get_sparse_texture_virtual_page_size(screen, target, format, offset,
size, x, y, z);
}
static struct pipe_context *
rbug_screen_context_create(struct pipe_screen *_screen,
void *priv, unsigned flags)
@ -474,6 +488,7 @@ rbug_screen_create(struct pipe_screen *screen)
rb_screen->base.fence_finish = rbug_screen_fence_finish;
rb_screen->base.fence_get_fd = rbug_screen_fence_get_fd;
SCR_INIT(finalize_nir);
SCR_INIT(get_sparse_texture_virtual_page_size);
rb_screen->screen = screen;

View file

@ -1040,6 +1040,36 @@ trace_screen_get_dmabuf_modifier_planes(struct pipe_screen *_screen, uint64_t mo
return ret;
}
static int
trace_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
enum pipe_texture_target target,
enum pipe_format format,
unsigned offset, unsigned size,
int *x, int *y, int *z)
{
struct trace_screen *tr_scr = trace_screen(_screen);
struct pipe_screen *screen = tr_scr->screen;
trace_dump_call_begin("pipe_screen", "get_sparse_texture_virtual_page_size");
trace_dump_arg(ptr, screen);
trace_dump_arg(int, target);
trace_dump_arg(format, format);
trace_dump_arg(uint, offset);
trace_dump_arg(uint, size);
trace_dump_arg(ptr, x);
trace_dump_arg(ptr, y);
trace_dump_arg(ptr, z);
int ret = screen->get_sparse_texture_virtual_page_size(screen, target, format, offset,
size, x, y, z);
trace_dump_ret(int, ret);
trace_dump_call_end();
return ret;
}
static struct pipe_vertex_state *
trace_screen_create_vertex_state(struct pipe_screen *_screen,
struct pipe_vertex_buffer *buffer,
@ -1182,6 +1212,7 @@ trace_screen_create(struct pipe_screen *screen)
SCR_INIT(create_vertex_state);
SCR_INIT(vertex_state_destroy);
tr_scr->base.transfer_helper = screen->transfer_helper;
SCR_INIT(get_sparse_texture_virtual_page_size);
tr_scr->screen = screen;