ilo: convert GPE state functions to use ilo_builder
authorChia-I Wu <olvaffe@gmail.com>
Sat, 6 Sep 2014 17:10:01 +0000 (01:10 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Tue, 9 Sep 2014 05:31:37 +0000 (13:31 +0800)
Make these changes

  ilo_cp_steal_ptr() and memcpy() -> ilo_builder_state_write()
  ilo_cp_steal_ptr()              -> ilo_builder_state_pointer()

and use this chance to drop the "_emit_" infix.

src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c
src/gallium/drivers/ilo/ilo_gpe_gen6.h
src/gallium/drivers/ilo/ilo_gpe_gen7.h

index 40f356e97479c226d0e3c1b9e1c96802c5bc8d9b..e236e02be3ee6ea86c59ab795bfb88a8a61d04a1 100644 (file)
@@ -797,24 +797,24 @@ gen6_pipeline_state_viewports(struct ilo_3d_pipeline *p,
 {
    /* SF_CLIP_VIEWPORT and CC_VIEWPORT */
    if (p->dev->gen >= ILO_GEN(7) && DIRTY(VIEWPORT)) {
-      p->state.SF_CLIP_VIEWPORT = gen7_emit_SF_CLIP_VIEWPORT(p->dev,
-            ilo->viewport.cso, ilo->viewport.count, p->cp);
+      p->state.SF_CLIP_VIEWPORT = gen7_SF_CLIP_VIEWPORT(&p->cp->builder,
+            ilo->viewport.cso, ilo->viewport.count);
 
-      p->state.CC_VIEWPORT = gen6_emit_CC_VIEWPORT(p->dev,
-            ilo->viewport.cso, ilo->viewport.count, p->cp);
+      p->state.CC_VIEWPORT = gen6_CC_VIEWPORT(&p->cp->builder,
+            ilo->viewport.cso, ilo->viewport.count);
 
       session->viewport_state_changed = true;
    }
    /* SF_VIEWPORT, CLIP_VIEWPORT, and CC_VIEWPORT */
    else if (DIRTY(VIEWPORT)) {
-      p->state.CLIP_VIEWPORT = gen6_emit_CLIP_VIEWPORT(p->dev,
-            ilo->viewport.cso, ilo->viewport.count, p->cp);
+      p->state.CLIP_VIEWPORT = gen6_CLIP_VIEWPORT(&p->cp->builder,
+            ilo->viewport.cso, ilo->viewport.count);
 
-      p->state.SF_VIEWPORT = gen6_emit_SF_VIEWPORT(p->dev,
-            ilo->viewport.cso, ilo->viewport.count, p->cp);
+      p->state.SF_VIEWPORT = gen6_SF_VIEWPORT(&p->cp->builder,
+            ilo->viewport.cso, ilo->viewport.count);
 
-      p->state.CC_VIEWPORT = gen6_emit_CC_VIEWPORT(p->dev,
-            ilo->viewport.cso, ilo->viewport.count, p->cp);
+      p->state.CC_VIEWPORT = gen6_CC_VIEWPORT(&p->cp->builder,
+            ilo->viewport.cso, ilo->viewport.count);
 
       session->viewport_state_changed = true;
    }
@@ -827,8 +827,8 @@ gen6_pipeline_state_cc(struct ilo_3d_pipeline *p,
 {
    /* BLEND_STATE */
    if (DIRTY(BLEND) || DIRTY(FB) || DIRTY(DSA)) {
-      p->state.BLEND_STATE = gen6_emit_BLEND_STATE(p->dev,
-            ilo->blend, &ilo->fb, ilo->dsa, p->cp);
+      p->state.BLEND_STATE = gen6_BLEND_STATE(&p->cp->builder,
+            ilo->blend, &ilo->fb, ilo->dsa);
 
       session->cc_state_blend_changed = true;
    }
@@ -836,8 +836,8 @@ gen6_pipeline_state_cc(struct ilo_3d_pipeline *p,
    /* COLOR_CALC_STATE */
    if (DIRTY(DSA) || DIRTY(STENCIL_REF) || DIRTY(BLEND_COLOR)) {
       p->state.COLOR_CALC_STATE =
-         gen6_emit_COLOR_CALC_STATE(p->dev, &ilo->stencil_ref,
-               ilo->dsa->alpha_ref, &ilo->blend_color, p->cp);
+         gen6_COLOR_CALC_STATE(&p->cp->builder, &ilo->stencil_ref,
+               ilo->dsa->alpha_ref, &ilo->blend_color);
 
       session->cc_state_cc_changed = true;
    }
@@ -845,7 +845,7 @@ gen6_pipeline_state_cc(struct ilo_3d_pipeline *p,
    /* DEPTH_STENCIL_STATE */
    if (DIRTY(DSA)) {
       p->state.DEPTH_STENCIL_STATE =
-         gen6_emit_DEPTH_STENCIL_STATE(p->dev, ilo->dsa, p->cp);
+         gen6_DEPTH_STENCIL_STATE(&p->cp->builder, ilo->dsa);
 
       session->cc_state_dsa_changed = true;
    }
@@ -859,8 +859,8 @@ gen6_pipeline_state_scissors(struct ilo_3d_pipeline *p,
    /* SCISSOR_RECT */
    if (DIRTY(SCISSOR) || DIRTY(VIEWPORT)) {
       /* there should be as many scissors as there are viewports */
-      p->state.SCISSOR_RECT = gen6_emit_SCISSOR_RECT(p->dev,
-            &ilo->scissor, ilo->viewport.count, p->cp);
+      p->state.SCISSOR_RECT = gen6_SCISSOR_RECT(&p->cp->builder,
+            &ilo->scissor, ilo->viewport.count);
 
       session->scissor_state_changed = true;
    }
@@ -1191,16 +1191,15 @@ gen6_pipeline_state_samplers(struct ilo_3d_pipeline *p,
 
       for (i = 0; i < num_samplers; i++) {
          border_color_state[i] = (samplers[i]) ?
-            gen6_emit_SAMPLER_BORDER_COLOR_STATE(p->dev,
-                  samplers[i], p->cp) : 0;
+            gen6_SAMPLER_BORDER_COLOR_STATE(&p->cp->builder, samplers[i]) : 0;
       }
    }
 
    /* should we take the minimum of num_samplers and num_views? */
-   *sampler_state = gen6_emit_SAMPLER_STATE(p->dev,
+   *sampler_state = gen6_SAMPLER_STATE(&p->cp->builder,
          samplers, views,
          border_color_state,
-         MIN2(num_samplers, num_views), p->cp);
+         MIN2(num_samplers, num_views));
 }
 
 static void
@@ -1222,7 +1221,7 @@ gen6_pipeline_state_pcb(struct ilo_3d_pipeline *p,
          void *pcb;
 
          p->state.vs.PUSH_CONSTANT_BUFFER =
-            gen6_emit_push_constant_buffer(p->dev, total_size, &pcb, p->cp);
+            gen6_push_constant_buffer(&p->cp->builder, total_size, &pcb);
          p->state.vs.PUSH_CONSTANT_BUFFER_size = total_size;
 
          if (cbuf0_size) {
@@ -1265,7 +1264,7 @@ gen6_pipeline_state_pcb(struct ilo_3d_pipeline *p,
          void *pcb;
 
          p->state.wm.PUSH_CONSTANT_BUFFER =
-            gen6_emit_push_constant_buffer(p->dev, cbuf0_size, &pcb, p->cp);
+            gen6_push_constant_buffer(&p->cp->builder, cbuf0_size, &pcb);
          p->state.wm.PUSH_CONSTANT_BUFFER_size = cbuf0_size;
 
          if (cbuf0_size <= cbuf->cso[0].user_buffer_size) {
@@ -1675,18 +1674,18 @@ gen6_rectlist_states(struct ilo_3d_pipeline *p,
 {
    if (blitter->uses & ILO_BLITTER_USE_DSA) {
       session->DEPTH_STENCIL_STATE =
-         gen6_emit_DEPTH_STENCIL_STATE(p->dev, &blitter->dsa, p->cp);
+         gen6_DEPTH_STENCIL_STATE(&p->cp->builder, &blitter->dsa);
    }
 
    if (blitter->uses & ILO_BLITTER_USE_CC) {
       session->COLOR_CALC_STATE =
-         gen6_emit_COLOR_CALC_STATE(p->dev, &blitter->cc.stencil_ref,
-               blitter->cc.alpha_ref, &blitter->cc.blend_color, p->cp);
+         gen6_COLOR_CALC_STATE(&p->cp->builder, &blitter->cc.stencil_ref,
+               blitter->cc.alpha_ref, &blitter->cc.blend_color);
    }
 
    if (blitter->uses & ILO_BLITTER_USE_VIEWPORT) {
       session->CC_VIEWPORT =
-         gen6_emit_CC_VIEWPORT(p->dev, &blitter->viewport, 1, p->cp);
+         gen6_CC_VIEWPORT(&p->cp->builder, &blitter->viewport, 1);
    }
 }
 
index 6fde9ec1099dd0ff4a90283a7fafdd9539522db6..a2f9ccbb49eb7498909c08d944b46198ee430d3e 100644 (file)
@@ -848,18 +848,18 @@ gen7_rectlist_states(struct ilo_3d_pipeline *p,
 {
    if (blitter->uses & ILO_BLITTER_USE_DSA) {
       session->DEPTH_STENCIL_STATE =
-         gen6_emit_DEPTH_STENCIL_STATE(p->dev, &blitter->dsa, p->cp);
+         gen6_DEPTH_STENCIL_STATE(&p->cp->builder, &blitter->dsa);
    }
 
    if (blitter->uses & ILO_BLITTER_USE_CC) {
       session->COLOR_CALC_STATE =
-         gen6_emit_COLOR_CALC_STATE(p->dev, &blitter->cc.stencil_ref,
-               blitter->cc.alpha_ref, &blitter->cc.blend_color, p->cp);
+         gen6_COLOR_CALC_STATE(&p->cp->builder, &blitter->cc.stencil_ref,
+               blitter->cc.alpha_ref, &blitter->cc.blend_color);
    }
 
    if (blitter->uses & ILO_BLITTER_USE_VIEWPORT) {
       session->CC_VIEWPORT =
-         gen6_emit_CC_VIEWPORT(p->dev, &blitter->viewport, 1, p->cp);
+         gen6_CC_VIEWPORT(&p->cp->builder, &blitter->viewport, 1);
    }
 }
 
index 719c63700d1cf05688c111c0817f2bba129b7fb0..406e667c43028b8a7394b3a7628ed59629eb1e52 100644 (file)
@@ -506,7 +506,7 @@ gen6_emit_MEDIA_CURBE_LOAD(const struct ilo_dev_info *dev,
    ILO_GPE_VALID_GEN(dev, 6, 6);
 
    assert(buf % 32 == 0);
-   /* gen6_emit_push_constant_buffer() allocates buffers in 256-bit units */
+   /* gen6_push_constant_buffer() allocates buffers in 256-bit units */
    size = align(size, 32);
 
    ilo_cp_begin(cp, cmd_len);
@@ -1917,14 +1917,13 @@ gen6_emit_3DPRIMITIVE(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_INTERFACE_DESCRIPTOR_DATA(const struct ilo_dev_info *dev,
-                                    const struct ilo_shader_state **cs,
-                                    uint32_t *sampler_state,
-                                    int *num_samplers,
-                                    uint32_t *binding_table_state,
-                                    int *num_surfaces,
-                                    int num_ids,
-                                    struct ilo_cp *cp)
+gen6_INTERFACE_DESCRIPTOR_DATA(struct ilo_builder *builder,
+                               const struct ilo_shader_state **cs,
+                               uint32_t *sampler_state,
+                               int *num_samplers,
+                               uint32_t *binding_table_state,
+                               int *num_surfaces,
+                               int num_ids)
 {
    /*
     * From the Sandy Bridge PRM, volume 2 part 2, page 34:
@@ -1939,15 +1938,15 @@ gen6_emit_INTERFACE_DESCRIPTOR_DATA(const struct ilo_dev_info *dev,
     *     "(Interface Descriptor Data Start Address) Specifies the 32-byte
     *      aligned address of the Interface Descriptor data."
     */
-   const int state_align = 32 / 4;
+   const int state_align = 32;
    const int state_len = (32 / 4) * num_ids;
    uint32_t state_offset, *dw;
    int i;
 
-   ILO_GPE_VALID_GEN(dev, 6, 6);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 6);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_BLOB,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_BLOB, state_align, state_len, &dw);
 
    for (i = 0; i < num_ids; i++) {
       dw[0] = ilo_shader_get_kernel_offset(cs[i]);
@@ -1969,17 +1968,16 @@ gen6_emit_INTERFACE_DESCRIPTOR_DATA(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_SF_VIEWPORT(const struct ilo_dev_info *dev,
-                      const struct ilo_viewport_cso *viewports,
-                      unsigned num_viewports,
-                      struct ilo_cp *cp)
+gen6_SF_VIEWPORT(struct ilo_builder *builder,
+                 const struct ilo_viewport_cso *viewports,
+                 unsigned num_viewports)
 {
-   const int state_align = 32 / 4;
+   const int state_align = 32;
    const int state_len = 8 * num_viewports;
    uint32_t state_offset, *dw;
    unsigned i;
 
-   ILO_GPE_VALID_GEN(dev, 6, 6);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 6);
 
    /*
     * From the Sandy Bridge PRM, volume 2 part 1, page 262:
@@ -1989,8 +1987,8 @@ gen6_emit_SF_VIEWPORT(const struct ilo_dev_info *dev,
     */
    assert(num_viewports && num_viewports <= 16);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_SF_VIEWPORT,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_SF_VIEWPORT, state_align, state_len, &dw);
 
    for (i = 0; i < num_viewports; i++) {
       const struct ilo_viewport_cso *vp = &viewports[i];
@@ -2011,17 +2009,16 @@ gen6_emit_SF_VIEWPORT(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_CLIP_VIEWPORT(const struct ilo_dev_info *dev,
-                        const struct ilo_viewport_cso *viewports,
-                        unsigned num_viewports,
-                        struct ilo_cp *cp)
+gen6_CLIP_VIEWPORT(struct ilo_builder *builder,
+                   const struct ilo_viewport_cso *viewports,
+                   unsigned num_viewports)
 {
-   const int state_align = 32 / 4;
+   const int state_align = 32;
    const int state_len = 4 * num_viewports;
    uint32_t state_offset, *dw;
    unsigned i;
 
-   ILO_GPE_VALID_GEN(dev, 6, 6);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 6);
 
    /*
     * From the Sandy Bridge PRM, volume 2 part 1, page 193:
@@ -2031,8 +2028,8 @@ gen6_emit_CLIP_VIEWPORT(const struct ilo_dev_info *dev,
     */
    assert(num_viewports && num_viewports <= 16);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_CLIP_VIEWPORT,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_CLIP_VIEWPORT, state_align, state_len, &dw);
 
    for (i = 0; i < num_viewports; i++) {
       const struct ilo_viewport_cso *vp = &viewports[i];
@@ -2049,17 +2046,16 @@ gen6_emit_CLIP_VIEWPORT(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_CC_VIEWPORT(const struct ilo_dev_info *dev,
-                      const struct ilo_viewport_cso *viewports,
-                      unsigned num_viewports,
-                      struct ilo_cp *cp)
+gen6_CC_VIEWPORT(struct ilo_builder *builder,
+                 const struct ilo_viewport_cso *viewports,
+                 unsigned num_viewports)
 {
-   const int state_align = 32 / 4;
+   const int state_align = 32;
    const int state_len = 2 * num_viewports;
    uint32_t state_offset, *dw;
    unsigned i;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
    /*
     * From the Sandy Bridge PRM, volume 2 part 1, page 385:
@@ -2068,8 +2064,8 @@ gen6_emit_CC_VIEWPORT(const struct ilo_dev_info *dev,
     */
    assert(num_viewports && num_viewports <= 16);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_CC_VIEWPORT,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_CC_VIEWPORT, state_align, state_len, &dw);
 
    for (i = 0; i < num_viewports; i++) {
       const struct ilo_viewport_cso *vp = &viewports[i];
@@ -2084,20 +2080,19 @@ gen6_emit_CC_VIEWPORT(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_COLOR_CALC_STATE(const struct ilo_dev_info *dev,
-                           const struct pipe_stencil_ref *stencil_ref,
-                           ubyte alpha_ref,
-                           const struct pipe_blend_color *blend_color,
-                           struct ilo_cp *cp)
+gen6_COLOR_CALC_STATE(struct ilo_builder *builder,
+                      const struct pipe_stencil_ref *stencil_ref,
+                      ubyte alpha_ref,
+                      const struct pipe_blend_color *blend_color)
 {
-   const int state_align = 64 / 4;
+   const int state_align = 64;
    const int state_len = 6;
    uint32_t state_offset, *dw;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_COLOR_CALC,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_COLOR_CALC, state_align, state_len, &dw);
 
    dw[0] = stencil_ref->ref_value[0] << 24 |
            stencil_ref->ref_value[1] << 16 |
@@ -2112,18 +2107,17 @@ gen6_emit_COLOR_CALC_STATE(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_BLEND_STATE(const struct ilo_dev_info *dev,
-                      const struct ilo_blend_state *blend,
-                      const struct ilo_fb_state *fb,
-                      const struct ilo_dsa_state *dsa,
-                      struct ilo_cp *cp)
+gen6_BLEND_STATE(struct ilo_builder *builder,
+                 const struct ilo_blend_state *blend,
+                 const struct ilo_fb_state *fb,
+                 const struct ilo_dsa_state *dsa)
 {
-   const int state_align = 64 / 4;
+   const int state_align = 64;
    int state_len;
    uint32_t state_offset, *dw;
    unsigned num_targets, i;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
    /*
     * From the Sandy Bridge PRM, volume 2 part 1, page 376:
@@ -2142,8 +2136,8 @@ gen6_emit_BLEND_STATE(const struct ilo_dev_info *dev,
 
    state_len = 2 * num_targets;
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_BLEND,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_BLEND, state_align, state_len, &dw);
 
    for (i = 0; i < num_targets; i++) {
       const unsigned idx = (blend->independent_blend_enable) ? i : 0;
@@ -2164,8 +2158,9 @@ gen6_emit_BLEND_STATE(const struct ilo_dev_info *dev,
          switch (format_desc->format) {
          case PIPE_FORMAT_B8G8R8X8_UNORM:
             /* force alpha to one when the HW format has alpha */
-            assert(ilo_translate_render_format(dev, PIPE_FORMAT_B8G8R8X8_UNORM)
-                  == GEN6_FORMAT_B8G8R8A8_UNORM);
+            assert(ilo_translate_render_format(builder->dev,
+                     PIPE_FORMAT_B8G8R8X8_UNORM) ==
+                  GEN6_FORMAT_B8G8R8A8_UNORM);
             rt_dst_alpha_forced_one = true;
             break;
          default:
@@ -2238,38 +2233,29 @@ gen6_emit_BLEND_STATE(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_DEPTH_STENCIL_STATE(const struct ilo_dev_info *dev,
-                              const struct ilo_dsa_state *dsa,
-                              struct ilo_cp *cp)
+gen6_DEPTH_STENCIL_STATE(struct ilo_builder *builder,
+                         const struct ilo_dsa_state *dsa)
 {
-   const int state_align = 64 / 4;
+   const int state_align = 64;
    const int state_len = 3;
-   uint32_t state_offset, *dw;
-
-
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_DEPTH_STENCIL,
-         state_len, state_align, &state_offset);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   dw[0] = dsa->payload[0];
-   dw[1] = dsa->payload[1];
-   dw[2] = dsa->payload[2];
+   STATIC_ASSERT(Elements(dsa->payload) >= state_len);
 
-   return state_offset;
+   return ilo_builder_state_write(builder, ILO_BUILDER_ITEM_DEPTH_STENCIL,
+         state_align, state_len, dsa->payload);
 }
 
 static inline uint32_t
-gen6_emit_SCISSOR_RECT(const struct ilo_dev_info *dev,
-                       const struct ilo_scissor_state *scissor,
-                       unsigned num_viewports,
-                       struct ilo_cp *cp)
+gen6_SCISSOR_RECT(struct ilo_builder *builder,
+                  const struct ilo_scissor_state *scissor,
+                  unsigned num_viewports)
 {
-   const int state_align = 32 / 4;
+   const int state_align = 32;
    const int state_len = 2 * num_viewports;
-   uint32_t state_offset, *dw;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
    /*
     * From the Sandy Bridge PRM, volume 2 part 1, page 263:
@@ -2278,13 +2264,10 @@ gen6_emit_SCISSOR_RECT(const struct ilo_dev_info *dev,
     *      stored as an array of up to 16 elements..."
     */
    assert(num_viewports && num_viewports <= 16);
+   assert(Elements(scissor->payload) >= state_len);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_SCISSOR_RECT,
-         state_len, state_align, &state_offset);
-
-   memcpy(dw, scissor->payload, state_len * 4);
-
-   return state_offset;
+   return ilo_builder_state_write(builder, ILO_BUILDER_ITEM_SCISSOR_RECT,
+         state_align, state_len, scissor->payload);
 }
 
 static inline uint32_t
@@ -2375,19 +2358,18 @@ gen6_so_SURFACE_STATE(struct ilo_builder *builder,
 }
 
 static inline uint32_t
-gen6_emit_SAMPLER_STATE(const struct ilo_dev_info *dev,
-                        const struct ilo_sampler_cso * const *samplers,
-                        const struct pipe_sampler_view * const *views,
-                        const uint32_t *sampler_border_colors,
-                        int num_samplers,
-                        struct ilo_cp *cp)
-{
-   const int state_align = 32 / 4;
+gen6_SAMPLER_STATE(struct ilo_builder *builder,
+                   const struct ilo_sampler_cso * const *samplers,
+                   const struct pipe_sampler_view * const *views,
+                   const uint32_t *sampler_border_colors,
+                   int num_samplers)
+{
+   const int state_align = 32;
    const int state_len = 4 * num_samplers;
    uint32_t state_offset, *dw;
    int i;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
    /*
     * From the Sandy Bridge PRM, volume 4 part 1, page 101:
@@ -2399,8 +2381,8 @@ gen6_emit_SAMPLER_STATE(const struct ilo_dev_info *dev,
    if (!num_samplers)
       return 0;
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_SAMPLER,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_SAMPLER, state_align, state_len, &dw);
 
    for (i = 0; i < num_samplers; i++) {
       const struct ilo_sampler_cso *sampler = samplers[i];
@@ -2457,7 +2439,7 @@ gen6_emit_SAMPLER_STATE(const struct ilo_dev_info *dev,
 
       dw[0] |= dw_filter;
 
-      if (dev->gen >= ILO_GEN(7)) {
+      if (builder->dev->gen >= ILO_GEN(7)) {
          dw[3] |= dw_wrap;
       }
       else {
@@ -2485,43 +2467,38 @@ gen6_emit_SAMPLER_STATE(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen6_emit_SAMPLER_BORDER_COLOR_STATE(const struct ilo_dev_info *dev,
-                                     const struct ilo_sampler_cso *sampler,
-                                     struct ilo_cp *cp)
+gen6_SAMPLER_BORDER_COLOR_STATE(struct ilo_builder *builder,
+                                const struct ilo_sampler_cso *sampler)
 {
-   const int state_align = 32 / 4;
-   const int state_len = (dev->gen >= ILO_GEN(7)) ? 4 : 12;
-   uint32_t state_offset, *dw;
+   const int state_align = 32;
+   const int state_len = (builder->dev->gen >= ILO_GEN(7)) ? 4 : 12;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_BLOB,
-         state_len, state_align, &state_offset);
+   assert(Elements(sampler->payload) >= 3 + state_len);
 
    /* see ilo_gpe_init_sampler_cso() */
-   memcpy(dw, &sampler->payload[3], state_len * 4);
-
-   return state_offset;
+   return ilo_builder_state_write(builder, ILO_BUILDER_ITEM_BLOB,
+         state_align, state_len, &sampler->payload[3]);
 }
 
 static inline uint32_t
-gen6_emit_push_constant_buffer(const struct ilo_dev_info *dev,
-                               int size, void **pcb,
-                               struct ilo_cp *cp)
+gen6_push_constant_buffer(struct ilo_builder *builder,
+                          int size, void **pcb)
 {
    /*
     * For all VS, GS, FS, and CS push constant buffers, they must be aligned
     * to 32 bytes, and their sizes are specified in 256-bit units.
     */
-   const int state_align = 32 / 4;
+   const int state_align = 32;
    const int state_len = align(size, 32) / 4;
    uint32_t state_offset;
    char *buf;
 
-   ILO_GPE_VALID_GEN(dev, 6, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   buf = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_BLOB,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_BLOB, state_align, state_len, (uint32_t **) &buf);
 
    /* zero out the unused range */
    if (size < state_len * 4)
index f3059ae9fd9fbffa66bab51e56244d94109b8927..9d73caa5b9ad90ab2f88f6a9d856a07018e6d7ee 100644 (file)
@@ -1134,17 +1134,16 @@ gen7_emit_3DPRIMITIVE(const struct ilo_dev_info *dev,
 }
 
 static inline uint32_t
-gen7_emit_SF_CLIP_VIEWPORT(const struct ilo_dev_info *dev,
-                           const struct ilo_viewport_cso *viewports,
-                           unsigned num_viewports,
-                           struct ilo_cp *cp)
+gen7_SF_CLIP_VIEWPORT(struct ilo_builder *builder,
+                      const struct ilo_viewport_cso *viewports,
+                      unsigned num_viewports)
 {
-   const int state_align = 64 / 4;
+   const int state_align = 64;
    const int state_len = 16 * num_viewports;
    uint32_t state_offset, *dw;
    unsigned i;
 
-   ILO_GPE_VALID_GEN(dev, 7, 7.5);
+   ILO_GPE_VALID_GEN(builder->dev, 7, 7.5);
 
    /*
     * From the Ivy Bridge PRM, volume 2 part 1, page 270:
@@ -1158,8 +1157,8 @@ gen7_emit_SF_CLIP_VIEWPORT(const struct ilo_dev_info *dev,
     */
    assert(num_viewports && num_viewports <= 16);
 
-   dw = ilo_cp_steal_ptr(cp, ILO_BUILDER_ITEM_SF_VIEWPORT,
-         state_len, state_align, &state_offset);
+   state_offset = ilo_builder_state_pointer(builder,
+         ILO_BUILDER_ITEM_SF_VIEWPORT, state_align, state_len, &dw);
 
    for (i = 0; i < num_viewports; i++) {
       const struct ilo_viewport_cso *vp = &viewports[i];