[Mesa-dev] [PATCH 07/14] i965/compaction: Use sizeof brw_inst/brw_compact_inst.
Matt Turner
mattst88 at gmail.com
Thu Aug 28 20:10:37 PDT 2014
---
src/mesa/drivers/dri/i965/brw_eu_compact.c | 32 ++++++++++++++++--------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c b/src/mesa/drivers/dri/i965/brw_eu_compact.c
index 696ed98..c291f96 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_compact.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c
@@ -1098,11 +1098,11 @@ brw_compact_instructions(struct brw_compile *p, int start_offset,
/* For an instruction at byte offset 8*i before compaction, this is the number
* of compacted instructions that preceded it.
*/
- int compacted_counts[(p->next_insn_offset - start_offset) / 8];
+ int compacted_counts[(p->next_insn_offset - start_offset) / sizeof(brw_compact_inst)];
/* For an instruction at byte offset 8*i after compaction, this is the
* 8-byte offset it was at before compaction.
*/
- int old_ip[(p->next_insn_offset - start_offset) / 8];
+ int old_ip[(p->next_insn_offset - start_offset) / sizeof(brw_compact_inst)];
if (brw->gen < 6)
return;
@@ -1114,8 +1114,8 @@ brw_compact_instructions(struct brw_compile *p, int start_offset,
brw_inst *src = store + src_offset;
void *dst = store + offset;
- old_ip[offset / 8] = src_offset / 8;
- compacted_counts[src_offset / 8] = compacted_count;
+ old_ip[offset / sizeof(brw_compact_inst)] = src_offset / sizeof(brw_compact_inst);
+ compacted_counts[src_offset / sizeof(brw_compact_inst)] = compacted_count;
brw_inst saved = *src;
@@ -1130,7 +1130,7 @@ brw_compact_instructions(struct brw_compile *p, int start_offset,
}
}
- offset += 8;
+ offset += sizeof(brw_compact_inst);
} else {
/* It appears that the end of thread SEND instruction needs to be
* aligned, or the GPU hangs.
@@ -1138,13 +1138,14 @@ brw_compact_instructions(struct brw_compile *p, int start_offset,
if ((brw_inst_opcode(brw, src) == BRW_OPCODE_SEND ||
brw_inst_opcode(brw, src) == BRW_OPCODE_SENDC) &&
brw_inst_eot(brw, src) &&
- (offset & 8) != 0) {
+ (offset & sizeof(brw_compact_inst)) != 0) {
brw_compact_inst *align = store + offset;
memset(align, 0, sizeof(*align));
brw_compact_inst_set_opcode(align, BRW_OPCODE_NOP);
brw_compact_inst_set_cmpt_control(align, true);
- offset += 8;
- old_ip[offset / 8] = src_offset / 8;
+ offset += sizeof(brw_compact_inst);
+ old_ip[offset / sizeof(brw_compact_inst)] = src_offset / sizeof(brw_compact_inst);
+
dst = store + offset;
}
@@ -1163,7 +1164,7 @@ brw_compact_instructions(struct brw_compile *p, int start_offset,
for (offset = 0; offset < p->next_insn_offset - start_offset;
offset = next_offset(brw, store, offset)) {
brw_inst *insn = store + offset;
- int this_old_ip = old_ip[offset / 8];
+ int this_old_ip = old_ip[offset / sizeof(brw_compact_inst)];
int this_compacted_count = compacted_counts[this_old_ip];
int target_old_ip, target_compacted_count;
@@ -1196,21 +1197,22 @@ brw_compact_instructions(struct brw_compile *p, int start_offset,
* alignment padding, so that the next compression pass (for the FS 8/16
* compile passes) parses correctly.
*/
- if (p->next_insn_offset & 8) {
+ if (p->next_insn_offset & sizeof(brw_compact_inst)) {
brw_compact_inst *align = store + offset;
memset(align, 0, sizeof(*align));
brw_compact_inst_set_opcode(align, BRW_OPCODE_NOP);
brw_compact_inst_set_cmpt_control(align, true);
- p->next_insn_offset += 8;
+ p->next_insn_offset += sizeof(brw_compact_inst);
}
- p->nr_insn = p->next_insn_offset / 16;
+ p->nr_insn = p->next_insn_offset / sizeof(brw_inst);
/* Update the instruction offsets for each annotation. */
if (annotation) {
for (int offset = 0, i = 0; i < num_annotations; i++) {
- while (start_offset + old_ip[offset / 8] * 8 != annotation[i].offset) {
- assert(start_offset + old_ip[offset / 8] * 8 <
- annotation[i].offset);
+ while (start_offset + old_ip[offset / sizeof(brw_compact_inst)] *
+ sizeof(brw_compact_inst) != annotation[i].offset) {
+ assert(start_offset + old_ip[offset / sizeof(brw_compact_inst)] *
+ sizeof(brw_compact_inst) < annotation[i].offset);
offset = next_offset(brw, store, offset);
}
--
1.8.5.5
More information about the mesa-dev
mailing list