Mesa (master): iris: Track last VS URB entry size

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Mar 8 18:02:08 UTC 2019


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

Author: Sagar Ghuge <sagar.ghuge at intel.com>
Date:   Wed Mar  6 17:05:23 2019 -0800

iris: Track last VS URB entry size

Return immediately if last VS URB entry size is good enough for BLORP
operation

v2: Fix comments (Caio)

Signed-off-by: Sagar Ghuge <sagar.ghuge at intel.com>
Suggested-by: Kenneth Graunke<kenneth at whitecape.org>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/gallium/drivers/iris/iris_blorp.c   | 6 ++++++
 src/gallium/drivers/iris/iris_context.h | 3 +++
 src/gallium/drivers/iris/iris_state.c   | 2 ++
 3 files changed, 11 insertions(+)

diff --git a/src/gallium/drivers/iris/iris_blorp.c b/src/gallium/drivers/iris/iris_blorp.c
index cd6d74960cb..a3df22c0a40 100644
--- a/src/gallium/drivers/iris/iris_blorp.c
+++ b/src/gallium/drivers/iris/iris_blorp.c
@@ -249,6 +249,12 @@ blorp_emit_urb_config(struct blorp_batch *blorp_batch,
 
    unsigned size[4] = { vs_entry_size, 1, 1, 1 };
 
+   /* If last VS URB size is good enough for what the BLORP operation needed,
+    * then we can skip reconfiguration
+    */
+   if (ice->shaders.last_vs_entry_size >= vs_entry_size)
+      return;
+
    genX(emit_urb_setup)(ice, batch, size, false, false);
    ice->state.dirty |= IRIS_DIRTY_URB;
 }
diff --git a/src/gallium/drivers/iris/iris_context.h b/src/gallium/drivers/iris/iris_context.h
index d4f88f2a907..8f91d28446f 100644
--- a/src/gallium/drivers/iris/iris_context.h
+++ b/src/gallium/drivers/iris/iris_context.h
@@ -502,6 +502,9 @@ struct iris_context {
 
       unsigned urb_size;
 
+      /* Track last VS URB entry size */
+      unsigned last_vs_entry_size;
+
       /**
        * Scratch buffers for various sizes and stages.
        *
diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index c6dc065dc3b..469d149dfba 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -5866,6 +5866,8 @@ genX(emit_urb_setup)(struct iris_context *ice,
    unsigned entries[4];
    unsigned start[4];
 
+   ice->shaders.last_vs_entry_size = size[MESA_SHADER_VERTEX];
+
    gen_get_urb_config(devinfo, 1024 * push_size_kB,
                       1024 * ice->shaders.urb_size,
                       tess_present, gs_present,




More information about the mesa-commit mailing list