st/dri: Set next in template instead of after creation. (v2)
This should prevent horrors like Iris has with the delayed calls to iris_resource_finish_aux_import just because info is not available at allocation time. AFAICT all drivers just copy the template except radeonsi/r600 which reset the next pointer. AFAICT there is also no other place we get a state tracker setting next ptrs on a resource. v2: Updated Gallium docs. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3792>
This commit is contained in:
committed by
Marge Bot
parent
a1e453f504
commit
afd9274d48
@@ -943,7 +943,11 @@ replaced by ``nr_storage_samples``.
|
||||
|
||||
**flags** bitmask of PIPE_RESOURCE_FLAG flags.
|
||||
|
||||
**next**: Pointer to the next plane for resources that consist of multiple
|
||||
memory planes.
|
||||
|
||||
As a corollary, this mean resources for an image with multiple planes have
|
||||
to be created starting from the highest plane.
|
||||
|
||||
resource_changed
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -918,7 +918,6 @@ r600_texture_create_object(struct pipe_screen *screen,
|
||||
|
||||
resource = &rtex->resource;
|
||||
resource->b.b = *base;
|
||||
resource->b.b.next = NULL;
|
||||
resource->b.vtbl = &r600_texture_vtbl;
|
||||
pipe_reference_init(&resource->b.b.reference, 1);
|
||||
resource->b.b.screen = screen;
|
||||
|
||||
@@ -1210,7 +1210,6 @@ static struct si_texture *si_texture_create_object(struct pipe_screen *screen,
|
||||
|
||||
resource = &tex->buffer;
|
||||
resource->b.b = *base;
|
||||
resource->b.b.next = NULL;
|
||||
resource->b.vtbl = &si_texture_vtbl;
|
||||
pipe_reference_init(&resource->b.b.reference, 1);
|
||||
resource->b.b.screen = screen;
|
||||
|
||||
@@ -776,6 +776,7 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
|
||||
for (i = (use_lowered ? map->nplanes : num_handles) - 1; i >= 0; i--) {
|
||||
struct pipe_resource *tex;
|
||||
|
||||
templ.next = img->texture;
|
||||
templ.width0 = width >> map->planes[i].width_shift;
|
||||
templ.height0 = height >> map->planes[i].height_shift;
|
||||
if (use_lowered)
|
||||
@@ -793,7 +794,6 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tex->next = img->texture;
|
||||
img->texture = tex;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user