diff options
author | Damien Lespiau <damien.lespiau@intel.com> | 2013-02-14 15:32:33 +0000 |
---|---|---|
committer | Ben Widawsky <benjamin.widawsky@intel.com> | 2013-11-06 09:34:35 -0800 |
commit | 636f726b8030e2aec831193de25032d817267452 (patch) | |
tree | 03ec6ea5aad0137c5c53f1d63246d02504110830 /tests | |
parent | 3aad2ac83c76e8e05ac91d8b7dab465556ef9575 (diff) |
tests/bdw: Port storedw_loop_render to bdw
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/gem_storedw_loop_render.c | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/tests/gem_storedw_loop_render.c b/tests/gem_storedw_loop_render.c index d62c884b..423152e3 100644 --- a/tests/gem_storedw_loop_render.c +++ b/tests/gem_storedw_loop_render.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 render 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, 0); if (i % divider != 0) @@ -121,11 +137,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); |