Mesa (master): gallium: add a level parameter to resource parameter get
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Nov 2 23:10:35 UTC 2020
Module: Mesa
Branch: master
Commit: e9724722a3a7d57674474fb347aee292f1d6077c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9724722a3a7d57674474fb347aee292f1d6077c
Author: Dave Airlie <airlied at redhat.com>
Date: Tue Sep 8 09:00:07 2020 +1000
gallium: add a level parameter to resource parameter get
For lavapipe interface to llvmpipe there is a need to retrieve per-level
info, so this seems like the best interface to use for it.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6639>
---
src/gallium/auxiliary/driver_ddebug/dd_screen.c | 3 ++-
src/gallium/auxiliary/driver_noop/noop_pipe.c | 3 ++-
src/gallium/auxiliary/driver_rbug/rbug_screen.c | 3 ++-
src/gallium/auxiliary/driver_trace/tr_screen.c | 3 ++-
src/gallium/auxiliary/util/u_tests.c | 10 +++++-----
src/gallium/drivers/iris/iris_resource.c | 1 +
src/gallium/drivers/radeonsi/si_texture.c | 5 +++--
src/gallium/frontends/dri/dri2.c | 2 +-
src/gallium/include/pipe/p_screen.h | 1 +
9 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/src/gallium/auxiliary/driver_ddebug/dd_screen.c b/src/gallium/auxiliary/driver_ddebug/dd_screen.c
index 7e8ea4cca48..a0a8ab1b063 100644
--- a/src/gallium/auxiliary/driver_ddebug/dd_screen.c
+++ b/src/gallium/auxiliary/driver_ddebug/dd_screen.c
@@ -317,6 +317,7 @@ dd_screen_resource_get_param(struct pipe_screen *_screen,
struct pipe_resource *resource,
unsigned plane,
unsigned layer,
+ unsigned level,
enum pipe_resource_param param,
unsigned handle_usage,
uint64_t *value)
@@ -325,7 +326,7 @@ dd_screen_resource_get_param(struct pipe_screen *_screen,
struct pipe_context *pipe = _pipe ? dd_context(_pipe)->pipe : NULL;
return screen->resource_get_param(screen, pipe, resource, plane, layer,
- param, handle_usage, value);
+ level, param, handle_usage, value);
}
static void
diff --git a/src/gallium/auxiliary/driver_noop/noop_pipe.c b/src/gallium/auxiliary/driver_noop/noop_pipe.c
index d31f6134f80..496ccf00dec 100644
--- a/src/gallium/auxiliary/driver_noop/noop_pipe.c
+++ b/src/gallium/auxiliary/driver_noop/noop_pipe.c
@@ -161,6 +161,7 @@ static bool noop_resource_get_param(struct pipe_screen *pscreen,
struct pipe_resource *resource,
unsigned plane,
unsigned layer,
+ unsigned level,
enum pipe_resource_param param,
unsigned handle_usage,
uint64_t *value)
@@ -175,7 +176,7 @@ static bool noop_resource_get_param(struct pipe_screen *pscreen,
if (!tex)
return false;
- result = screen->resource_get_param(screen, NULL, tex, 0, 0, param,
+ result = screen->resource_get_param(screen, NULL, tex, 0, 0, 0, param,
handle_usage, value);
pipe_resource_reference(&tex, NULL);
return result;
diff --git a/src/gallium/auxiliary/driver_rbug/rbug_screen.c b/src/gallium/auxiliary/driver_rbug/rbug_screen.c
index ed6a3da83f9..e115620b558 100644
--- a/src/gallium/auxiliary/driver_rbug/rbug_screen.c
+++ b/src/gallium/auxiliary/driver_rbug/rbug_screen.c
@@ -268,6 +268,7 @@ rbug_screen_resource_get_param(struct pipe_screen *_screen,
struct pipe_resource *_resource,
unsigned plane,
unsigned layer,
+ unsigned level,
enum pipe_resource_param param,
unsigned handle_usage,
uint64_t *value)
@@ -279,7 +280,7 @@ rbug_screen_resource_get_param(struct pipe_screen *_screen,
struct pipe_resource *resource = rb_resource->resource;
return screen->resource_get_param(screen, rb_pipe ? rb_pipe->pipe : NULL,
- resource, plane, layer, param,
+ resource, plane, layer, level, param,
handle_usage, value);
}
diff --git a/src/gallium/auxiliary/driver_trace/tr_screen.c b/src/gallium/auxiliary/driver_trace/tr_screen.c
index a0943519ea5..56a70de894a 100644
--- a/src/gallium/auxiliary/driver_trace/tr_screen.c
+++ b/src/gallium/auxiliary/driver_trace/tr_screen.c
@@ -413,6 +413,7 @@ trace_screen_resource_get_param(struct pipe_screen *_screen,
struct pipe_resource *resource,
unsigned plane,
unsigned layer,
+ unsigned level,
enum pipe_resource_param param,
unsigned handle_usage,
uint64_t *value)
@@ -424,7 +425,7 @@ trace_screen_resource_get_param(struct pipe_screen *_screen,
/* TODO trace call */
return screen->resource_get_param(screen, tr_pipe ? tr_pipe->pipe : NULL,
- resource, plane, layer, param,
+ resource, plane, layer, level, param,
handle_usage, value);
}
diff --git a/src/gallium/auxiliary/util/u_tests.c b/src/gallium/auxiliary/util/u_tests.c
index c78f01d47a2..b149437b201 100644
--- a/src/gallium/auxiliary/util/u_tests.c
+++ b/src/gallium/auxiliary/util/u_tests.c
@@ -907,7 +907,7 @@ test_nv12(struct pipe_screen *screen)
struct pipe_resource *res = i == 2 ? tex->next : tex;
unsigned plane = i == 2 ? 0 : i;
- if (!screen->resource_get_param(screen, NULL, res, plane, 0,
+ if (!screen->resource_get_param(screen, NULL, res, plane, 0, 0,
PIPE_RESOURCE_PARAM_HANDLE_TYPE_KMS,
0, &handle[i].handle)) {
printf("resource_get_param failed\n");
@@ -915,7 +915,7 @@ test_nv12(struct pipe_screen *screen)
goto cleanup;
}
- if (!screen->resource_get_param(screen, NULL, res, plane, 0,
+ if (!screen->resource_get_param(screen, NULL, res, plane, 0, 0,
PIPE_RESOURCE_PARAM_HANDLE_TYPE_FD,
0, &handle[i].dmabuf)) {
printf("resource_get_param failed\n");
@@ -923,7 +923,7 @@ test_nv12(struct pipe_screen *screen)
goto cleanup;
}
- if (!screen->resource_get_param(screen, NULL, res, plane, 0,
+ if (!screen->resource_get_param(screen, NULL, res, plane, 0, 0,
PIPE_RESOURCE_PARAM_OFFSET,
0, &handle[i].offset)) {
printf("resource_get_param failed\n");
@@ -931,7 +931,7 @@ test_nv12(struct pipe_screen *screen)
goto cleanup;
}
- if (!screen->resource_get_param(screen, NULL, res, plane, 0,
+ if (!screen->resource_get_param(screen, NULL, res, plane, 0, 0,
PIPE_RESOURCE_PARAM_STRIDE,
0, &handle[i].stride)) {
printf("resource_get_param failed\n");
@@ -939,7 +939,7 @@ test_nv12(struct pipe_screen *screen)
goto cleanup;
}
- if (!screen->resource_get_param(screen, NULL, res, plane, 0,
+ if (!screen->resource_get_param(screen, NULL, res, plane, 0, 0,
PIPE_RESOURCE_PARAM_NPLANES,
0, &handle[i].planes)) {
printf("resource_get_param failed\n");
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 19b4669c550..8747ef4aa8a 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -1152,6 +1152,7 @@ iris_resource_get_param(struct pipe_screen *pscreen,
struct pipe_resource *resource,
unsigned plane,
unsigned layer,
+ unsigned level,
enum pipe_resource_param param,
unsigned handle_usage,
uint64_t *value)
diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c
index 6aaf9ebfd04..ba419f9e151 100644
--- a/src/gallium/drivers/radeonsi/si_texture.c
+++ b/src/gallium/drivers/radeonsi/si_texture.c
@@ -589,6 +589,7 @@ static bool si_has_displayable_dcc(struct si_texture *tex)
static bool si_resource_get_param(struct pipe_screen *screen, struct pipe_context *context,
struct pipe_resource *resource, unsigned plane, unsigned layer,
+ unsigned level,
enum pipe_resource_param param, unsigned handle_usage,
uint64_t *value)
{
@@ -654,12 +655,12 @@ static void si_texture_get_info(struct pipe_screen *screen, struct pipe_resource
uint64_t value;
if (pstride) {
- si_resource_get_param(screen, NULL, resource, 0, 0, PIPE_RESOURCE_PARAM_STRIDE, 0, &value);
+ si_resource_get_param(screen, NULL, resource, 0, 0, 0, PIPE_RESOURCE_PARAM_STRIDE, 0, &value);
*pstride = value;
}
if (poffset) {
- si_resource_get_param(screen, NULL, resource, 0, 0, PIPE_RESOURCE_PARAM_OFFSET, 0, &value);
+ si_resource_get_param(screen, NULL, resource, 0, 0, 0, PIPE_RESOURCE_PARAM_OFFSET, 0, &value);
*poffset = value;
}
}
diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
index 6571b34cf6b..2215fcf0172 100644
--- a/src/gallium/frontends/dri/dri2.c
+++ b/src/gallium/frontends/dri/dri2.c
@@ -1215,7 +1215,7 @@ dri2_resource_get_param(__DRIimage *image, enum pipe_resource_param param,
return false;
return pscreen->resource_get_param(pscreen, NULL, image->texture,
- image->plane, 0, param, handle_usage,
+ image->plane, 0, 0, param, handle_usage,
value);
}
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
index 3002689aeed..53a192b6349 100644
--- a/src/gallium/include/pipe/p_screen.h
+++ b/src/gallium/include/pipe/p_screen.h
@@ -277,6 +277,7 @@ struct pipe_screen {
struct pipe_resource *resource,
unsigned plane,
unsigned layer,
+ unsigned level,
enum pipe_resource_param param,
unsigned handle_usage,
uint64_t *value);
More information about the mesa-commit
mailing list