From cd19db4ee61b6182b31ef8dfa1981ea59cfa34c4 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 25 Aug 2016 23:00:13 -0700 Subject: [PATCH] i965: Fix missing dirty bits related to is_drawing_points/lines. calculate_attr_overrides() uses is_drawing_points(), which depends on tessellation and geometry program state, as well as polygon state. v2: Add missing _NEW_POLYGON as well. Caught by Iago Toral. Signed-off-by: Kenneth Graunke Reviewed-by: Iago Toral Quiroga --- src/mesa/drivers/dri/i965/gen6_clip_state.c | 5 +++++ src/mesa/drivers/dri/i965/gen7_sf_state.c | 14 +++++++++++--- src/mesa/drivers/dri/i965/gen8_sf_state.c | 9 +++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c b/src/mesa/drivers/dri/i965/gen6_clip_state.c index 4a3f7f97cf4..8a3d05a6a00 100644 --- a/src/mesa/drivers/dri/i965/gen6_clip_state.c +++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c @@ -230,6 +230,9 @@ upload_clip_state(struct brw_context *brw) else enable = GEN6_CLIP_ENABLE; + /* _NEW_POLYGON, + * BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_TES_PROG_DATA | BRW_NEW_PRIMITIVE + */ if (!brw_is_drawing_points(brw) && !brw_is_drawing_lines(brw)) dw2 |= GEN6_CLIP_XY_TEST; @@ -255,6 +258,7 @@ const struct brw_tracked_state gen6_clip_state = { .dirty = { .mesa = _NEW_BUFFERS | _NEW_LIGHT | + _NEW_POLYGON | _NEW_TRANSFORM, .brw = BRW_NEW_BLORP | BRW_NEW_CONTEXT | @@ -281,6 +285,7 @@ const struct brw_tracked_state gen7_clip_state = { BRW_NEW_META_IN_PROGRESS | BRW_NEW_PRIMITIVE | BRW_NEW_RASTERIZER_DISCARD | + BRW_NEW_TES_PROG_DATA | BRW_NEW_VUE_MAP_GEOM_OUT, }, .emit = upload_clip_state, diff --git a/src/mesa/drivers/dri/i965/gen7_sf_state.c b/src/mesa/drivers/dri/i965/gen7_sf_state.c index ba0592a1656..8727bf86efd 100644 --- a/src/mesa/drivers/dri/i965/gen7_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c @@ -59,8 +59,10 @@ upload_sbe_state(struct brw_context *brw) } dw1 |= point_sprite_origin; - /* BRW_NEW_VUE_MAP_GEOM_OUT | BRW_NEW_FRAGMENT_PROGRAM - * _NEW_POINT | _NEW_LIGHT | _NEW_PROGRAM | BRW_NEW_FS_PROG_DATA + /* _NEW_POINT | _NEW_LIGHT | _NEW_PROGRAM, + * BRW_NEW_FS_PROG_DATA | BRW_NEW_FRAGMENT_PROGRAM | + * BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_PRIMITIVE | BRW_NEW_TES_PROG_DATA | + * BRW_NEW_VUE_MAP_GEOM_OUT */ uint32_t urb_entry_read_length; uint32_t urb_entry_read_offset; @@ -90,12 +92,14 @@ const struct brw_tracked_state gen7_sbe_state = { .mesa = _NEW_BUFFERS | _NEW_LIGHT | _NEW_POINT | + _NEW_POLYGON | _NEW_PROGRAM, .brw = BRW_NEW_BLORP | BRW_NEW_CONTEXT | BRW_NEW_FRAGMENT_PROGRAM | BRW_NEW_FS_PROG_DATA | BRW_NEW_GEOMETRY_PROGRAM | + BRW_NEW_TES_PROG_DATA | BRW_NEW_PRIMITIVE | BRW_NEW_VUE_MAP_GEOM_OUT, }, @@ -187,7 +191,9 @@ upload_sf_state(struct brw_context *brw) dw2 |= GEN6_SF_CULL_NONE; } - /* _NEW_SCISSOR _NEW_POLYGON BRW_NEW_GEOMETRY_PROGRAM BRW_NEW_PRIMITIVE */ + /* _NEW_SCISSOR | _NEW_POLYGON, + * BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_PRIMITIVE | BRW_NEW_TES_PROG_DATA + */ if (ctx->Scissor.EnableFlags || brw_is_drawing_points(brw) || brw_is_drawing_lines(brw)) dw2 |= GEN6_SF_SCISSOR_ENABLE; @@ -256,7 +262,9 @@ const struct brw_tracked_state gen7_sf_state = { _NEW_SCISSOR, .brw = BRW_NEW_BLORP | BRW_NEW_CONTEXT | + BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_PRIMITIVE | + BRW_NEW_TES_PROG_DATA | BRW_NEW_VUE_MAP_GEOM_OUT, }, .emit = upload_sf_state, diff --git a/src/mesa/drivers/dri/i965/gen8_sf_state.c b/src/mesa/drivers/dri/i965/gen8_sf_state.c index 0c4f1df6a8d..93c77f74b69 100644 --- a/src/mesa/drivers/dri/i965/gen8_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen8_sf_state.c @@ -60,8 +60,10 @@ upload_sbe(struct brw_context *brw) else dw1 |= GEN6_SF_POINT_SPRITE_UPPERLEFT; - /* BRW_NEW_VUE_MAP_GEOM_OUT | BRW_NEW_FRAGMENT_PROGRAM | - * _NEW_POINT | _NEW_LIGHT | _NEW_PROGRAM | BRW_NEW_FS_PROG_DATA + /* _NEW_POINT | _NEW_LIGHT | _NEW_PROGRAM, + * BRW_NEW_FS_PROG_DATA | BRW_NEW_FRAGMENT_PROGRAM | + * BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_PRIMITIVE | BRW_NEW_TES_PROG_DATA | + * BRW_NEW_VUE_MAP_GEOM_OUT */ calculate_attr_overrides(brw, attr_overrides, &point_sprite_enables, @@ -132,11 +134,14 @@ const struct brw_tracked_state gen8_sbe_state = { .mesa = _NEW_BUFFERS | _NEW_LIGHT | _NEW_POINT | + _NEW_POLYGON | _NEW_PROGRAM, .brw = BRW_NEW_BLORP | BRW_NEW_CONTEXT | BRW_NEW_FRAGMENT_PROGRAM | BRW_NEW_FS_PROG_DATA | + BRW_NEW_GEOMETRY_PROGRAM | + BRW_NEW_TES_PROG_DATA | BRW_NEW_VUE_MAP_GEOM_OUT, }, .emit = upload_sbe,