gem_storedw_batches_loop: Fix for BDW

Existing code was trying to be too clever and wasn't properly emitting
the high dword, or the correct length.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
This commit is contained in:
Ben Widawsky 2014-01-13 06:28:45 -08:00
parent fee27cf822
commit 1552aa2112

View File

@ -60,8 +60,6 @@ store_dword_loop(int divider, unsigned flags)
cmd = MI_STORE_DWORD_IMM;
if (!has_ppgtt)
cmd |= MI_MEM_VIRTUAL;
if (intel_gen(drm_intel_bufmgr_gem_get_devid(bufmgr)) >= 8)
((uint8_t *)&cmd)[0] = 1;
for (i = 0; i < SLOW_QUICK(0x80000, 4); i++) {
int j = 0;
@ -76,13 +74,14 @@ store_dword_loop(int divider, unsigned flags)
buf = cmd_bo->virtual;
buf[j++] = cmd;
cmd_address_offset = j * 4;
if (intel_gen(drm_intel_bufmgr_gem_get_devid(bufmgr)) >= 8) {
buf[j++] = target_bo->offset;
buf[j++] = 0;
} else {
buf[j++] = 0;
buf[j++] = target_bo->offset;
}
cmd_address_offset = (j -1) * 4;
assert(j > 0);
buf[j++] = 0x42000000 + val;