mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-15 16:28:04 +02:00
gallium: add multi_sample parameter to get_sparse_texture_virtual_page_size
Instead of using actual sample count as parameter, we only use a bool to indicate if the target is multi sample. This is because we don't know the sample count when glGetInternalformativ() case. Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> 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/14362>
This commit is contained in:
parent
2c994e17c1
commit
485ceb5c51
8 changed files with 20 additions and 10 deletions
|
|
@ -355,6 +355,7 @@ dd_screen_check_resource_capability(struct pipe_screen *_screen,
|
|||
static int
|
||||
dd_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
|
||||
enum pipe_texture_target target,
|
||||
bool multi_sample,
|
||||
enum pipe_format format,
|
||||
unsigned offset, unsigned size,
|
||||
int *x, int *y, int *z)
|
||||
|
|
@ -362,7 +363,7 @@ dd_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
|
|||
struct pipe_screen *screen = dd_screen(_screen)->screen;
|
||||
|
||||
return screen->get_sparse_texture_virtual_page_size(
|
||||
_screen, target, format, offset, size, x, y, z);
|
||||
_screen, target, multi_sample, format, offset, size, x, y, z);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
|
|
|||
|
|
@ -666,6 +666,7 @@ static void noop_get_device_uuid(struct pipe_screen *screen, char *uuid)
|
|||
|
||||
static int noop_get_sparse_texture_virtual_page_size(struct pipe_screen *screen,
|
||||
enum pipe_texture_target target,
|
||||
bool multi_sample,
|
||||
enum pipe_format format,
|
||||
unsigned offset, unsigned size,
|
||||
int *x, int *y, int *z)
|
||||
|
|
@ -673,8 +674,8 @@ static int noop_get_sparse_texture_virtual_page_size(struct pipe_screen *screen,
|
|||
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);
|
||||
return oscreen->get_sparse_texture_virtual_page_size(screen, target, multi_sample,
|
||||
format, offset, size, x, y, z);
|
||||
}
|
||||
|
||||
static void noop_query_dmabuf_modifiers(struct pipe_screen *screen,
|
||||
|
|
|
|||
|
|
@ -194,6 +194,7 @@ rbug_screen_get_dmabuf_modifier_planes(struct pipe_screen *_screen,
|
|||
static int
|
||||
rbug_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
|
||||
enum pipe_texture_target target,
|
||||
bool multi_sample,
|
||||
enum pipe_format format,
|
||||
unsigned offset, unsigned size,
|
||||
int *x, int *y, int *z)
|
||||
|
|
@ -201,8 +202,8 @@ rbug_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
|
|||
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);
|
||||
return screen->get_sparse_texture_virtual_page_size(screen, target, multi_sample,
|
||||
format, offset, size, x, y, z);
|
||||
}
|
||||
|
||||
static struct pipe_context *
|
||||
|
|
|
|||
|
|
@ -1043,6 +1043,7 @@ trace_screen_get_dmabuf_modifier_planes(struct pipe_screen *_screen, uint64_t mo
|
|||
static int
|
||||
trace_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
|
||||
enum pipe_texture_target target,
|
||||
bool multi_sample,
|
||||
enum pipe_format format,
|
||||
unsigned offset, unsigned size,
|
||||
int *x, int *y, int *z)
|
||||
|
|
@ -1061,8 +1062,8 @@ trace_screen_get_sparse_texture_virtual_page_size(struct pipe_screen *_screen,
|
|||
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);
|
||||
int ret = screen->get_sparse_texture_virtual_page_size(screen, target, multi_sample,
|
||||
format, offset, size, x, y, z);
|
||||
|
||||
trace_dump_ret(int, ret);
|
||||
|
||||
|
|
|
|||
|
|
@ -2266,6 +2266,7 @@ static bool si_check_resource_capability(struct pipe_screen *screen, struct pipe
|
|||
|
||||
static int si_get_sparse_texture_virtual_page_size(struct pipe_screen *screen,
|
||||
enum pipe_texture_target target,
|
||||
bool multi_sample,
|
||||
enum pipe_format format,
|
||||
unsigned offset, unsigned size,
|
||||
int *x, int *y, int *z)
|
||||
|
|
|
|||
|
|
@ -665,6 +665,7 @@ struct pipe_screen {
|
|||
*/
|
||||
int (*get_sparse_texture_virtual_page_size)(struct pipe_screen *screen,
|
||||
enum pipe_texture_target target,
|
||||
bool multi_sample,
|
||||
enum pipe_format format,
|
||||
unsigned offset, unsigned size,
|
||||
int *x, int *y, int *z);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include "main/format_utils.h"
|
||||
#include "main/glformats.h"
|
||||
#include "main/image.h"
|
||||
#include "main/formatquery.h"
|
||||
|
||||
#include "main/macros.h"
|
||||
#include "main/mipmap.h"
|
||||
|
|
@ -3726,10 +3727,11 @@ st_GetSparseTextureVirtualPageSize(struct gl_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);
|
||||
bool multi_sample = _mesa_is_multisample_target(target);
|
||||
|
||||
/* 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);
|
||||
screen, ptarget, multi_sample, pformat, index, 1, x, y, z);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -1520,17 +1520,19 @@ st_QueryInternalFormat(struct gl_context *ctx, GLenum target,
|
|||
if (pformat != PIPE_FORMAT_NONE) {
|
||||
struct pipe_screen *screen = st->screen;
|
||||
enum pipe_texture_target ptarget = gl_target_to_pipe(target);
|
||||
bool multi_sample = _mesa_is_multisample_target(target);
|
||||
|
||||
if (pname == GL_NUM_VIRTUAL_PAGE_SIZES_ARB)
|
||||
params[0] = screen->get_sparse_texture_virtual_page_size(
|
||||
screen, ptarget, pformat, 0, 0, NULL, NULL, NULL);
|
||||
screen, ptarget, multi_sample, pformat, 0, 0, NULL, NULL, NULL);
|
||||
else {
|
||||
int *args[3] = {0};
|
||||
args[pname - GL_VIRTUAL_PAGE_SIZE_X_ARB] = params;
|
||||
|
||||
/* 16 comes from the caller _mesa_GetInternalformativ() */
|
||||
screen->get_sparse_texture_virtual_page_size(
|
||||
screen, ptarget, pformat, 0, 16, args[0], args[1], args[2]);
|
||||
screen, ptarget, multi_sample, pformat, 0, 16,
|
||||
args[0], args[1], args[2]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue