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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user