ilo: add generic ilo_render_3dprimitive()
authorChia-I Wu <olvaffe@gmail.com>
Fri, 6 Mar 2015 17:44:33 +0000 (01:44 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Fri, 6 Mar 2015 17:45:52 +0000 (01:45 +0800)
It replaces gen[6-8]_3dprimitive().

src/gallium/drivers/ilo/ilo_render_gen.h
src/gallium/drivers/ilo/ilo_render_gen6.c
src/gallium/drivers/ilo/ilo_render_gen7.c
src/gallium/drivers/ilo/ilo_render_gen8.c

index 96577989852f42e2559a63787b64560f6f5c0838..f2bcf7a09bcd93d7002e0bd0b46f2853e1b23c1c 100644 (file)
@@ -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);
 
index 898b98a561fc23d845c1a9e7e0d8a7e7474633de..902d398e0cb9a6c9f70f9f7400e3089855a976ec 100644 (file)
 #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
index a8a222d05ff196258479ea6879713ec2f39f85cd..8801d147217e27378c1eb44c98178eebc31cbe22 100644 (file)
 #include "ilo_state.h"
 #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
index 49c5e7a4d3b420e1264cc592b710cb3a04b62817..f6d8d6666a3af687e33daf253e3eeefd727aaef2 100644 (file)
 #include "ilo_state.h"
 #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)
 {
@@ -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