gem_stress: Add extra passes to intial render copyfunc verification

...and allow for cpu maps!
This commit is contained in:
Chris Wilson 2011-06-05 21:34:07 +01:00
parent e7119c2e3b
commit bfa23b47a5

View File

@ -740,27 +740,40 @@ static void check_render_copyfunc(void)
{ {
struct scratch_buf src, dst; struct scratch_buf src, dst;
uint32_t *ptr; uint32_t *ptr;
int i, j; int i, j, pass;
init_buffer(&src, options.scratch_buf_size); init_buffer(&src, options.scratch_buf_size);
init_buffer(&dst, options.scratch_buf_size); init_buffer(&dst, options.scratch_buf_size);
memset(src.data, 0xff, options.scratch_buf_size); for (pass = 0; pass < 16; pass++) {
for (j = 0; j < TILE_SIZE; j++) { int sx = random() % (buf_width(&src)-TILE_SIZE);
ptr = (uint32_t*)((char *)src.data + j * src.stride); int sy = random() % (buf_height(&src)-TILE_SIZE);
for (i = 0; i < TILE_SIZE; i++) int dx = random() % (buf_width(&dst)-TILE_SIZE);
ptr[i] = j * TILE_SIZE + i; int dy = random() % (buf_height(&dst)-TILE_SIZE);
}
render_copyfunc(&src, 0, 0, &dst, 0, 0, 0); if (options.use_cpu_maps)
set_to_cpu_domain(&src, 1);
for (j = 0; j < TILE_SIZE; j++) { memset(src.data, 0xff, options.scratch_buf_size);
ptr = (uint32_t*)((char *)dst.data + j * dst.stride); for (j = 0; j < TILE_SIZE; j++) {
for (i = 0; i < TILE_SIZE; i++) ptr = (uint32_t*)((char *)src.data + sx*4 + (sy+j) * src.stride);
if (ptr[i] != j * TILE_SIZE + i) { for (i = 0; i < TILE_SIZE; i++)
printf("render copyfunc mismatch at (%d, %d): found %d, expected %d\n", ptr[i] = j * TILE_SIZE + i;
i, j, ptr[i], j*TILE_SIZE + i); }
}
render_copyfunc(&src, sx, sy, &dst, dx, dy, 0);
if (options.use_cpu_maps)
set_to_cpu_domain(&dst, 0);
for (j = 0; j < TILE_SIZE; j++) {
ptr = (uint32_t*)((char *)dst.data + dx*4 + (dy+j) * dst.stride);
for (i = 0; i < TILE_SIZE; i++)
if (ptr[i] != j * TILE_SIZE + i) {
printf("render copyfunc mismatch at (%d, %d): found %d, expected %d\n",
i, j, ptr[i], j*TILE_SIZE + i);
}
}
} }
} }