According to a comment in gen6_sf_state.c, calls to get_attr_override need both _NEW_PROGRAM and _NEW_LIGHT. Since Gen7 reuses the same function, the same dirty bits should apply.
When I performed the SF/SBE split, I partitioned the bits incorrectly: 3DSTATE_SBE (which contains the attribute setup) was missing _NEW_PROGRAM, while 3DSTATE_SF was listing it as a dependency for no reason. NOTE: This is a candidate for the 7.11 branch. Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> --- src/mesa/drivers/dri/i965/gen7_sf_state.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen7_sf_state.c b/src/mesa/drivers/dri/i965/gen7_sf_state.c index 11b2480..abcfa99 100644 --- a/src/mesa/drivers/dri/i965/gen7_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c @@ -105,6 +105,7 @@ upload_sbe_state(struct brw_context *brw) */ assert(input_index < 16 || attr == input_index); + /* _NEW_LIGHT | _NEW_PROGRAM */ attr_overrides[input_index++] = get_attr_override(&vue_map, urb_entry_read_offset, attr, ctx->VertexProgram._TwoSideEnabled); @@ -133,6 +134,7 @@ const struct brw_tracked_state gen7_sbe_state = { .dirty = { .mesa = (_NEW_LIGHT | _NEW_POINT | + _NEW_PROGRAM | _NEW_TRANSFORM), .brw = (BRW_NEW_CONTEXT | BRW_NEW_BATCH | @@ -280,7 +282,6 @@ upload_sf_state(struct brw_context *brw) const struct brw_tracked_state gen7_sf_state = { .dirty = { .mesa = (_NEW_LIGHT | - _NEW_PROGRAM | _NEW_POLYGON | _NEW_LINE | _NEW_SCISSOR | -- 1.7.7.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev