summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/etnaviv/etnaviv_resource.c9
-rw-r--r--src/gallium/drivers/etnaviv/etnaviv_texture.c10
2 files changed, 11 insertions, 8 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c
index db9acacae20..2c5e9298e55 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c
@@ -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;
diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.c b/src/gallium/drivers/etnaviv/etnaviv_texture.c
index 93b077b5045..3a842381ac2 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_texture.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_texture.c
@@ -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;