struct r600_pipe_reg {
u32 value;
- u32 mask;
struct r600_block *block;
struct r600_resource *bo;
enum radeon_bo_usage bo_usage;
void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state)
{
struct r600_block *block;
- unsigned new_val;
int dirty;
for (int i = 0; i < state->nregs; i++) {
unsigned id, reloc_id;
dirty = block->status & R600_BLOCK_STATUS_DIRTY;
- new_val = block->reg[id];
- new_val &= ~reg->mask;
- new_val |= reg->value;
- if (new_val != block->reg[id]) {
- block->reg[id] = new_val;
+ if (reg->value != block->reg[id]) {
+ block->reg[id] = reg->value;
dirty |= R600_BLOCK_STATUS_DIRTY;
}
if (block->flags & REG_FLAG_DIRTY_ALWAYS)
state->regs[state->nregs].id = (offset - block->start_offset) >> 2;
state->regs[state->nregs].value = value;
- state->regs[state->nregs].mask = 0xFFFFFFFF;
state->regs[state->nregs].bo = bo;
state->regs[state->nregs].bo_usage = usage;
state->regs[state->nregs].id = offset;
state->regs[state->nregs].block = NULL;
state->regs[state->nregs].value = value;
- state->regs[state->nregs].mask = 0xFFFFFFFF;
state->regs[state->nregs].bo = bo;
state->regs[state->nregs].bo_usage = usage;