r600g: Fix flat/smooth shade state toggle
authorGlenn Kennard <glenn.kennard@gmail.com>
Wed, 20 Aug 2014 19:55:37 +0000 (21:55 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 21 Aug 2014 14:20:38 +0000 (16:20 +0200)
If only the flat/smooth shade state changed between
two render calls the prior code would miss updating the
hardware state.

Also add check for sprite coord, potentially same type
of issue otherwise for it.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81967
Signed-off-by: Glenn Kennard <glenn.kennard@gmail.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/r600/r600_state_common.c

index 7594d0ef75abc120e840eda592ece2b3ce7d2545..028d800981d60e27defd8018b824ac1a58b02128 100644 (file)
@@ -1227,7 +1227,9 @@ static bool r600_update_derived_state(struct r600_context *rctx)
        if (unlikely(!rctx->ps_shader->current))
                return false;
 
-       if (unlikely(ps_dirty || rctx->pixel_shader.shader != rctx->ps_shader->current)) {
+       if (unlikely(ps_dirty || rctx->pixel_shader.shader != rctx->ps_shader->current ||
+               rctx->rasterizer->sprite_coord_enable != rctx->ps_shader->current->sprite_coord_enable ||
+               rctx->rasterizer->flatshade != rctx->ps_shader->current->flatshade)) {
 
                if (rctx->cb_misc_state.nr_ps_color_outputs != rctx->ps_shader->current->nr_ps_color_outputs) {
                        rctx->cb_misc_state.nr_ps_color_outputs = rctx->ps_shader->current->nr_ps_color_outputs;