summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2011-06-07 10:38:46 +1000
committerDave Airlie <airlied@redhat.com>2011-06-08 11:46:50 +1000
commite21601e46efa3c17933f5abf079396ee3bdb4c45 (patch)
treefc8fa3e4513e45d10f53462925552a2050555fed /src
parentbb4758669c82f8979a56524db1c04ce662c783d8 (diff)
downloadexternal_mesa3d-e21601e46efa3c17933f5abf079396ee3bdb4c45.zip
external_mesa3d-e21601e46efa3c17933f5abf079396ee3bdb4c45.tar.gz
external_mesa3d-e21601e46efa3c17933f5abf079396ee3bdb4c45.tar.bz2
r600g: use memcmp instead of a loop in state_set_resource
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/winsys/r600/drm/r600_hw_context.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c
index 6b62d16..cd52ead 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -1070,11 +1070,9 @@ void r600_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_
is_vertex = ((state->val[num_regs-1] & 0xc0000000) == 0xc0000000);
dirty = block->status & R600_BLOCK_STATUS_DIRTY;
- for (i = 0; i < num_regs; i++) {
- if (dirty || (block->reg[i] != state->val[i])) {
- dirty |= R600_BLOCK_STATUS_DIRTY;
- block->reg[i] = state->val[i];
- }
+ if (memcmp(block->reg, state->val, num_regs*4)) {
+ memcpy(block->reg, state->val, num_regs * 4);
+ dirty |= R600_BLOCK_STATUS_DIRTY;
}
/* if no BOs on block, force dirty */