summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDamien Lespiau <damien.lespiau@intel.com>2013-02-14 15:32:33 +0000
committerBen Widawsky <benjamin.widawsky@intel.com>2013-11-06 09:34:35 -0800
commit636f726b8030e2aec831193de25032d817267452 (patch)
tree03ec6ea5aad0137c5c53f1d63246d02504110830 /tests
parent3aad2ac83c76e8e05ac91d8b7dab465556ef9575 (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.c40
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);