mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
etnaviv: Don't over-pad compressed textures
HALIGN_FOUR/SIXTEEN has no meaning for compressed textures, and we can't render to them anyway. So use the tightest possible packing. This avoids bugs with non-power-of-two block sizes. Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
parent
93ba3f29bb
commit
96463614a3
1 changed files with 15 additions and 9 deletions
|
|
@ -209,18 +209,24 @@ etna_resource_alloc(struct pipe_screen *pscreen, unsigned layout,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* If we have the TEXTURE_HALIGN feature, we can always align to the
|
||||
* resolve engine's width. If not, we must not align resources used
|
||||
* only for textures. */
|
||||
bool rs_align = VIV_FEATURE(screen, chipMinorFeatures1, TEXTURE_HALIGN) ||
|
||||
!etna_resource_sampler_only(templat);
|
||||
|
||||
/* Determine needed padding (alignment of height/width) */
|
||||
unsigned paddingX = 0, paddingY = 0;
|
||||
unsigned halign = TEXTURE_HALIGN_FOUR;
|
||||
etna_layout_multiple(layout, screen->specs.pixel_pipes, rs_align, &paddingX,
|
||||
&paddingY, &halign);
|
||||
assert(paddingX && paddingY);
|
||||
if (!util_format_is_compressed(templat->format)) {
|
||||
/* If we have the TEXTURE_HALIGN feature, we can always align to the
|
||||
* resolve engine's width. If not, we must not align resources used
|
||||
* only for textures. */
|
||||
bool rs_align = VIV_FEATURE(screen, chipMinorFeatures1, TEXTURE_HALIGN) ||
|
||||
!etna_resource_sampler_only(templat);
|
||||
etna_layout_multiple(layout, screen->specs.pixel_pipes, rs_align, &paddingX,
|
||||
&paddingY, &halign);
|
||||
assert(paddingX && paddingY);
|
||||
} else {
|
||||
/* Compressed textures are padded to their block size, but we don't have
|
||||
* to do anything special for that. */
|
||||
paddingX = 1;
|
||||
paddingY = 1;
|
||||
}
|
||||
|
||||
if (templat->target != PIPE_BUFFER)
|
||||
etna_adjust_rs_align(screen->specs.pixel_pipes, NULL, &paddingY);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue