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,
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);
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)
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;
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,
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;