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@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6639>
This commit is contained in:
Dave Airlie
2020-09-08 09:00:07 +10:00
committed by Marge Bot
parent 0e3f2e6321
commit e9724722a3
9 changed files with 19 additions and 12 deletions
@@ -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
@@ -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;
@@ -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);
}
@@ -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);
}
+5 -5
View File
@@ -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");
+1
View File
@@ -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)
+3 -2
View File
@@ -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;
}
}
+1 -1
View File
@@ -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);
}
+1
View File
@@ -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);