[Mesa-dev] [PATCH 2/3] i965: Change GEN_GEN < 7 to GEN_GEN == 6 in 3DSTATE_VS code.

Rafael Antognolli rafael.antognolli at intel.com
Thu May 11 16:02:20 UTC 2017


Reviewed-by: Rafael Antognolli <rafael.antognolli at intel.com>

On Wed, May 10, 2017 at 12:41:38PM -0700, Kenneth Graunke wrote:
> This whole code is surrounded in #if GEN_GEN >= 6, and this code only
> applies on Sandybridge.  So, use GEN_GEN == 6 to reduce the delta in
> the next patch, when we add Gen4-5 support.
> ---
>  src/mesa/drivers/dri/i965/genX_state_upload.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c
> index cf53c00e1b7..4c6cb1a9b71 100644
> --- a/src/mesa/drivers/dri/i965/genX_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
> @@ -1728,25 +1728,24 @@ genX(upload_vs_state)(struct brw_context *brw)
>        brw_vue_prog_data(brw->vs.base.prog_data);
>     const struct brw_stage_prog_data *stage_prog_data = &vue_prog_data->base;
>  
>     assert(vue_prog_data->dispatch_mode == DISPATCH_MODE_SIMD8 ||
>            vue_prog_data->dispatch_mode == DISPATCH_MODE_4X2_DUAL_OBJECT);
>  
> +#if GEN_GEN == 6
>     /* From the BSpec, 3D Pipeline > Geometry > Vertex Shader > State,
>      * 3DSTATE_VS, Dword 5.0 "VS Function Enable":
>      *
>      *   [DevSNB] A pipeline flush must be programmed prior to a 3DSTATE_VS
>      *   command that causes the VS Function Enable to toggle. Pipeline
>      *   flush can be executed by sending a PIPE_CONTROL command with CS
>      *   stall bit set and a post sync operation.
>      *
>      * We've already done such a flush at the start of state upload, so we
>      * don't need to do another one here.
>      */
> -
> -#if GEN_GEN < 7
>     brw_batch_emit(brw, GENX(3DSTATE_CONSTANT_VS), cvs) {
>        if (stage_state->push_const_size != 0) {
>           cvs.Buffer0Valid = true;
>           cvs.PointertoVSConstantBuffer0 = stage_state->push_const_offset;
>           cvs.VSConstantBuffer0ReadLength = stage_state->push_const_size - 1;
>        }
> @@ -1767,13 +1766,13 @@ genX(upload_vs_state)(struct brw_context *brw)
>  
>        vs.UserClipDistanceCullTestEnableBitmask =
>           vue_prog_data->cull_distance_mask;
>  #endif
>     }
>  
> -#if GEN_GEN < 7
> +#if GEN_GEN == 6
>     /* Based on my reading of the simulator, the VS constants don't get
>      * pulled into the VS FF unit until an appropriate pipeline flush
>      * happens, and instead the 3DSTATE_CONSTANT_VS packet just adds
>      * references to them into a little FIFO.  The flushes are common,
>      * but don't reliably happen between this and a 3DPRIMITIVE, causing
>      * the primitive to use the wrong constants.  Then the FIFO
> @@ -1794,18 +1793,18 @@ genX(upload_vs_state)(struct brw_context *brw)
>                                 PIPE_CONTROL_STATE_CACHE_INVALIDATE);
>  #endif
>  }
>  
>  static const struct brw_tracked_state genX(vs_state) = {
>     .dirty = {
> -      .mesa  = (GEN_GEN < 7 ? (_NEW_PROGRAM_CONSTANTS | _NEW_TRANSFORM) : 0),
> +      .mesa  = (GEN_GEN == 6 ? (_NEW_PROGRAM_CONSTANTS | _NEW_TRANSFORM) : 0),
>        .brw   = BRW_NEW_BATCH |
>                 BRW_NEW_BLORP |
>                 BRW_NEW_CONTEXT |
>                 BRW_NEW_VS_PROG_DATA |
> -               (GEN_GEN < 7 ? BRW_NEW_VERTEX_PROGRAM : 0),
> +               (GEN_GEN == 6 ? BRW_NEW_VERTEX_PROGRAM : 0),
>     },
>     .emit = genX(upload_vs_state),
>  };
>  #endif
>  
>  /* ---------------------------------------------------------------------- */
> -- 
> 2.12.2
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list