From: Zhao Yakui Date: Tue, 9 Apr 2013 01:29:19 +0000 (+0800) Subject: tests/bdw: Port storedw_loop_blt to gen8 X-Git-Tag: intel-gpu-tools-1.6~395 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=50a52f3ada8c52c584c23d107bf96fa34a47b46e;p=platform%2Fupstream%2Fintel-gpu-tools.git tests/bdw: Port storedw_loop_blt to gen8 The code is from the storedw_loop_render. v2 (by Ben): Flush on the correct ring Signed-off-by: Zhao Yakui Signed-off-by: Ben Widawsky --- diff --git a/tests/gem_storedw_loop_blt.c b/tests/gem_storedw_loop_blt.c index 84f9e28..9c1ee08 100644 --- a/tests/gem_storedw_loop_blt.c +++ b/tests/gem_storedw_loop_blt.c @@ -51,26 +51,42 @@ static int has_ppgtt = 0; */ static void -store_dword_loop(int divider) +emit_store_dword_imm(int devid, drm_intel_bo *dest, uint32_t val) { - int cmd, i, val = 0; - uint32_t *buf; - - printf("running storedw loop on blt with stall every %i batch\n", divider); - + int cmd; cmd = MI_STORE_DWORD_IMM; if (!has_ppgtt) cmd |= MI_MEM_VIRTUAL; - for (i = 0; i < SLOW_QUICK(0x100000, 0x10); i++) { + if (intel_gen(devid) >= 8) { + BEGIN_BATCH(4); + OUT_BATCH(cmd); + OUT_RELOC(dest, I915_GEM_DOMAIN_INSTRUCTION, + I915_GEM_DOMAIN_INSTRUCTION, 0); + OUT_BATCH(0); + OUT_BATCH(val); + ADVANCE_BATCH(); + } else { BEGIN_BATCH(4); OUT_BATCH(cmd); OUT_BATCH(0); /* reserved */ - OUT_RELOC(target_buffer, I915_GEM_DOMAIN_INSTRUCTION, + OUT_RELOC(dest, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, 0); OUT_BATCH(val); ADVANCE_BATCH(); + } +} + +static void +store_dword_loop(int devid, int divider) +{ + int i, val = 0; + uint32_t *buf; + printf("running storedw loop on render with stall every %i batch\n", divider); + + for (i = 0; i < SLOW_QUICK(0x100000, 0x10); i++) { + emit_store_dword_imm(devid, target_buffer, val); intel_batchbuffer_flush_on_ring(batch, I915_EXEC_BLT); if (i % divider != 0) @@ -124,11 +140,11 @@ int main(int argc, char **argv) target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096); igt_assert(target_buffer); - store_dword_loop(1); - store_dword_loop(2); + store_dword_loop(devid, 1); + store_dword_loop(devid, 2); if (!igt_run_in_simulation()) { - store_dword_loop(3); - store_dword_loop(5); + store_dword_loop(devid, 3); + store_dword_loop(devid, 5); } drm_intel_bo_unreference(target_buffer);