diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_resource.c | 9 | ||||
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_texture.c | 10 |
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; |