[Mesa-dev] [PATCH 3/4] i965: Use brw.vue_map_geom_out instead of VS output VUE map where appropriate.

Eric Anholt eric at anholt.net
Thu Mar 21 09:05:10 PDT 2013


Paul Berry <stereotype441 at gmail.com> writes:

> This patch modifies post-GS pipeline stages (transform feedback, clip,
> sf, fs) to refer to the VUE map through brw->vue_map_geom_out rather
> than brw->vs.prog_data->vue_map.  This ensures that when geometry
> shader support is added, these pipeline stages will consult the
> geometry shader output VUE map when appropriate, rather than the
> vertex shader output VUE map.
> ---
>  src/mesa/drivers/dri/i965/brw_clip.c       |  7 +++----
>  src/mesa/drivers/dri/i965/brw_sf.c         |  7 +++----
>  src/mesa/drivers/dri/i965/brw_state.h      |  2 +-
>  src/mesa/drivers/dri/i965/brw_wm.c         |  6 +++---
>  src/mesa/drivers/dri/i965/gen6_sf_state.c  | 10 +++++-----
>  src/mesa/drivers/dri/i965/gen7_sf_state.c  |  8 ++++----
>  src/mesa/drivers/dri/i965/gen7_sol_state.c | 14 +++++++-------
>  7 files changed, 26 insertions(+), 28 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c
> index e20f7c2..bc0ebb5 100644
> --- a/src/mesa/drivers/dri/i965/brw_clip.c
> +++ b/src/mesa/drivers/dri/i965/brw_clip.c
> @@ -69,7 +69,7 @@ static void compile_clip_prog( struct brw_context *brw,
>     c.func.single_program_flow = 1;
>  
>     c.key = *key;
> -   c.vue_map = brw->vs.prog_data->vue_map;
> +   c.vue_map = *brw->vue_map_geom_out;
>  
>     /* nr_regs is the number of registers filled by reading data from the VUE.
>      * This program accesses the entire VUE, so nr_regs needs to be the size of
> @@ -146,7 +146,7 @@ brw_upload_clip_prog(struct brw_context *brw)
>     /* BRW_NEW_REDUCED_PRIMITIVE */
>     key.primitive = brw->intel.reduced_primitive;
>     /* CACHE_NEW_VS_PROG (also part of VUE map) */
> -   key.attrs = brw->vs.prog_data->vue_map.slots_valid;
> +   key.attrs = brw->vue_map_geom_out->slots_valid;
>     /* _NEW_LIGHT */
>     key.do_flat_shading = (ctx->Light.ShadeModel == GL_FLAT);
>     key.pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION);
> @@ -258,8 +258,7 @@ const struct brw_tracked_state brw_clip_prog = {
>  		_NEW_TRANSFORM |
>  		_NEW_POLYGON | 
>  		_NEW_BUFFERS),
> -      .brw   = (BRW_NEW_REDUCED_PRIMITIVE),
> -      .cache = CACHE_NEW_VS_PROG
> +      .brw   = (BRW_NEW_REDUCED_PRIMITIVE | BRW_NEW_VUE_MAP_GEOM_OUT)
>     },

Hmm, this is an increase in how much we recalculate SF -- before, we
wouldn't have anything flagged when doing a no-op VS update, but
BRW_NEW_VUE_MAP_GEOM_OUT happens regardless.  Could you add no-op change
detection in the previous commit?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130321/7f5ef284/attachment.pgp>


More information about the mesa-dev mailing list