Mesa (master): ilo: add generic ilo_render_3dprimitive()

Chia-I Wu olv at kemper.freedesktop.org
Fri Mar 6 19:29:21 UTC 2015


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

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Sat Mar  7 01:44:33 2015 +0800

ilo: add generic ilo_render_3dprimitive()

It replaces gen[6-8]_3dprimitive().

---

 src/gallium/drivers/ilo/ilo_render_gen.h  |   24 ++++++++++++++++++++++++
 src/gallium/drivers/ilo/ilo_render_gen6.c |   18 ++----------------
 src/gallium/drivers/ilo/ilo_render_gen7.c |   21 ++-------------------
 src/gallium/drivers/ilo/ilo_render_gen8.c |   19 +------------------
 4 files changed, 29 insertions(+), 53 deletions(-)

diff --git a/src/gallium/drivers/ilo/ilo_render_gen.h b/src/gallium/drivers/ilo/ilo_render_gen.h
index 9657798..f2bcf7a 100644
--- a/src/gallium/drivers/ilo/ilo_render_gen.h
+++ b/src/gallium/drivers/ilo/ilo_render_gen.h
@@ -30,6 +30,7 @@
 
 #include "ilo_common.h"
 #include "ilo_builder.h"
+#include "ilo_builder_3d.h"
 #include "ilo_builder_render.h"
 #include "ilo_state.h"
 #include "ilo_render.h"
@@ -374,6 +375,29 @@ ilo_render_pipe_control(struct ilo_render *r, uint32_t dw1)
    r->state.deferred_pipe_control_dw1 &= ~dw1;
 }
 
+/**
+ * A convenient wrapper for gen{6,7}_3DPRIMITIVE().
+ */
+static inline void
+ilo_render_3dprimitive(struct ilo_render *r,
+                       const struct pipe_draw_info *info,
+                       const struct ilo_ib_state *ib)
+{
+   ILO_DEV_ASSERT(r->dev, 6, 8);
+
+   if (r->state.deferred_pipe_control_dw1)
+      ilo_render_pipe_control(r, r->state.deferred_pipe_control_dw1);
+
+   /* 3DPRIMITIVE */
+   if (ilo_dev_gen(r->dev) >= ILO_GEN(7))
+      gen7_3DPRIMITIVE(r->builder, info, ib);
+   else
+      gen6_3DPRIMITIVE(r->builder, info, ib);
+
+   r->state.current_pipe_control_dw1 = 0;
+   assert(!r->state.deferred_pipe_control_dw1);
+}
+
 void
 gen6_wa_pre_pipe_control(struct ilo_render *r, uint32_t dw1);
 
diff --git a/src/gallium/drivers/ilo/ilo_render_gen6.c b/src/gallium/drivers/ilo/ilo_render_gen6.c
index 898b98a..902d398 100644
--- a/src/gallium/drivers/ilo/ilo_render_gen6.c
+++ b/src/gallium/drivers/ilo/ilo_render_gen6.c
@@ -38,20 +38,6 @@
 #include "ilo_state.h"
 #include "ilo_render_gen.h"
 
-static void
-gen6_3dprimitive(struct ilo_render *r,
-                 const struct pipe_draw_info *info,
-                 const struct ilo_ib_state *ib)
-{
-   ILO_DEV_ASSERT(r->dev, 6, 6);
-
-   /* 3DPRIMITIVE */
-   gen6_3DPRIMITIVE(r->builder, info, ib);
-
-   r->state.current_pipe_control_dw1 = 0;
-   assert(!r->state.deferred_pipe_control_dw1);
-}
-
 /**
  * This should be called before PIPE_CONTROL.
  */
@@ -835,7 +821,7 @@ ilo_render_emit_draw_commands_gen6(struct ilo_render *render,
    gen6_draw_sf_rect(render, vec, session);
    gen6_draw_vf(render, vec, session);
 
-   gen6_3dprimitive(render, vec->draw, &vec->ib);
+   ilo_render_3dprimitive(render, vec->draw, &vec->ib);
 }
 
 static void
@@ -980,7 +966,7 @@ ilo_render_emit_rectlist_commands_gen6(struct ilo_render *r,
    gen6_3DSTATE_DRAWING_RECTANGLE(r->builder, 0, 0,
          blitter->fb.width, blitter->fb.height);
 
-   gen6_3dprimitive(r, &blitter->draw, NULL);
+   ilo_render_3dprimitive(r, &blitter->draw, NULL);
 }
 
 int
diff --git a/src/gallium/drivers/ilo/ilo_render_gen7.c b/src/gallium/drivers/ilo/ilo_render_gen7.c
index a8a222d..8801d14 100644
--- a/src/gallium/drivers/ilo/ilo_render_gen7.c
+++ b/src/gallium/drivers/ilo/ilo_render_gen7.c
@@ -36,23 +36,6 @@
 #include "ilo_render_gen.h"
 
 static void
-gen7_3dprimitive(struct ilo_render *r,
-                 const struct pipe_draw_info *info,
-                 const struct ilo_ib_state *ib)
-{
-   ILO_DEV_ASSERT(r->dev, 7, 7.5);
-
-   if (r->state.deferred_pipe_control_dw1)
-      ilo_render_pipe_control(r, r->state.deferred_pipe_control_dw1);
-
-   /* 3DPRIMITIVE */
-   gen7_3DPRIMITIVE(r->builder, info, ib);
-
-   r->state.current_pipe_control_dw1 = 0;
-   r->state.deferred_pipe_control_dw1 = 0;
-}
-
-static void
 gen7_wa_post_3dstate_push_constant_alloc_ps(struct ilo_render *r)
 {
    /*
@@ -671,7 +654,7 @@ ilo_render_emit_draw_commands_gen7(struct ilo_render *render,
    gen6_draw_sf_rect(render, vec, session);
    gen6_draw_vf(render, vec, session);
 
-   gen7_3dprimitive(render, vec->draw, &vec->ib);
+   ilo_render_3dprimitive(render, vec->draw, &vec->ib);
 }
 
 static void
@@ -871,7 +854,7 @@ ilo_render_emit_rectlist_commands_gen7(struct ilo_render *r,
    if (ilo_dev_gen(r->dev) == ILO_GEN(7))
       gen7_wa_post_ps_and_later(r);
 
-   gen7_3dprimitive(r, &blitter->draw, NULL);
+   ilo_render_3dprimitive(r, &blitter->draw, NULL);
 }
 
 int
diff --git a/src/gallium/drivers/ilo/ilo_render_gen8.c b/src/gallium/drivers/ilo/ilo_render_gen8.c
index 49c5e7a..f6d8d66 100644
--- a/src/gallium/drivers/ilo/ilo_render_gen8.c
+++ b/src/gallium/drivers/ilo/ilo_render_gen8.c
@@ -36,23 +36,6 @@
 #include "ilo_render_gen.h"
 
 static void
-gen8_3dprimitive(struct ilo_render *r,
-                 const struct pipe_draw_info *info,
-                 const struct ilo_ib_state *ib)
-{
-   ILO_DEV_ASSERT(r->dev, 8, 8);
-
-   if (r->state.deferred_pipe_control_dw1)
-      ilo_render_pipe_control(r, r->state.deferred_pipe_control_dw1);
-
-   /* 3DPRIMITIVE */
-   gen7_3DPRIMITIVE(r->builder, info, ib);
-
-   r->state.current_pipe_control_dw1 = 0;
-   r->state.deferred_pipe_control_dw1 = 0;
-}
-
-static void
 gen8_wa_pre_depth(struct ilo_render *r)
 {
    ILO_DEV_ASSERT(r->dev, 8, 8);
@@ -298,7 +281,7 @@ ilo_render_emit_draw_commands_gen8(struct ilo_render *render,
    gen6_draw_sf_rect(render, vec, session);
    gen8_draw_vf(render, vec, session);
 
-   gen8_3dprimitive(render, vec->draw, &vec->ib);
+   ilo_render_3dprimitive(render, vec->draw, &vec->ib);
 }
 
 int




More information about the mesa-commit mailing list