mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 03:58:27 +00:00 
			
		
		
		
	tests: use igt_assert/igt_require more
With the new _f variants we can replace almost all of them. Also remove a ton of checks for argc != 1, they're a bit useless ... Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
		
							parent
							
								
									88ad6d7be8
								
							
						
					
					
						commit
						f3c54d0cb4
					
				@ -159,11 +159,9 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			drm_intel_bo_map(scratch_bo, false);
 | 
								drm_intel_bo_map(scratch_bo, false);
 | 
				
			||||||
			cpu_ptr = scratch_bo->virtual;
 | 
								cpu_ptr = scratch_bo->virtual;
 | 
				
			||||||
			for (j = 0; j < len; j++) {
 | 
								for (j = 0; j < len; j++) {
 | 
				
			||||||
				if (cpu_ptr[j] != val0) {
 | 
									igt_assert_f(cpu_ptr[j] == val0,
 | 
				
			||||||
					printf("mismatch at %i, got: %i, expected: %i\n",
 | 
										     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
					       j, cpu_ptr[j], val0);
 | 
										     j, cpu_ptr[j], val0);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			drm_intel_bo_unmap(scratch_bo);
 | 
								drm_intel_bo_unmap(scratch_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -196,25 +194,19 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			gtt_ptr = staging_bo->virtual;
 | 
								gtt_ptr = staging_bo->virtual;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			for (j = 0; j < start; j++) {
 | 
								for (j = 0; j < start; j++) {
 | 
				
			||||||
				if (gtt_ptr[j] != val0) {
 | 
									igt_assert_f(gtt_ptr[j] == val0,
 | 
				
			||||||
					printf("mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
										     "mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
				
			||||||
					       j, start, len, gtt_ptr[j], val0);
 | 
										     j, start, len, gtt_ptr[j], val0);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for (; j < start + len; j++) {
 | 
								for (; j < start + len; j++) {
 | 
				
			||||||
				if (gtt_ptr[j] != val1) {
 | 
									igt_assert_f(gtt_ptr[j] == val1,
 | 
				
			||||||
					printf("mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
										     "mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
				
			||||||
					       j, start, len, gtt_ptr[j], val1);
 | 
										     j, start, len, gtt_ptr[j], val1);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for (; j < BO_SIZE; j++) {
 | 
								for (; j < BO_SIZE; j++) {
 | 
				
			||||||
				if (gtt_ptr[j] != val0) {
 | 
									igt_assert_f(gtt_ptr[j] == val0,
 | 
				
			||||||
					printf("mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
										     "mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
				
			||||||
					       j, start, len, gtt_ptr[j], val0);
 | 
										     j, start, len, gtt_ptr[j], val0);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
								drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -240,11 +232,9 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			do_or_die(drm_intel_bo_map(scratch_bo, false));
 | 
								do_or_die(drm_intel_bo_map(scratch_bo, false));
 | 
				
			||||||
			cpu_ptr = scratch_bo->virtual;
 | 
								cpu_ptr = scratch_bo->virtual;
 | 
				
			||||||
			for (j = 0; j < len; j++) {
 | 
								for (j = 0; j < len; j++) {
 | 
				
			||||||
				if (cpu_ptr[j] != val0) {
 | 
									igt_assert_f(cpu_ptr[j] == val0,
 | 
				
			||||||
					printf("mismatch in read at %i, got: %i, expected: %i\n",
 | 
										     "mismatch in read at %i, got: %i, expected: %i\n",
 | 
				
			||||||
					       j, cpu_ptr[j], val0);
 | 
										     j, cpu_ptr[j], val0);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			drm_intel_bo_unmap(scratch_bo);
 | 
								drm_intel_bo_unmap(scratch_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -267,25 +257,19 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			gtt_ptr = staging_bo->virtual;
 | 
								gtt_ptr = staging_bo->virtual;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			for (j = 0; j < start; j++) {
 | 
								for (j = 0; j < start; j++) {
 | 
				
			||||||
				if (gtt_ptr[j] != val1) {
 | 
									igt_assert_f(gtt_ptr[j] == val1,
 | 
				
			||||||
					printf("mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
										     "mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
				
			||||||
					       j, start, len, gtt_ptr[j], val1);
 | 
										     j, start, len, gtt_ptr[j], val1);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for (; j < start + len; j++) {
 | 
								for (; j < start + len; j++) {
 | 
				
			||||||
				if (gtt_ptr[j] != val2) {
 | 
									igt_assert_f(gtt_ptr[j] == val2,
 | 
				
			||||||
					printf("mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
										     "mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
				
			||||||
					       j, start, len, gtt_ptr[j], val2);
 | 
										     j, start, len, gtt_ptr[j], val2);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for (; j < BO_SIZE; j++) {
 | 
								for (; j < BO_SIZE; j++) {
 | 
				
			||||||
				if (gtt_ptr[j] != val1) {
 | 
									igt_assert_f(gtt_ptr[j] == val1,
 | 
				
			||||||
					printf("mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
										     "mismatch at %i, partial=[%d+%d] got: %i, expected: %i\n",
 | 
				
			||||||
					       j, start, len, gtt_ptr[j], val1);
 | 
										     j, start, len, gtt_ptr[j], val1);
 | 
				
			||||||
					igt_fail(1);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
								drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
				
			||||||
			drm_intel_bo_unmap(scratch_bo);
 | 
								drm_intel_bo_unmap(scratch_bo);
 | 
				
			||||||
 | 
				
			|||||||
@ -100,10 +100,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
				
			|||||||
@ -125,8 +125,7 @@ static void run_on_ring(int fd, unsigned ring_id, const char *ring_name)
 | 
				
			|||||||
			gem_close(fd, handle);
 | 
								gem_close(fd, handle);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (exec(fd, handle_new, split, >t_offset_new, 0))
 | 
							igt_assert(exec(fd, handle_new, split, >t_offset_new, 0) == 0);
 | 
				
			||||||
			igt_fail(1);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (split > 0) {
 | 
							if (split > 0) {
 | 
				
			||||||
			/* Check that we've managed to collide in the tlb. */
 | 
								/* Check that we've managed to collide in the tlb. */
 | 
				
			||||||
 | 
				
			|||||||
@ -99,11 +99,6 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	igt_skip_on_simulation();
 | 
						igt_skip_on_simulation();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc != 1) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "usage: %s\n", argv[0]);
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
	devid = intel_get_drm_devid(fd);
 | 
						devid = intel_get_drm_devid(fd);
 | 
				
			||||||
	if (!HAS_BLT_RING(devid)) {
 | 
						if (!HAS_BLT_RING(devid)) {
 | 
				
			||||||
@ -112,29 +107,17 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
						batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
				
			||||||
	if (!batch) {
 | 
						igt_assert(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_buffer) {
 | 
						igt_assert(target_buffer);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	blt_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4*4096*4096, 4096);
 | 
						blt_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4*4096*4096, 4096);
 | 
				
			||||||
	if (!blt_bo) {
 | 
						igt_assert(blt_bo);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc blt buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dummy_reloc_loop();
 | 
						dummy_reloc_loop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -144,10 +144,7 @@ static void multi_write_domain(int fd)
 | 
				
			|||||||
	gem_close(fd, handle);
 | 
						gem_close(fd, handle);
 | 
				
			||||||
	gem_close(fd, handle_target);
 | 
						gem_close(fd, handle_target);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ret == 0 || errno != EINVAL) {
 | 
						igt_assert(ret != 0 && errno == EINVAL);
 | 
				
			||||||
		fprintf(stderr, "multiple write domains not rejected\n");
 | 
					 | 
				
			||||||
		igt_fail(1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int fd;
 | 
					int fd;
 | 
				
			||||||
 | 
				
			|||||||
@ -114,8 +114,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
		gem_write(fd, handle, 0, batch, sizeof(batch));
 | 
							gem_write(fd, handle, 0, batch, sizeof(batch));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (reloc_ofs = 4096; reloc_ofs < batch_size; reloc_ofs += 4096)
 | 
							for (reloc_ofs = 4096; reloc_ofs < batch_size; reloc_ofs += 4096)
 | 
				
			||||||
			if (exec(fd, handle, reloc_ofs))
 | 
								igt_assert(exec(fd, handle, reloc_ofs) == 0);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gem_close(fd, handle);
 | 
						gem_close(fd, handle);
 | 
				
			||||||
 | 
				
			|||||||
@ -97,8 +97,7 @@ static void loop(int fd, uint32_t handle, unsigned ring_id, const char *ring_nam
 | 
				
			|||||||
		struct timeval start, end;
 | 
							struct timeval start, end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		gettimeofday(&start, NULL);
 | 
							gettimeofday(&start, NULL);
 | 
				
			||||||
		if (exec(fd, handle, count, ring_id))
 | 
							igt_assert(exec(fd, handle, count, ring_id) == 0);
 | 
				
			||||||
			igt_fail(1);
 | 
					 | 
				
			||||||
		gettimeofday(&end, NULL);
 | 
							gettimeofday(&end, NULL);
 | 
				
			||||||
		printf("Time to exec x %d:		%7.3fµs (ring=%s)\n",
 | 
							printf("Time to exec x %d:		%7.3fµs (ring=%s)\n",
 | 
				
			||||||
		       count, elapsed(&start, &end, count), ring_name);
 | 
							       count, elapsed(&start, &end, count), ring_name);
 | 
				
			||||||
 | 
				
			|||||||
@ -128,20 +128,16 @@ _bo_write_verify(struct test *t)
 | 
				
			|||||||
		for (i = 0; i < dwords; i++) {
 | 
							for (i = 0; i < dwords; i++) {
 | 
				
			||||||
			a[i] = i;
 | 
								a[i] = i;
 | 
				
			||||||
			v = a[i];
 | 
								v = a[i];
 | 
				
			||||||
			if (v != i) {
 | 
								igt_assert_f(v == i,
 | 
				
			||||||
				printf("tiling %s: write failed at %d (%x)\n",
 | 
									     "tiling %s: write failed at %d (%x)\n",
 | 
				
			||||||
				       tile_str[t->tiling], i, v);
 | 
									     tile_str[t->tiling], i, v);
 | 
				
			||||||
				igt_fail(-1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (i = 0; i < dwords; i++) {
 | 
							for (i = 0; i < dwords; i++) {
 | 
				
			||||||
			v = a[i];
 | 
								v = a[i];
 | 
				
			||||||
			if (v != i) {
 | 
								igt_assert_f(v == i,
 | 
				
			||||||
				printf("tiling %s: verify failed at %d (%x)\n",
 | 
									     "tiling %s: verify failed at %d (%x)\n",
 | 
				
			||||||
				       tile_str[t->tiling], i, v);
 | 
									     tile_str[t->tiling], i, v);
 | 
				
			||||||
				igt_fail(-2);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -48,7 +48,6 @@ test_large_object(int fd)
 | 
				
			|||||||
	struct drm_i915_gem_create create;
 | 
						struct drm_i915_gem_create create;
 | 
				
			||||||
	struct drm_i915_gem_pin pin;
 | 
						struct drm_i915_gem_pin pin;
 | 
				
			||||||
	uint32_t obj_size;
 | 
						uint32_t obj_size;
 | 
				
			||||||
	int ret;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(&create, 0, sizeof(create));
 | 
						memset(&create, 0, sizeof(create));
 | 
				
			||||||
	memset(&pin, 0, sizeof(pin));
 | 
						memset(&pin, 0, sizeof(pin));
 | 
				
			||||||
@ -62,20 +61,10 @@ test_large_object(int fd)
 | 
				
			|||||||
	create.size = obj_size;
 | 
						create.size = obj_size;
 | 
				
			||||||
	printf("obj size %i\n", obj_size);
 | 
						printf("obj size %i\n", obj_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
 | 
						igt_assert(ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create) == 0);
 | 
				
			||||||
	if (ret) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "object creation failed: %s\n",
 | 
					 | 
				
			||||||
			strerror(errno));
 | 
					 | 
				
			||||||
		igt_fail(ret);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pin.handle = create.handle;
 | 
						pin.handle = create.handle;
 | 
				
			||||||
	ret = ioctl(fd, DRM_IOCTL_I915_GEM_PIN, &pin);
 | 
						igt_assert(ioctl(fd, DRM_IOCTL_I915_GEM_PIN, &pin) == 0);
 | 
				
			||||||
	if (ret) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "pin failed: %s\n",
 | 
					 | 
				
			||||||
			strerror(errno));
 | 
					 | 
				
			||||||
		igt_fail(ret);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gem_write(fd, create.handle, 0, data, obj_size);
 | 
						gem_write(fd, create.handle, 0, data, obj_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -81,11 +81,6 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int devid;
 | 
						int devid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc != 1) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "usage: %s\n", argv[0]);
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
	devid = intel_get_drm_devid(fd);
 | 
						devid = intel_get_drm_devid(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -99,17 +94,11 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	printf("num rings detected: %i\n", num_rings);
 | 
						printf("num rings detected: %i\n", num_rings);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
						batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
				
			||||||
	if (!batch) {
 | 
						igt_assert(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mi_lri_loop();
 | 
						mi_lri_loop();
 | 
				
			||||||
	gem_quiescent_gpu(fd);
 | 
						gem_quiescent_gpu(fd);
 | 
				
			||||||
 | 
				
			|||||||
@ -120,11 +120,9 @@ static void test_partial_reads(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
							drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
				
			||||||
		for (j = 0; j < len; j++) {
 | 
							for (j = 0; j < len; j++) {
 | 
				
			||||||
			if (tmp[j] != val) {
 | 
								igt_assert_f(tmp[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		igt_progress("partial reads test: ", i, ROUNDS);
 | 
							igt_progress("partial reads test: ", i, ROUNDS);
 | 
				
			||||||
@ -156,25 +154,19 @@ static void test_partial_writes(void)
 | 
				
			|||||||
		gtt_ptr = staging_bo->virtual;
 | 
							gtt_ptr = staging_bo->virtual;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (j = 0; j < start; j++) {
 | 
							for (j = 0; j < start; j++) {
 | 
				
			||||||
			if (gtt_ptr[j] != val) {
 | 
								igt_assert_f(gtt_ptr[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < start + len; j++) {
 | 
							for (; j < start + len; j++) {
 | 
				
			||||||
			if (gtt_ptr[j] != tmp[0]) {
 | 
								igt_assert_f(gtt_ptr[j] == tmp[0],
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], i);
 | 
									     j, tmp[j], i);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < BO_SIZE; j++) {
 | 
							for (; j < BO_SIZE; j++) {
 | 
				
			||||||
			if (gtt_ptr[j] != val) {
 | 
								igt_assert_f(gtt_ptr[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
							drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -201,11 +193,9 @@ static void test_partial_read_writes(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
							drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
				
			||||||
		for (j = 0; j < len; j++) {
 | 
							for (j = 0; j < len; j++) {
 | 
				
			||||||
			if (tmp[j] != val) {
 | 
								igt_assert_f(tmp[j] == val,
 | 
				
			||||||
				printf("mismatch in read at %i, got: %i, expected: %i\n",
 | 
									     "mismatch in read at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Change contents through gtt to make the pread cachelines
 | 
							/* Change contents through gtt to make the pread cachelines
 | 
				
			||||||
@ -226,25 +216,19 @@ static void test_partial_read_writes(void)
 | 
				
			|||||||
		gtt_ptr = staging_bo->virtual;
 | 
							gtt_ptr = staging_bo->virtual;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (j = 0; j < start; j++) {
 | 
							for (j = 0; j < start; j++) {
 | 
				
			||||||
			if (gtt_ptr[j] != val) {
 | 
								igt_assert_f(gtt_ptr[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < start + len; j++) {
 | 
							for (; j < start + len; j++) {
 | 
				
			||||||
			if (gtt_ptr[j] != tmp[0]) {
 | 
								igt_assert_f(gtt_ptr[j] == tmp[0],
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], tmp[0]);
 | 
									     j, tmp[j], tmp[0]);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < BO_SIZE; j++) {
 | 
							for (; j < BO_SIZE; j++) {
 | 
				
			||||||
			if (gtt_ptr[j] != val) {
 | 
								igt_assert_f(gtt_ptr[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
							drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -257,11 +257,9 @@ static void do_test(int fd, bool faulting_reloc)
 | 
				
			|||||||
		for (repeat = 0; repeat < 8; repeat++) {
 | 
							for (repeat = 0; repeat < 8; repeat++) {
 | 
				
			||||||
			drm_intel_bo_get_subdata(pc_target_bo[i],
 | 
								drm_intel_bo_get_subdata(pc_target_bo[i],
 | 
				
			||||||
						 repeat*small_pitch, 4, &test);
 | 
											 repeat*small_pitch, 4, &test);
 | 
				
			||||||
			if (test != 0xdeadbeef) {
 | 
								igt_assert_f(test == 0xdeadbeef,
 | 
				
			||||||
				fprintf(stderr, "mismatch in buffer %i: 0x%08x instead of 0xdeadbeef at offset %i\n",
 | 
									     "mismatch in buffer %i: 0x%08x instead of 0xdeadbeef at offset %i\n",
 | 
				
			||||||
					i, test, repeat*small_pitch);
 | 
									     i, test, repeat*small_pitch);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		drm_intel_bo_unreference(pc_target_bo[i]);
 | 
							drm_intel_bo_unreference(pc_target_bo[i]);
 | 
				
			||||||
		drm_intel_bo_unreference(special_bos[i]);
 | 
							drm_intel_bo_unreference(special_bos[i]);
 | 
				
			||||||
 | 
				
			|||||||
@ -73,10 +73,7 @@ store_pipe_control_loop(bool preuse_buffer)
 | 
				
			|||||||
		/* we want to check tlb consistency of the pipe_control target,
 | 
							/* we want to check tlb consistency of the pipe_control target,
 | 
				
			||||||
		 * so get a new buffer every time around */
 | 
							 * so get a new buffer every time around */
 | 
				
			||||||
		target_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
							target_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
		if (!target_bo) {
 | 
							igt_assert(target_bo);
 | 
				
			||||||
			fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
			igt_fail(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (preuse_buffer) {
 | 
							if (preuse_buffer) {
 | 
				
			||||||
			BEGIN_BATCH(6);
 | 
								BEGIN_BATCH(6);
 | 
				
			||||||
 | 
				
			|||||||
@ -256,10 +256,8 @@ static void do_test(int fd, bool faulting_reloc)
 | 
				
			|||||||
	/* Only check at the end to avoid unnecessary synchronous behaviour. */
 | 
						/* Only check at the end to avoid unnecessary synchronous behaviour. */
 | 
				
			||||||
	for (i = 0; i < NUM_TARGET_BOS; i++) {
 | 
						for (i = 0; i < NUM_TARGET_BOS; i++) {
 | 
				
			||||||
		drm_intel_bo_get_subdata(pc_target_bo[i], 0, 4, &test);
 | 
							drm_intel_bo_get_subdata(pc_target_bo[i], 0, 4, &test);
 | 
				
			||||||
		if (test != 0xdeadbeef) {
 | 
							igt_assert_f(test == 0xdeadbeef,
 | 
				
			||||||
			fprintf(stderr, "mismatch in buffer %i: 0x%08x instead of 0xdeadbeef\n", i, test);
 | 
								     "mismatch in buffer %i: 0x%08x instead of 0xdeadbeef\n", i, test);
 | 
				
			||||||
			igt_fail(1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		drm_intel_bo_unreference(pc_target_bo[i]);
 | 
							drm_intel_bo_unreference(pc_target_bo[i]);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -95,11 +95,6 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int devid;
 | 
						int devid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc != 1) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "usage: %s\n", argv[0]);
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
	devid = intel_get_drm_devid(fd);
 | 
						devid = intel_get_drm_devid(fd);
 | 
				
			||||||
	if (!HAS_BLT_RING(devid)) {
 | 
						if (!HAS_BLT_RING(devid)) {
 | 
				
			||||||
@ -109,23 +104,14 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
						batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
				
			||||||
	if (!batch) {
 | 
						igt_assert(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_buffer) {
 | 
						igt_assert(target_buffer);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store_dword_loop(fd);
 | 
						store_dword_loop(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -79,12 +79,9 @@ store_dword_loop(int divider)
 | 
				
			|||||||
		drm_intel_bo_map(target_buffer, 0);
 | 
							drm_intel_bo_map(target_buffer, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buf = target_buffer->virtual;
 | 
							buf = target_buffer->virtual;
 | 
				
			||||||
		if (buf[0] != val) {
 | 
							igt_assert_f(buf[0] == val,
 | 
				
			||||||
			fprintf(stderr,
 | 
								     "value mismatch: cur 0x%08x, stored 0x%08x\n",
 | 
				
			||||||
				"value mismatch: cur 0x%08x, stored 0x%08x\n",
 | 
								     buf[0], val);
 | 
				
			||||||
				buf[0], val);
 | 
					 | 
				
			||||||
			igt_fail(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_unmap(target_buffer);
 | 
							drm_intel_bo_unmap(target_buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -105,47 +102,27 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int devid;
 | 
						int devid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc != 1) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "usage: %s\n", argv[0]);
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
	devid = intel_get_drm_devid(fd);
 | 
						devid = intel_get_drm_devid(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	has_ppgtt = gem_uses_aliasing_ppgtt(fd);
 | 
						has_ppgtt = gem_uses_aliasing_ppgtt(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (IS_GEN2(devid) || IS_GEN3(devid) || IS_GEN4(devid) || IS_GEN5(devid)) {
 | 
						igt_skip_on_f(intel_gen(devid) < 6,
 | 
				
			||||||
 | 
							      "MI_STORE_DATA can only use GTT address on gen4+/g33 and "
 | 
				
			||||||
		fprintf(stderr, "MI_STORE_DATA can only use GTT address on gen4+/g33 and "
 | 
							      "needs snoopable mem on pre-gen6\n");
 | 
				
			||||||
			"needs snoopable mem on pre-gen6\n");
 | 
					 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* This only works with ppgtt */
 | 
						/* This only works with ppgtt */
 | 
				
			||||||
	if (!has_ppgtt) {
 | 
						igt_require(has_ppgtt);
 | 
				
			||||||
		fprintf(stderr, "no ppgtt detected, which is required\n");
 | 
					 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
						batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
				
			||||||
	if (!batch) {
 | 
						igt_assert(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_buffer) {
 | 
						igt_assert(target_buffer);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store_dword_loop(1);
 | 
						store_dword_loop(1);
 | 
				
			||||||
	store_dword_loop(2);
 | 
						store_dword_loop(2);
 | 
				
			||||||
 | 
				
			|||||||
@ -79,12 +79,9 @@ store_dword_loop(int divider)
 | 
				
			|||||||
		drm_intel_bo_map(target_buffer, 0);
 | 
							drm_intel_bo_map(target_buffer, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buf = target_buffer->virtual;
 | 
							buf = target_buffer->virtual;
 | 
				
			||||||
		if (buf[0] != val) {
 | 
							igt_assert_f(buf[0] == val,
 | 
				
			||||||
			fprintf(stderr,
 | 
								     "value mismatch: cur 0x%08x, stored 0x%08x\n",
 | 
				
			||||||
				"value mismatch: cur 0x%08x, stored 0x%08x\n",
 | 
								     buf[0], val);
 | 
				
			||||||
				buf[0], val);
 | 
					 | 
				
			||||||
			igt_fail(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_unmap(target_buffer);
 | 
							drm_intel_bo_unmap(target_buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -105,53 +102,30 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int devid;
 | 
						int devid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc != 1) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "usage: %s\n", argv[0]);
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
	devid = intel_get_drm_devid(fd);
 | 
						devid = intel_get_drm_devid(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	has_ppgtt = gem_uses_aliasing_ppgtt(fd);
 | 
						has_ppgtt = gem_uses_aliasing_ppgtt(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (IS_GEN2(devid) || IS_GEN3(devid) || IS_GEN4(devid) || IS_GEN5(devid)) {
 | 
						igt_skip_on_f(intel_gen(devid) < 6,
 | 
				
			||||||
 | 
							      "MI_STORE_DATA can only use GTT address on gen4+/g33 and "
 | 
				
			||||||
 | 
							      "needs snoopable mem on pre-gen6\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		fprintf(stderr, "MI_STORE_DATA can only use GTT address on gen4+/g33 and "
 | 
						igt_skip_on_f(intel_gen(devid) == 6,
 | 
				
			||||||
			"needs snoopable mem on pre-gen6\n");
 | 
							      "MI_STORE_DATA broken on gen6 bsd\n");
 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (IS_GEN6(devid)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		fprintf(stderr, "MI_STORE_DATA broken on gen6 bsd\n");
 | 
					 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* This only works with ppgtt */
 | 
						/* This only works with ppgtt */
 | 
				
			||||||
	if (!has_ppgtt) {
 | 
						igt_require(has_ppgtt);
 | 
				
			||||||
		fprintf(stderr, "no ppgtt detected, which is required\n");
 | 
					 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
						batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
				
			||||||
	if (!batch) {
 | 
						igt_assert(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_buffer) {
 | 
						igt_assert(target_buffer);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store_dword_loop(1);
 | 
						store_dword_loop(1);
 | 
				
			||||||
	store_dword_loop(2);
 | 
						store_dword_loop(2);
 | 
				
			||||||
 | 
				
			|||||||
@ -79,12 +79,9 @@ store_dword_loop(int divider)
 | 
				
			|||||||
		drm_intel_bo_map(target_buffer, 0);
 | 
							drm_intel_bo_map(target_buffer, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buf = target_buffer->virtual;
 | 
							buf = target_buffer->virtual;
 | 
				
			||||||
		if (buf[0] != val) {
 | 
							igt_assert_f(buf[0] == val,
 | 
				
			||||||
			fprintf(stderr,
 | 
								     "value mismatch: cur 0x%08x, stored 0x%08x\n",
 | 
				
			||||||
				"value mismatch: cur 0x%08x, stored 0x%08x\n",
 | 
								     buf[0], val);
 | 
				
			||||||
				buf[0], val);
 | 
					 | 
				
			||||||
			igt_fail(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_unmap(target_buffer);
 | 
							drm_intel_bo_unmap(target_buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -105,41 +102,24 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int devid;
 | 
						int devid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc != 1) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "usage: %s\n", argv[0]);
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
	devid = intel_get_drm_devid(fd);
 | 
						devid = intel_get_drm_devid(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	has_ppgtt = gem_uses_aliasing_ppgtt(fd);
 | 
						has_ppgtt = gem_uses_aliasing_ppgtt(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (IS_GEN2(devid) || IS_GEN3(devid) || IS_GEN4(devid) || IS_GEN5(devid)) {
 | 
						igt_skip_on_f(intel_gen(devid) < 6,
 | 
				
			||||||
 | 
							      "MI_STORE_DATA can only use GTT address on gen4+/g33 and "
 | 
				
			||||||
		fprintf(stderr, "MI_STORE_DATA can only use GTT address on gen4+/g33 and "
 | 
							      "needs snoopable mem on pre-gen6\n");
 | 
				
			||||||
			"needs snoopable mem on pre-gen6\n");
 | 
					 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
						batch = intel_batchbuffer_alloc(bufmgr, devid);
 | 
				
			||||||
	if (!batch) {
 | 
						igt_assert(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_buffer) {
 | 
						igt_assert(target_buffer);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store_dword_loop(1);
 | 
						store_dword_loop(1);
 | 
				
			||||||
	store_dword_loop(2);
 | 
						store_dword_loop(2);
 | 
				
			||||||
 | 
				
			|||||||
@ -102,28 +102,18 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* This only works with ppgtt */
 | 
						igt_require(gem_has_vebox(fd));
 | 
				
			||||||
	if (!gem_has_vebox(fd) || !gem_uses_aliasing_ppgtt(fd))
 | 
						igt_require(gem_uses_aliasing_ppgtt(fd));
 | 
				
			||||||
		return 77;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
 | 
						batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
 | 
				
			||||||
	if (!batch) {
 | 
						igt_require(batch);
 | 
				
			||||||
		fprintf(stderr, "failed to create batch buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_buffer = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_buffer) {
 | 
						igt_require(target_buffer);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store_dword_loop(1);
 | 
						store_dword_loop(1);
 | 
				
			||||||
	store_dword_loop(2);
 | 
						store_dword_loop(2);
 | 
				
			||||||
 | 
				
			|||||||
@ -143,11 +143,9 @@ static void test_partial_reads(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
							drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
				
			||||||
		for (j = 0; j < len; j++) {
 | 
							for (j = 0; j < len; j++) {
 | 
				
			||||||
			if (tmp[j] != val) {
 | 
								igt_assert_f(tmp[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       start + j, tmp[j], val);
 | 
									     start + j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		igt_progress("partial reads test: ", i, ROUNDS);
 | 
							igt_progress("partial reads test: ", i, ROUNDS);
 | 
				
			||||||
@ -177,25 +175,19 @@ static void test_partial_writes(void)
 | 
				
			|||||||
					 compare_tmp);
 | 
										 compare_tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (j = 0; j < start; j++) {
 | 
							for (j = 0; j < start; j++) {
 | 
				
			||||||
			if (compare_tmp[j] != val) {
 | 
								igt_assert_f(compare_tmp[j] == val,
 | 
				
			||||||
				printf("amismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < start + len; j++) {
 | 
							for (; j < start + len; j++) {
 | 
				
			||||||
			if (compare_tmp[j] != tmp[0]) {
 | 
								igt_assert_f(compare_tmp[j] == tmp[0],
 | 
				
			||||||
				printf("bmismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], i);
 | 
									     j, tmp[j], i);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < BO_SIZE; j++) {
 | 
							for (; j < BO_SIZE; j++) {
 | 
				
			||||||
			if (compare_tmp[j] != val) {
 | 
								igt_assert_f(compare_tmp[j] == val,
 | 
				
			||||||
				printf("cmismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
							drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -220,11 +212,9 @@ static void test_partial_read_writes(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
							drm_intel_bo_get_subdata(scratch_bo, start, len, tmp);
 | 
				
			||||||
		for (j = 0; j < len; j++) {
 | 
							for (j = 0; j < len; j++) {
 | 
				
			||||||
			if (tmp[j] != val) {
 | 
								igt_assert_f(tmp[j] == val,
 | 
				
			||||||
				printf("mismatch in read at %i, got: %i, expected: %i\n",
 | 
									     "mismatch in read at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       start + j, tmp[j], val);
 | 
									     start + j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Change contents through gtt to make the pread cachelines
 | 
							/* Change contents through gtt to make the pread cachelines
 | 
				
			||||||
@ -245,25 +235,19 @@ static void test_partial_read_writes(void)
 | 
				
			|||||||
					 compare_tmp);
 | 
										 compare_tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (j = 0; j < start; j++) {
 | 
							for (j = 0; j < start; j++) {
 | 
				
			||||||
			if (compare_tmp[j] != val) {
 | 
								igt_assert_f(compare_tmp[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < start + len; j++) {
 | 
							for (; j < start + len; j++) {
 | 
				
			||||||
			if (compare_tmp[j] != tmp[0]) {
 | 
								igt_assert_f(compare_tmp[j] == tmp[0],
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], tmp[0]);
 | 
									     j, tmp[j], tmp[0]);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for (; j < BO_SIZE; j++) {
 | 
							for (; j < BO_SIZE; j++) {
 | 
				
			||||||
			if (compare_tmp[j] != val) {
 | 
								igt_assert_f(compare_tmp[j] == val,
 | 
				
			||||||
				printf("mismatch at %i, got: %i, expected: %i\n",
 | 
									     "mismatch at %i, got: %i, expected: %i\n",
 | 
				
			||||||
				       j, tmp[j], val);
 | 
									     j, tmp[j], val);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
							drm_intel_gem_bo_unmap_gtt(staging_bo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -138,11 +138,9 @@ main(int argc, char **argv)
 | 
				
			|||||||
		/* Check the target bo's contents. */
 | 
							/* Check the target bo's contents. */
 | 
				
			||||||
		data = gem_mmap(fd, handle_target, sizeof(linear), PROT_READ | PROT_WRITE);
 | 
							data = gem_mmap(fd, handle_target, sizeof(linear), PROT_READ | PROT_WRITE);
 | 
				
			||||||
		for (j = 0; j < WIDTH*HEIGHT; j++)
 | 
							for (j = 0; j < WIDTH*HEIGHT; j++)
 | 
				
			||||||
			if (data[j] != j) {
 | 
								igt_assert_f(data[j] == j,
 | 
				
			||||||
				fprintf(stderr, "mismatch at %i: %i\n",
 | 
									     "mismatch at %i: %i\n",
 | 
				
			||||||
						j, data[j]);
 | 
									     j, data[j]);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		munmap(data, sizeof(linear));
 | 
							munmap(data, sizeof(linear));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Leak both bos so that we use all of system mem! */
 | 
							/* Leak both bos so that we use all of system mem! */
 | 
				
			||||||
 | 
				
			|||||||
@ -129,11 +129,9 @@ main(int argc, char **argv)
 | 
				
			|||||||
		data = gem_mmap(fd, bo_handles[idx_arr[i]],
 | 
							data = gem_mmap(fd, bo_handles[idx_arr[i]],
 | 
				
			||||||
				LINEAR_DWORDS, PROT_READ | PROT_WRITE);
 | 
									LINEAR_DWORDS, PROT_READ | PROT_WRITE);
 | 
				
			||||||
		for (j = 0; j < WIDTH*HEIGHT; j++)
 | 
							for (j = 0; j < WIDTH*HEIGHT; j++)
 | 
				
			||||||
			if (data[j] != j) {
 | 
								igt_assert_f(data[j] == j,
 | 
				
			||||||
				fprintf(stderr, "mismatch at %i: %i\n",
 | 
									     "mismatch at %i: %i\n",
 | 
				
			||||||
						j, data[j]);
 | 
									     j, data[j]);
 | 
				
			||||||
				igt_fail(1);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		munmap(data, LINEAR_DWORDS);
 | 
							munmap(data, LINEAR_DWORDS);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -60,10 +60,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	fd = drm_open_any();
 | 
						fd = drm_open_any();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
						bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
	if (!bufmgr) {
 | 
						igt_assert(bufmgr);
 | 
				
			||||||
		fprintf(stderr, "failed to init libdrm\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/* don't enable buffer reuse!! */
 | 
						/* don't enable buffer reuse!! */
 | 
				
			||||||
	//drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
						//drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -74,10 +71,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	 * enough */
 | 
						 * enough */
 | 
				
			||||||
	for (i = 0; i < 1000; i++) {
 | 
						for (i = 0; i < 1000; i++) {
 | 
				
			||||||
		load_bo = drm_intel_bo_alloc(bufmgr, "target bo", 1024*4096, 4096);
 | 
							load_bo = drm_intel_bo_alloc(bufmgr, "target bo", 1024*4096, 4096);
 | 
				
			||||||
		if (!load_bo) {
 | 
							igt_assert(load_bo);
 | 
				
			||||||
			fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
			igt_fail(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		BEGIN_BATCH(8);
 | 
							BEGIN_BATCH(8);
 | 
				
			||||||
		OUT_BATCH(XY_SRC_COPY_BLT_CMD |
 | 
							OUT_BATCH(XY_SRC_COPY_BLT_CMD |
 | 
				
			||||||
 | 
				
			|||||||
@ -182,11 +182,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	intel_batchbuffer_flush(batch);
 | 
						intel_batchbuffer_flush(batch);
 | 
				
			||||||
	igt_assert(gem_bo_busy(fd, dst2->handle) == true);
 | 
						igt_assert(gem_bo_busy(fd, dst2->handle) == true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = gem_bo_wait_timeout(fd, dst2->handle, &timeout);
 | 
						igt_assert(gem_bo_wait_timeout(fd, dst2->handle, &timeout) == 0);
 | 
				
			||||||
	if (ret) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "Timed wait failed %s\n", strerror(errno));
 | 
					 | 
				
			||||||
		igt_fail(1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	igt_assert(gem_bo_busy(fd, dst2->handle) == false);
 | 
						igt_assert(gem_bo_busy(fd, dst2->handle) == false);
 | 
				
			||||||
	igt_assert(timeout != 0);
 | 
						igt_assert(timeout != 0);
 | 
				
			||||||
	if (timeout ==  (ENOUGH_WORK_IN_SECONDS * NSEC_PER_SEC))
 | 
						if (timeout ==  (ENOUGH_WORK_IN_SECONDS * NSEC_PER_SEC))
 | 
				
			||||||
 | 
				
			|||||||
@ -67,10 +67,7 @@ static void run_test(int ring)
 | 
				
			|||||||
		gem_require_ring(fd, I915_EXEC_BLT);
 | 
							gem_require_ring(fd, I915_EXEC_BLT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	target_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
						target_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
 | 
				
			||||||
	if (!target_bo) {
 | 
						igt_assert(target_bo);
 | 
				
			||||||
		fprintf(stderr, "failed to alloc target buffer\n");
 | 
					 | 
				
			||||||
		igt_fail(-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Need to map first so that we can do our own domain mangement with
 | 
						/* Need to map first so that we can do our own domain mangement with
 | 
				
			||||||
	 * set_domain. */
 | 
						 * set_domain. */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user