From 60ec8fb448f292b8aac08f74c26da8171b2b6a8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 3 Sep 2015 19:34:58 +0200 Subject: [PATCH] radeonsi: don't update polygon offset state if it has no effect MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Michel Dänzer --- src/gallium/drivers/radeonsi/si_state.c | 4 +++- src/gallium/drivers/radeonsi/si_state.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index f698c59d87a..d74f6e896c4 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -636,7 +636,7 @@ static void si_update_poly_offset_state(struct si_context *sctx) { struct si_state_rasterizer *rs = sctx->queued.named.rasterizer; - if (!rs || !sctx->framebuffer.state.zsbuf) + if (!rs || !rs->uses_poly_offset || !sctx->framebuffer.state.zsbuf) return; switch (sctx->framebuffer.state.zsbuf->texture->format) { @@ -691,6 +691,8 @@ static void *si_create_rs_state(struct pipe_context *ctx, rs->poly_stipple_enable = state->poly_stipple_enable; rs->line_smooth = state->line_smooth; rs->poly_smooth = state->poly_smooth; + rs->uses_poly_offset = state->offset_point || state->offset_line || + state->offset_tri; rs->flatshade = state->flatshade; rs->sprite_coord_enable = state->sprite_coord_enable; diff --git a/src/gallium/drivers/radeonsi/si_state.h b/src/gallium/drivers/radeonsi/si_state.h index 3718e05f3b3..900b70f804c 100644 --- a/src/gallium/drivers/radeonsi/si_state.h +++ b/src/gallium/drivers/radeonsi/si_state.h @@ -58,6 +58,7 @@ struct si_state_rasterizer { bool poly_stipple_enable; bool line_smooth; bool poly_smooth; + bool uses_poly_offset; }; struct si_dsa_stencil_ref_part { -- 2.11.0