From 482fe7630038106b8b01812dba29fe1354b4f184 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Tue, 7 Dec 2021 17:43:02 +0800 Subject: [PATCH] mesa/st: add st_GetSparseTextureVirtualPageSize interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For ARB_sparse_texture implementation. Reviewed-by: Marek Olšák Signed-off-by: Qiang Yu Part-of: --- src/mesa/state_tracker/st_cb_texture.c | 15 +++++++++++++++ src/mesa/state_tracker/st_cb_texture.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 2b9ef69cdad..1a5c14cbc7c 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -3709,3 +3709,18 @@ st_MakeImageHandleResident(struct gl_context *ctx, GLuint64 handle, pipe->make_image_handle_resident(pipe, handle, access, resident); } + +GLboolean +st_GetSparseTextureVirtualPageSize(struct gl_context *ctx, + GLenum target, mesa_format format, + unsigned index, int *x, int *y, int *z) +{ + struct st_context *st = st_context(ctx); + struct pipe_screen *screen = st->screen; + enum pipe_texture_target ptarget = gl_target_to_pipe(target); + enum pipe_format pformat = st_mesa_format_to_pipe_format(st, format); + + /* Get an XYZ page size combination specified by index. */ + return !!screen->get_sparse_texture_virtual_page_size( + screen, ptarget, pformat, index, 1, x, y, z); +} diff --git a/src/mesa/state_tracker/st_cb_texture.h b/src/mesa/state_tracker/st_cb_texture.h index d6fdd713394..5cc672e73c1 100644 --- a/src/mesa/state_tracker/st_cb_texture.h +++ b/src/mesa/state_tracker/st_cb_texture.h @@ -136,4 +136,7 @@ GLuint64 st_NewImageHandle(struct gl_context *ctx, struct gl_image_unit *imgObj) void st_DeleteImageHandle(struct gl_context *ctx, GLuint64 handle); void st_MakeImageHandleResident(struct gl_context *ctx, GLuint64 handle, GLenum access, bool resident); +GLboolean st_GetSparseTextureVirtualPageSize(struct gl_context *ctx, + GLenum target, mesa_format format, + unsigned index, int *x, int *y, int *z); #endif /* ST_CB_TEXTURE_H */