diff options
Diffstat (limited to 'src/gallium/drivers/etnaviv/etnaviv_screen.c')
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_screen.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 9aca90642c3..fccb8dccfb8 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -748,6 +748,21 @@ etna_get_specs(struct etna_screen *screen) screen->specs.max_vs_uniforms = 256; screen->specs.max_ps_uniforms = 256; } + /* unified uniform memory on GC3000 - HALTI1 feature bit is just a guess + */ + if (VIV_FEATURE(screen, chipMinorFeatures2, HALTI1)) { + screen->specs.has_unified_uniforms = true; + screen->specs.vs_uniforms_offset = VIVS_SH_UNIFORMS(0); + /* hardcode PS uniforms to start after end of VS uniforms - + * for more flexibility this offset could be variable based on the + * shader. + */ + screen->specs.ps_uniforms_offset = VIVS_SH_UNIFORMS(screen->specs.max_vs_uniforms*4); + } else { + screen->specs.has_unified_uniforms = false; + screen->specs.vs_uniforms_offset = VIVS_VS_UNIFORMS(0); + screen->specs.ps_uniforms_offset = VIVS_PS_UNIFORMS(0); + } screen->specs.max_texture_size = VIV_FEATURE(screen, chipMinorFeatures0, TEXTURE_8K) ? 8192 : 2048; |