According to the SkyLake bspec the 3DSTATE_CONSTANT_* commands only take effect on the next corresponding 3DSTATE_BINDING_TABLE_POINTER_* command. This patch just makes it set the BRW_NEW_SURFACES state when uploading the push constants to ensure the binding tables will be updated.
This fixes the fbo-blending-formats Piglit test and possibly others. Reviewed-by: Kristian Høgsberg <k...@bitplanet.net> --- src/mesa/drivers/dri/i965/gen7_vs_state.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mesa/drivers/dri/i965/gen7_vs_state.c b/src/mesa/drivers/dri/i965/gen7_vs_state.c index 404dd20..c55d6ca 100644 --- a/src/mesa/drivers/dri/i965/gen7_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_vs_state.c @@ -60,6 +60,13 @@ gen7_upload_constant_state(struct brw_context *brw, } ADVANCE_BATCH(); + + /* On SkyLake+ the new constants don't take effect until the next + * corresponding 3DSTATE_BINDING_TABLE_POINTER_* command is parsed so we + * need to ensure that is sent + */ + if (brw->gen >= 9) + brw->state.dirty.brw |= BRW_NEW_SURFACES; } -- 1.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev