mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 23:50:11 +01:00
etnaviv: Supertiled texture support on gc3000
Support supertiled textures on hardware that has the appropriate
feature flag SUPERTILED_TEXTURE.
Most of the scaffolding was already in place in etna_layout_multiple:
case ETNA_LAYOUT_SUPER_TILED:
*paddingX = 64;
*paddingY = 64;
*halign = TEXTURE_HALIGN_SUPER_TILED;
So this is just a matter of allowing it.
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
53e39f6df4
commit
9da0cd56c3
2 changed files with 11 additions and 8 deletions
|
|
@ -231,12 +231,9 @@ etna_resource_create(struct pipe_screen *pscreen,
|
|||
{
|
||||
struct etna_screen *screen = etna_screen(pscreen);
|
||||
|
||||
/* Figure out what tiling to use -- for now, assume that textures cannot be
|
||||
* supertiled, and cannot be linear.
|
||||
* There is a feature flag SUPERTILED_TEXTURE (not supported on any known hw)
|
||||
* that may allow this, as well
|
||||
* as LINEAR_TEXTURE_SUPPORT (supported on gc880 and gc2000 at least), but
|
||||
* not sure how it works.
|
||||
/* Figure out what tiling to use -- for now, assume that texture cannot be linear.
|
||||
* there is a capability LINEAR_TEXTURE_SUPPORT (supported on gc880 and
|
||||
* gc2000 at least), but not sure how it works.
|
||||
* Buffers always have LINEAR layout.
|
||||
*/
|
||||
unsigned layout = ETNA_LAYOUT_LINEAR;
|
||||
|
|
|
|||
|
|
@ -129,12 +129,18 @@ etna_resource_sampler_compatible(struct etna_resource *res)
|
|||
if (util_format_is_compressed(res->base.format))
|
||||
return true;
|
||||
|
||||
/* The sampler (as we currently know it) only accepts tiled layouts */
|
||||
struct etna_screen *screen = etna_screen(res->base.screen);
|
||||
/* This GPU supports texturing from supertiled textures? */
|
||||
if (res->layout == ETNA_LAYOUT_SUPER_TILED && VIV_FEATURE(screen, chipMinorFeatures2, SUPERTILED_TEXTURE))
|
||||
return true;
|
||||
|
||||
/* TODO: LINEAR_TEXTURE_SUPPORT */
|
||||
|
||||
/* Otherwise, only support tiled layouts */
|
||||
if (res->layout != ETNA_LAYOUT_TILED)
|
||||
return false;
|
||||
|
||||
/* If we have HALIGN support, we can allow for the RS padding */
|
||||
struct etna_screen *screen = etna_screen(res->base.screen);
|
||||
if (VIV_FEATURE(screen, chipMinorFeatures1, TEXTURE_HALIGN))
|
||||
return true;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue