From acd3dff4637d521d5e2004ed96b8b0ae5a461a30 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 18 Nov 2017 10:44:34 +0100 Subject: etnaviv: GC7000: Update screen specs for HALTI5 - This core must load shaders from memory (AFAIK) - Yet another new location for UNIFORMS Signed-off-by: Wladimir J. van der Laan Reviewed-by: Christian Gmeiner --- src/gallium/drivers/etnaviv/etnaviv_screen.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/gallium/drivers') diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 1280d46982f..6d6165e45ce 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -738,7 +738,13 @@ etna_get_specs(struct etna_screen *screen) screen->specs.has_halti2_instructions = VIV_FEATURE(screen, chipMinorFeatures4, HALTI2); - if (VIV_FEATURE(screen, chipMinorFeatures3, INSTRUCTION_CACHE)) { + if (screen->specs.halti >= 5) { + /* GC7000 - this core must load shaders from memory. */ + screen->specs.vs_offset = 0; + screen->specs.ps_offset = 0; + screen->specs.max_instructions = 0; /* Do not program shaders manually */ + screen->specs.has_icache = true; + } else if (VIV_FEATURE(screen, chipMinorFeatures3, INSTRUCTION_CACHE)) { /* GC3000 - this core is capable of loading shaders from * memory. It can also run shaders from registers, as a fallback, but * "max_instructions" does not have the correct value. It has place for @@ -791,9 +797,14 @@ 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)) { + + if (screen->specs.halti >= 5) { + screen->specs.has_unified_uniforms = true; + screen->specs.vs_uniforms_offset = VIVS_SH_HALTI5_UNIFORMS_MIRROR(0); + screen->specs.ps_uniforms_offset = VIVS_SH_HALTI5_UNIFORMS(screen->specs.max_vs_uniforms*4); + } else if (screen->specs.halti >= 1) { + /* unified uniform memory on GC3000 - HALTI1 feature bit is just a guess + */ 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 - -- cgit v1.2.3