<p dir="ltr">Please see if you can't rejigger some stuff to make it all fit into 1024... I know it will have to grow for images, but let's try to limit the damage...</p>
<div class="gmail_quote">On Mar 31, 2016 12:09 PM, "Samuel Pitoiset" <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The compute launch descriptor only allows to set up 8 CBs, but OpenGL<br>
requires at least 12 UBOs. To bypass this limitation, we store the ubos<br>
info into the driver constant buffer. This will be only used for Kepler.<br>
<br>
This bumps the size of each shader area from 1K to 2K.<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/gallium/drivers/nouveau/nvc0/nvc0_compute.c        | 4 ++--<br>
 src/gallium/drivers/nouveau/nvc0/nvc0_context.h        | 6 +++---<br>
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c         | 2 +-<br>
 src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c | 8 ++++----<br>
 src/gallium/drivers/nouveau/nvc0/nvc0_tex.c            | 2 +-<br>
 src/gallium/drivers/nouveau/nvc0/nve4_compute.c        | 2 +-<br>
 6 files changed, 12 insertions(+), 12 deletions(-)<br>
<br>
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c<br>
index 6aaa7ce..360d25b 100644<br>
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c<br>
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c<br>
@@ -206,7 +206,7 @@ nvc0_compute_validate_driverconst(struct nvc0_context *nvc0)<br>
    struct nvc0_screen *screen = nvc0->screen;<br>
<br>
    BEGIN_NVC0(push, NVC0_CP(CB_SIZE), 3);<br>
-   PUSH_DATA (push, 1024);<br>
+   PUSH_DATA (push, 2048);<br>
    PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(5));<br>
    PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(5));<br>
    BEGIN_NVC0(push, NVC0_CP(CB_BIND), 1);<br>
@@ -224,7 +224,7 @@ nvc0_compute_validate_buffers(struct nvc0_context *nvc0)<br>
    int i;<br>
<br>
    BEGIN_NVC0(push, NVC0_CP(CB_SIZE), 3);<br>
-   PUSH_DATA (push, 1024);<br>
+   PUSH_DATA (push, 2048);<br>
    PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
    PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
    BEGIN_1IC0(push, NVC0_CP(CB_POS), 1 + 4 * NVC0_MAX_BUFFERS);<br>
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h<br>
index 34dff6a..021caa6 100644<br>
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h<br>
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h<br>
@@ -101,9 +101,9 @@<br>
 /* 6 user uniform buffers, at 64K each */<br>
 #define NVC0_CB_USR_INFO(s)         (s << 16)<br>
 #define NVC0_CB_USR_SIZE            (6 << 16)<br>
-/* 6 driver constbuts, at 1K each */<br>
-#define NVC0_CB_AUX_INFO(s)         NVC0_CB_USR_SIZE + (s << 10)<br>
-#define NVC0_CB_AUX_SIZE            (6 << 10)<br>
+/* 6 driver constbuts, at 2K each */<br>
+#define NVC0_CB_AUX_INFO(s)         NVC0_CB_USR_SIZE + (s << 11)<br>
+#define NVC0_CB_AUX_SIZE            (6 << 11)<br>
 /* XXX: Figure out what this UNK data is. */<br>
 #define NVC0_CB_AUX_UNK_INFO        0x000<br>
 #define NVC0_CB_AUX_UNK_SIZE        (8 * 4)<br>
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c<br>
index 553c001..bf011c4 100644<br>
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c<br>
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c<br>
@@ -921,7 +921,7 @@ nvc0_screen_create(struct nouveau_device *dev)<br>
       /* TIC and TSC entries for each unit (nve4+ only) */<br>
       /* auxiliary constants (6 user clip planes, base instance id) */<br>
       BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);<br>
-      PUSH_DATA (push, 1024);<br>
+      PUSH_DATA (push, 2048);<br>
       PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));<br>
       PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));<br>
       BEGIN_NVC0(push, NVC0_3D(CB_BIND(i)), 1);<br>
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c<br>
index 9c64482..ad45323 100644<br>
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c<br>
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c<br>
@@ -183,7 +183,7 @@ nvc0_validate_fb(struct nvc0_context *nvc0)<br>
<br>
     ms = 1 << ms_mode;<br>
     BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);<br>
-    PUSH_DATA (push, 1024);<br>
+    PUSH_DATA (push, 2048);<br>
     PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(4));<br>
     PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(4));<br>
     BEGIN_1IC0(push, NVC0_3D(CB_POS), 1 + 2 * ms);<br>
@@ -317,7 +317,7 @@ nvc0_upload_uclip_planes(struct nvc0_context *nvc0, unsigned s)<br>
    struct nvc0_screen *screen = nvc0->screen;<br>
<br>
    BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);<br>
-   PUSH_DATA (push, 1024);<br>
+   PUSH_DATA (push, 2048);<br>
    PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
    PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
    BEGIN_1IC0(push, NVC0_3D(CB_POS), PIPE_MAX_CLIP_PLANES * 4 + 1);<br>
@@ -484,7 +484,7 @@ nvc0_validate_buffers(struct nvc0_context *nvc0)<br>
<br>
    for (s = 0; s < 5; s++) {<br>
       BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);<br>
-      PUSH_DATA (push, 1024);<br>
+      PUSH_DATA (push, 2048);<br>
       PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
       PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
       BEGIN_1IC0(push, NVC0_3D(CB_POS), 1 + 4 * NVC0_MAX_BUFFERS);<br>
@@ -551,7 +551,7 @@ nvc0_validate_driverconst(struct nvc0_context *nvc0)<br>
<br>
    for (i = 0; i < 5; ++i) {<br>
       BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);<br>
-      PUSH_DATA (push, 1024);<br>
+      PUSH_DATA (push, 2048);<br>
       PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));<br>
       PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));<br>
       BEGIN_NVC0(push, NVC0_3D(CB_BIND(i)), 1);<br>
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c<br>
index ce6a6dc..9baebdf 100644<br>
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c<br>
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c<br>
@@ -718,7 +718,7 @@ nve4_set_tex_handles(struct nvc0_context *nvc0)<br>
       if (!dirty)<br>
          continue;<br>
       BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);<br>
-      PUSH_DATA (push, 1024);<br>
+      PUSH_DATA (push, 2048);<br>
       PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
       PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));<br>
       do {<br>
diff --git a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c<br>
index 5f34092..ee09abb 100644<br>
--- a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c<br>
+++ b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c<br>
@@ -502,7 +502,7 @@ nve4_compute_setup_launch_desc(struct nvc0_context *nvc0,<br>
                                  NVC0_CB_USR_INFO(5), 1 << 16);<br>
    }<br>
    nve4_cp_launch_desc_set_cb(desc, 7, screen->uniform_bo,<br>
-                              NVC0_CB_AUX_INFO(5), 1 << 10);<br>
+                              NVC0_CB_AUX_INFO(5), 1 << 11);<br>
 }<br>
<br>
 static inline struct nve4_cp_launch_desc *<br>
--<br>
2.7.4<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>