rctx->flags |= R600_CONTEXT_TEX_FLUSH;
state->enabled_mask |= 1 << vb_index;
state->dirty_mask |= 1 << vb_index;
- r600_atom_dirty(rctx, &state->atom);
+ state->atom.dirty = true;
}
const struct u_resource_vtbl r600_global_buffer_vtbl =
surf = (struct r600_surface*)state->cbufs[0];
if (rctx->alphatest_state.bypass != surf->alphatest_bypass) {
rctx->alphatest_state.bypass = surf->alphatest_bypass;
- r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
+ rctx->alphatest_state.atom.dirty = true;
}
if (rctx->alphatest_state.cb0_export_16bpc != surf->export_16bpc) {
rctx->alphatest_state.cb0_export_16bpc = surf->export_16bpc;
- r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
+ rctx->alphatest_state.atom.dirty = true;
}
}
if (rctx->cb_misc_state.nr_cbufs != state->nr_cbufs) {
rctx->cb_misc_state.nr_cbufs = state->nr_cbufs;
- r600_atom_dirty(rctx, &rctx->cb_misc_state.atom);
+ rctx->cb_misc_state.atom.dirty = true;
}
if (state->nr_cbufs == 0 && rctx->alphatest_state.bypass) {
rctx->alphatest_state.bypass = false;
- r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
+ rctx->alphatest_state.atom.dirty = true;
}
log_samples = util_logbase2(rctx->framebuffer.nr_samples);
if (rctx->chip_class == CAYMAN && rctx->db_misc_state.log_samples != log_samples) {
rctx->db_misc_state.log_samples = log_samples;
- r600_atom_dirty(rctx, &rctx->db_misc_state.atom);
+ rctx->db_misc_state.atom.dirty = true;
}
/* Calculate the CS size. */
rctx->framebuffer.atom.num_dw += 4;
}
- r600_atom_dirty(rctx, &rctx->framebuffer.atom);
+ rctx->framebuffer.atom.dirty = true;
}
#define FILL_SREG(s0x, s0y, s1x, s1y, s2x, s2y, s3x, s3y) \
rctx->db_misc_state.copy_depth = util_format_has_depth(desc);
rctx->db_misc_state.copy_stencil = util_format_has_stencil(desc);
rctx->db_misc_state.copy_sample = first_sample;
- r600_atom_dirty(rctx, &rctx->db_misc_state.atom);
+ rctx->db_misc_state.atom.dirty = true;
for (level = first_level; level <= last_level; level++) {
if (sample != rctx->db_misc_state.copy_sample) {
rctx->db_misc_state.copy_sample = sample;
- r600_atom_dirty(rctx, &rctx->db_misc_state.atom);
+ rctx->db_misc_state.atom.dirty = true;
}
surf_tmpl.format = texture->resource.b.b.format;
/* reenable compression in DB_RENDER_CONTROL */
rctx->db_misc_state.flush_depthstencil_through_cb = false;
- r600_atom_dirty(rctx, &rctx->db_misc_state.atom);
+ rctx->db_misc_state.atom.dirty = true;
}
void r600_decompress_depth_textures(struct r600_context *rctx,
r600_emit_command_buffer(ctx->cs, &ctx->start_cs_cmd);
/* Re-emit states. */
- r600_atom_dirty(ctx, &ctx->alphatest_state.atom);
- r600_atom_dirty(ctx, &ctx->blend_color.atom);
- r600_atom_dirty(ctx, &ctx->cb_misc_state.atom);
- r600_atom_dirty(ctx, &ctx->clip_misc_state.atom);
- r600_atom_dirty(ctx, &ctx->clip_state.atom);
- r600_atom_dirty(ctx, &ctx->db_misc_state.atom);
- r600_atom_dirty(ctx, &ctx->framebuffer.atom);
- r600_atom_dirty(ctx, &ctx->vgt_state.atom);
- r600_atom_dirty(ctx, &ctx->vgt2_state.atom);
- r600_atom_dirty(ctx, &ctx->sample_mask.atom);
- r600_atom_dirty(ctx, &ctx->stencil_ref.atom);
- r600_atom_dirty(ctx, &ctx->viewport.atom);
+ ctx->alphatest_state.atom.dirty = true;
+ ctx->blend_color.atom.dirty = true;
+ ctx->cb_misc_state.atom.dirty = true;
+ ctx->clip_misc_state.atom.dirty = true;
+ ctx->clip_state.atom.dirty = true;
+ ctx->db_misc_state.atom.dirty = true;
+ ctx->framebuffer.atom.dirty = true;
+ ctx->vgt_state.atom.dirty = true;
+ ctx->vgt2_state.atom.dirty = true;
+ ctx->sample_mask.atom.dirty = true;
+ ctx->stencil_ref.atom.dirty = true;
+ ctx->viewport.atom.dirty = true;
if (ctx->chip_class <= R700) {
- r600_atom_dirty(ctx, &ctx->seamless_cube_map.atom);
+ ctx->seamless_cube_map.atom.dirty = true;
}
ctx->vertex_buffer_state.dirty_mask = ctx->vertex_buffer_state.enabled_mask;
atom->dirty = false;
}
-static INLINE void r600_atom_dirty(struct r600_context *rctx, struct r600_atom *state)
-{
- state->dirty = true;
-}
-
/* evergreen_state.c */
struct pipe_sampler_view *
evergreen_create_sampler_view_custom(struct pipe_context *ctx,
if (rctx->db_misc_state.occlusion_query_enabled != enable) {
rctx->db_misc_state.occlusion_query_enabled = enable;
- r600_atom_dirty(rctx, &rctx->db_misc_state.atom);
+ rctx->db_misc_state.atom.dirty = true;
}
}
}
surf = (struct r600_surface*)state->cbufs[0];
if (rctx->alphatest_state.bypass != surf->alphatest_bypass) {
rctx->alphatest_state.bypass = surf->alphatest_bypass;
- r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
+ rctx->alphatest_state.atom.dirty = true;
}
}
if (rctx->cb_misc_state.nr_cbufs != state->nr_cbufs) {
rctx->cb_misc_state.nr_cbufs = state->nr_cbufs;
- r600_atom_dirty(rctx, &rctx->cb_misc_state.atom);
+ rctx->cb_misc_state.atom.dirty = true;
}
if (state->nr_cbufs == 0 && rctx->alphatest_state.bypass) {
rctx->alphatest_state.bypass = false;
- r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
+ rctx->alphatest_state.atom.dirty = true;
}
/* Calculate the CS size. */
rctx->framebuffer.atom.num_dw += 2;
}
- r600_atom_dirty(rctx, &rctx->framebuffer.atom);
+ rctx->framebuffer.atom.dirty = true;
}
#define FILL_SREG(s0x, s0y, s1x, s1y, s2x, s2y, s3x, s3y) \
update_cb = true;
}
if (update_cb) {
- r600_atom_dirty(rctx, &rctx->cb_misc_state.atom);
+ rctx->cb_misc_state.atom.dirty = true;
}
}
struct r600_context *rctx = (struct r600_context *)ctx;
rctx->blend_color.state = *state;
- r600_atom_dirty(rctx, &rctx->blend_color.atom);
+ rctx->blend_color.atom.dirty = true;
}
void r600_emit_blend_color(struct r600_context *rctx, struct r600_atom *atom)
struct pipe_constant_buffer cb;
rctx->clip_state.state = *state;
- r600_atom_dirty(rctx, &rctx->clip_state.atom);
+ rctx->clip_state.atom.dirty = true;
cb.buffer = NULL;
cb.user_buffer = state->ucp;
struct r600_context *rctx = (struct r600_context *)ctx;
rctx->stencil_ref.state = *state;
- r600_atom_dirty(rctx, &rctx->stencil_ref.atom);
+ rctx->stencil_ref.atom.dirty = true;
}
void r600_emit_stencil_ref(struct r600_context *rctx, struct r600_atom *atom)
rctx->alphatest_state.sx_alpha_ref != dsa->alpha_ref) {
rctx->alphatest_state.sx_alpha_test_control = dsa->sx_alpha_test_control;
rctx->alphatest_state.sx_alpha_ref = dsa->alpha_ref;
- r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
+ rctx->alphatest_state.atom.dirty = true;
}
}
rctx->clip_misc_state.clip_plane_enable != rs->clip_plane_enable) {
rctx->clip_misc_state.pa_cl_clip_cntl = rs->pa_cl_clip_cntl;
rctx->clip_misc_state.clip_plane_enable = rs->clip_plane_enable;
- r600_atom_dirty(rctx, &rctx->clip_misc_state.atom);
+ rctx->clip_misc_state.atom.dirty = true;
}
/* Workaround for a missing scissor enable on r600. */
state->atom.num_dw =
util_bitcount(state->dirty_mask & state->has_bordercolor_mask) * 11 +
util_bitcount(state->dirty_mask & ~state->has_bordercolor_mask) * 5;
- r600_atom_dirty(rctx, &state->atom);
+ state->atom.dirty = true;
}
}
/* change in TA_CNTL_AUX need a pipeline flush */
rctx->flags |= R600_CONTEXT_PS_PARTIAL_FLUSH;
rctx->seamless_cube_map.enabled = seamless_cube_map;
- r600_atom_dirty(rctx, &rctx->seamless_cube_map.atom);
+ rctx->seamless_cube_map.atom.dirty = true;
}
}
rctx->flags |= rctx->has_vertex_cache ? R600_CONTEXT_VTX_FLUSH : R600_CONTEXT_TEX_FLUSH;
rctx->vertex_buffer_state.atom.num_dw = (rctx->chip_class >= EVERGREEN ? 12 : 11) *
util_bitcount(rctx->vertex_buffer_state.dirty_mask);
- r600_atom_dirty(rctx, &rctx->vertex_buffer_state.atom);
+ rctx->vertex_buffer_state.atom.dirty = true;
}
}
rctx->flags |= R600_CONTEXT_TEX_FLUSH;
state->atom.num_dw = (rctx->chip_class >= EVERGREEN ? 14 : 13) *
util_bitcount(state->dirty_mask);
- r600_atom_dirty(rctx, &state->atom);
+ state->atom.dirty = true;
}
}
struct r600_context *rctx = (struct r600_context *)ctx;
rctx->viewport.state = *state;
- r600_atom_dirty(rctx, &rctx->viewport.atom);
+ rctx->viewport.atom.dirty = true;
}
void r600_emit_viewport_state(struct r600_context *rctx, struct r600_atom *atom)
if (rctx->ps_shader &&
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;
- r600_atom_dirty(rctx, &rctx->cb_misc_state.atom);
+ rctx->cb_misc_state.atom.dirty = true;
}
return 0;
}
if (rctx->cb_misc_state.multiwrite != multiwrite) {
rctx->cb_misc_state.multiwrite = multiwrite;
- r600_atom_dirty(rctx, &rctx->cb_misc_state.atom);
+ rctx->cb_misc_state.atom.dirty = true;
}
if (rctx->vs_shader)
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;
- r600_atom_dirty(rctx, &rctx->cb_misc_state.atom);
+ rctx->cb_misc_state.atom.dirty = true;
}
}
rctx->vs_shader->current->shader.clip_dist_write != rctx->clip_misc_state.clip_dist_write) {
rctx->clip_misc_state.pa_cl_vs_out_cntl = rctx->vs_shader->current->pa_cl_vs_out_cntl;
rctx->clip_misc_state.clip_dist_write = rctx->vs_shader->current->shader.clip_dist_write;
- r600_atom_dirty(rctx, &rctx->clip_misc_state.atom);
+ rctx->clip_misc_state.atom.dirty = true;
}
}
}
rctx->flags |= R600_CONTEXT_SHADERCONST_FLUSH;
state->atom.num_dw = rctx->chip_class >= EVERGREEN ? util_bitcount(state->dirty_mask)*20
: util_bitcount(state->dirty_mask)*19;
- r600_atom_dirty(rctx, &state->atom);
+ state->atom.dirty = true;
}
}
return;
rctx->sample_mask.sample_mask = sample_mask;
- r600_atom_dirty(rctx, &rctx->sample_mask.atom);
+ rctx->sample_mask.atom.dirty = true;
}
static void r600_update_derived_state(struct r600_context *rctx)
/* Set the index offset and multi primitive */
if (rctx->vgt2_state.vgt_indx_offset != info.index_bias) {
rctx->vgt2_state.vgt_indx_offset = info.index_bias;
- r600_atom_dirty(rctx, &rctx->vgt2_state.atom);
+ rctx->vgt2_state.atom.dirty = true;
}
if (rctx->vgt_state.vgt_multi_prim_ib_reset_en != info.primitive_restart ||
rctx->vgt_state.vgt_multi_prim_ib_reset_indx != info.restart_index) {
rctx->vgt_state.vgt_multi_prim_ib_reset_en = info.primitive_restart;
rctx->vgt_state.vgt_multi_prim_ib_reset_indx = info.restart_index;
- r600_atom_dirty(rctx, &rctx->vgt_state.atom);
+ rctx->vgt_state.atom.dirty = true;
}
/* Emit states (the function expects that we emit at most 17 dwords here). */