On Wed, May 17, 2017 at 5:53 AM, Pohjolainen, Topi < topi.pohjolai...@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.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev