mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 15:50:17 +01:00
freedreno/a4xx: only align slices in non-layer_first textures
When layer is the container, slices are tightly packed inside of each layer. We don't need any additional alignment. On a3xx, each slice contains all the layers, so having alignment makes sense. This fixes a whole slew of array-related piglits, including texelFetch and tex-miplevel-selection varieties. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: mesa-stable@lists.freedesktop.org
This commit is contained in:
parent
428146522b
commit
ecb0dcd34c
1 changed files with 4 additions and 2 deletions
|
|
@ -551,7 +551,7 @@ fd_resource_create(struct pipe_screen *pscreen,
|
|||
struct fd_resource *rsc = CALLOC_STRUCT(fd_resource);
|
||||
struct pipe_resource *prsc = &rsc->base.b;
|
||||
enum pipe_format format = tmpl->format;
|
||||
uint32_t size;
|
||||
uint32_t size, alignment;
|
||||
|
||||
DBG("target=%d, format=%s, %ux%ux%u, array_size=%u, last_level=%u, "
|
||||
"nr_samples=%u, usage=%u, bind=%x, flags=%x",
|
||||
|
|
@ -583,6 +583,7 @@ fd_resource_create(struct pipe_screen *pscreen,
|
|||
|
||||
assert(rsc->cpp);
|
||||
|
||||
alignment = slice_alignment(pscreen, tmpl);
|
||||
if (is_a4xx(fd_screen(pscreen))) {
|
||||
switch (tmpl->target) {
|
||||
case PIPE_TEXTURE_3D:
|
||||
|
|
@ -590,11 +591,12 @@ fd_resource_create(struct pipe_screen *pscreen,
|
|||
break;
|
||||
default:
|
||||
rsc->layer_first = true;
|
||||
alignment = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
size = setup_slices(rsc, slice_alignment(pscreen, tmpl), format);
|
||||
size = setup_slices(rsc, alignment, format);
|
||||
|
||||
if (rsc->layer_first) {
|
||||
rsc->layer_size = align(size, 4096);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue