Module: Mesa
Branch: master
Commit: 797a2e4fd0306b214e366a75caf2d54f17601393
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=797a2e4fd0306b214e366a75caf2d54f17601393

Author: Christian Gmeiner <christian.gmei...@gmail.com>
Date:   Wed Aug 14 11:39:13 2019 +0200

etnaviv: update logic to determine uniform limits

Taken 1:1 from the header file.

Signed-off-by: Christian Gmeiner <christian.gmei...@gmail.com>
Reviewed-by: Lucas Stach l.st...@pengutronix.de

---

 src/gallium/drivers/etnaviv/etnaviv_screen.c | 30 ++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c 
b/src/gallium/drivers/etnaviv/etnaviv_screen.c
index 28b577bc3a5..e392f575e71 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
@@ -529,14 +529,36 @@ etna_screen_query_dmabuf_modifiers(struct pipe_screen 
*pscreen,
 static void
 etna_determine_uniform_limits(struct etna_screen *screen)
 {
-   /* from QueryShaderCaps in kernel driver */
-   if (screen->model < chipModel_GC4000) {
-      screen->specs.max_vs_uniforms = 168;
+   /* values for the non unified case are taken from
+    * gcmCONFIGUREUNIFORMS in the Vivante kernel driver file
+    * drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h.
+    */
+   if (screen->model == chipModel_GC2000 &&
+       (screen->revision == 0x5118 || screen->revision == 0x5140)) {
+      screen->specs.max_vs_uniforms = 256;
       screen->specs.max_ps_uniforms = 64;
-   } else {
+   } else if (screen->specs.num_constants == 320) {
+      screen->specs.max_vs_uniforms = 256;
+      screen->specs.max_ps_uniforms = 64;
+   } else if (screen->specs.num_constants > 256 &&
+              screen->model == chipModel_GC1000) {
+      /* All GC1000 series chips can only support 64 uniforms for ps on 
non-unified const mode. */
+      screen->specs.max_vs_uniforms = 256;
+      screen->specs.max_ps_uniforms = 64;
+   } else if (screen->specs.num_constants > 256) {
       screen->specs.max_vs_uniforms = 256;
       screen->specs.max_ps_uniforms = 256;
    }
+    else if (screen->specs.num_constants == 256)
+    {
+      screen->specs.max_vs_uniforms = 256;
+      screen->specs.max_ps_uniforms = 256;
+    }
+    else
+    {
+      screen->specs.max_vs_uniforms = 168;
+      screen->specs.max_ps_uniforms = 64;
+    }
 }
 
 static bool

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to