[Mesa-dev] [PATCH 26/43] intel/blorp: Pull the pipeline bits of blorp_exec into a helper

Jason Ekstrand jason at jlekstrand.net
Wed May 17 16:20:20 UTC 2017


On Wed, May 17, 2017 at 5:53 AM, Pohjolainen, Topi <
topi.pohjolainen at gmail.com> wrote:

> On Tue, May 16, 2017 at 03:45:20PM -0700, Jason Ekstrand wrote:
> > ---
> >  src/intel/blorp/blorp_genX_exec.h | 56 ++++++++++++++++++++++--------
> ---------
> >  1 file changed, 31 insertions(+), 25 deletions(-)
> >
> > diff --git a/src/intel/blorp/blorp_genX_exec.h
> b/src/intel/blorp/blorp_genX_exec.h
> > index 9e61f69..0bb4b9a 100644
> > --- a/src/intel/blorp/blorp_genX_exec.h
> > +++ b/src/intel/blorp/blorp_genX_exec.h
> > @@ -1316,33 +1316,14 @@ blorp_emit_viewport_state(struct blorp_batch
> *batch,
> >  #endif
> >  }
> >
> > -
> > -/**
> > - * \brief Execute a blit or render pass operation.
> > - *
> > - * To execute the operation, this function manually constructs and
> emits a
> > - * batch to draw a rectangle primitive. The batchbuffer is flushed
> before
> > - * constructing and after emitting the batch.
> > - *
> > - * This function alters no GL state.
> > - */
> >  static void
> > -blorp_exec(struct blorp_batch *batch, const struct blorp_params *params)
> > +blorp_emit_pipeline(struct blorp_batch *batch,
> > +                    const struct blorp_params *params)
> >  {
> >     uint32_t blend_state_offset = 0;
> > -   uint32_t color_calc_state_offset = 0;
> > +   uint32_t color_calc_state_offset;
> >     uint32_t depth_stencil_state_offset;
> >
> > -#if GEN_GEN >= 8
> > -   if (params->hiz_op != BLORP_HIZ_OP_NONE) {
> > -      blorp_emit_gen8_hiz_op(batch, params);
> > -      return;
> > -   }
> > -#endif
> > -
> > -   blorp_emit_vertex_buffers(batch, params);
> > -   blorp_emit_vertex_elements(batch, params);
> > -
> >     emit_urb_config(batch, params);
> >
> >     if (params->wm_prog_data) {
> > @@ -1351,7 +1332,7 @@ blorp_exec(struct blorp_batch *batch, const struct
> blorp_params *params)
> >     color_calc_state_offset = blorp_emit_color_calc_state(batch,
> params);
> >     depth_stencil_state_offset = blorp_emit_depth_stencil_state(batch,
> params);
> >
> > -#if GEN_GEN <= 6
> > +#if GEN_GEN == 6
> >     /* 3DSTATE_CC_STATE_POINTERS
> >      *
> >      * The pointer offsets are relative to
> > @@ -1385,8 +1366,6 @@ blorp_exec(struct blorp_batch *batch, const struct
> blorp_params *params)
> >     blorp_emit(batch, GENX(3DSTATE_CONSTANT_GS), gs);
> >     blorp_emit(batch, GENX(3DSTATE_CONSTANT_PS), ps);
> >
> > -   blorp_emit_surface_states(batch, params);
> > -
> >     if (params->src.enabled)
> >        blorp_emit_sampler_state(batch, params);
> >
> > @@ -1423,6 +1402,33 @@ blorp_exec(struct blorp_batch *batch, const
> struct blorp_params *params)
> >     blorp_emit_ps_config(batch, params);
> >
> >     blorp_emit_viewport_state(batch, params);
> > +}
> > +
> > +/**
> > + * \brief Execute a blit or render pass operation.
> > + *
> > + * To execute the operation, this function manually constructs and
> emits a
> > + * batch to draw a rectangle primitive. The batchbuffer is flushed
> before
> > + * constructing and after emitting the batch.
> > + *
> > + * This function alters no GL state.
> > + */
> > +static void
> > +blorp_exec(struct blorp_batch *batch, const struct blorp_params *params)
> > +{
> > +#if GEN_GEN >= 8
> > +   if (params->hiz_op != BLORP_HIZ_OP_NONE) {
> > +      blorp_emit_gen8_hiz_op(batch, params);
> > +      return;
> > +   }
> > +#endif
> > +
> > +   blorp_emit_vertex_buffers(batch, params);
> > +   blorp_emit_vertex_elements(batch, params);
> > +
> > +   blorp_emit_pipeline(batch, params);
> > +
> > +   blorp_emit_surface_states(batch, params);
>
> I thought binding table had to be earlier but I can't actually see any
> reason
> why. Well, jenkins would scream if it had to be.


I think the requirement you're thinking of is that BINDING_TABLE_POINTERS
has to be emitted after 3DSTATE_CONSTANTS_*S on gen9.  I don't know of any
other binding table ordering requirements.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170517/6c66880e/attachment-0001.html>


More information about the mesa-dev mailing list