radeonsi: tell LLVM not to remove s_barrier instructions
[mesa.git] / src / gallium / drivers / r600 / r600_hw_context.c
index 58ba09d1014a6503232a7085621569b9900806a9..4511ce0c01eca2a12431d5814c364bf29862d9da 100644 (file)
@@ -258,6 +258,9 @@ void r600_context_gfx_flush(void *context, unsigned flags,
        if (!radeon_emitted(cs, ctx->b.initial_gfx_cs_size))
                return;
 
+       if (r600_check_device_reset(&ctx->b))
+               return;
+
        r600_preflush_suspend_features(&ctx->b);
 
        /* flush the framebuffer cache */
@@ -312,6 +315,7 @@ void r600_begin_new_cs(struct r600_context *ctx)
        ctx->b.scissors.dirty_mask = (1 << R600_MAX_VIEWPORTS) - 1;
        r600_mark_atom_dirty(ctx, &ctx->b.scissors.atom);
        ctx->b.viewports.dirty_mask = (1 << R600_MAX_VIEWPORTS) - 1;
+       ctx->b.viewports.depth_range_dirty_mask = (1 << R600_MAX_VIEWPORTS) - 1;
        r600_mark_atom_dirty(ctx, &ctx->b.viewports.atom);
        if (ctx->b.chip_class <= EVERGREEN) {
                r600_mark_atom_dirty(ctx, &ctx->config_state.atom);
@@ -365,6 +369,8 @@ void r600_begin_new_cs(struct r600_context *ctx)
        /* Re-emit the draw state. */
        ctx->last_primitive_type = -1;
        ctx->last_start_instance = -1;
+       ctx->last_rast_prim      = -1;
+       ctx->current_rast_prim   = -1;
 
        assert(!ctx->b.gfx.cs->prev_dw);
        ctx->b.initial_gfx_cs_size = ctx->b.gfx.cs->current.cdw;
@@ -551,5 +557,4 @@ void r600_dma_copy_buffer(struct r600_context *rctx,
                src_offset += csize << 2;
                size -= csize;
        }
-       r600_dma_emit_wait_idle(&rctx->b);
 }