예제 #1
0
void r600_preflush_suspend_features(struct r600_common_context *ctx)
{
	/* Disable render condition. */
	ctx->saved_render_cond = NULL;
	ctx->saved_render_cond_cond = FALSE;
	ctx->saved_render_cond_mode = 0;
	if (ctx->current_render_cond) {
		ctx->saved_render_cond = ctx->current_render_cond;
		ctx->saved_render_cond_cond = ctx->current_render_cond_cond;
		ctx->saved_render_cond_mode = ctx->current_render_cond_mode;
		ctx->b.render_condition(&ctx->b, NULL, FALSE, 0);
	}

	/* suspend queries */
	ctx->queries_suspended_for_flush = false;
	if (ctx->num_cs_dw_nontimer_queries_suspend) {
		r600_suspend_nontimer_queries(ctx);
		r600_suspend_timer_queries(ctx);
		ctx->queries_suspended_for_flush = true;
	}

	ctx->streamout.suspended = false;
	if (ctx->streamout.begin_emitted) {
		r600_emit_streamout_end(ctx);
		ctx->streamout.suspended = true;
	}
}
예제 #2
0
void r600_preflush_suspend_features(struct r600_common_context *ctx)
{
	/* suspend queries */
	ctx->queries_suspended_for_flush = false;
	if (ctx->num_cs_dw_nontimer_queries_suspend) {
		r600_suspend_nontimer_queries(ctx);
		r600_suspend_timer_queries(ctx);
		ctx->queries_suspended_for_flush = true;
	}

	ctx->streamout.suspended = false;
	if (ctx->streamout.begin_emitted) {
		r600_emit_streamout_end(ctx);
		ctx->streamout.suspended = true;
	}
}
예제 #3
0
void r600_preflush_suspend_features(struct r600_common_context *ctx)
{
	/* suspend queries */
	if (ctx->num_cs_dw_nontimer_queries_suspend) {
		/* Since non-timer queries are suspended during blits,
		 * we have to guard against double-suspends. */
		r600_suspend_nontimer_queries(ctx);
		ctx->nontimer_queries_suspended_by_flush = true;
	}
	if (!LIST_IS_EMPTY(&ctx->active_timer_queries))
		r600_suspend_timer_queries(ctx);

	ctx->streamout.suspended = false;
	if (ctx->streamout.begin_emitted) {
		r600_emit_streamout_end(ctx);
		ctx->streamout.suspended = true;
	}
}