From 5646964b1360883b6254e2ebacc198f43869d36f Mon Sep 17 00:00:00 2001 From: Jerome Glisse Date: Tue, 28 Sep 2010 17:37:56 -0400 Subject: r600g: use a hash table instead of group Instead of creating group of register use a hash table to lookup into which block each register belongs. This simplify code a bit. Signed-off-by: Jerome Glisse regs[state->nregs].group_id = group_id; state->regs[state->nregs].offset = offset; state->regs[state->nregs].value = value; state->regs[state->nregs].mask = mask; @@ -178,7 +151,7 @@ struct r600_block_reloc { unsigned bo_pm4_index[R600_BLOCK_MAX_BO]; }; -struct r600_group_block { +struct r600_block { unsigned status; unsigned start_offset; unsigned pm4_ndwords; @@ -190,12 +163,10 @@ struct r600_group_block { struct r600_block_reloc reloc[R600_BLOCK_MAX_BO]; }; -struct r600_group { +struct r600_range { unsigned start_offset; unsigned end_offset; - unsigned nblocks; - struct r600_group_block *blocks; - unsigned *offset_block_id; + struct r600_block **blocks; }; /* @@ -236,8 +207,11 @@ struct r600_query { struct r600_context { struct radeon *radeon; - unsigned ngroups; - struct r600_group groups[R600_GROUP_MAX]; + unsigned hash_size; + unsigned hash_shift; + struct r600_range range[256]; + unsigned nblocks; + struct r600_block **blocks; unsigned pm4_ndwords; unsigned pm4_cdwords; unsigned pm4_dirty_cdwords; -- cgit v1.2.3