summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2013-10-08 18:15:21 -0700
committerBen Widawsky <benjamin.widawsky@intel.com>2013-11-06 09:34:35 -0800
commit6fa529ecd6055db55bc83a56cc83025b3f7dcfd3 (patch)
treeabb86eb729f7514d73109335fd482512e6e26c91 /tests
parent3e2937bd99a2c01fb303f68c7384fc8addd337ba (diff)
tests/bdw: gem_cpu_reloc
support gen8 style blits Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_cpu_reloc.c62
1 files changed, 46 insertions, 16 deletions
diff --git a/tests/gem_cpu_reloc.c b/tests/gem_cpu_reloc.c
index 1284c0d4..2ab1d09e 100644
--- a/tests/gem_cpu_reloc.c
+++ b/tests/gem_cpu_reloc.c
@@ -76,6 +76,8 @@ static void copy(int fd, uint32_t batch, uint32_t src, uint32_t dst)
gem_reloc[0].presumed_offset = 0;
gem_reloc[1].offset = 7 * sizeof(uint32_t);
+ if (intel_get_drm_devid(fd) >= 8)
+ gem_reloc[1].offset += sizeof(uint32_t);
gem_reloc[1].delta = 0;
gem_reloc[1].target_handle = src;
gem_reloc[1].read_domains = I915_GEM_DOMAIN_RENDER;
@@ -114,23 +116,46 @@ static void exec(int fd, uint32_t handle)
do_or_die(drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf));
}
+uint32_t gen6_batch[] = {
+ (XY_SRC_COPY_BLT_CMD | 6 |
+ XY_SRC_COPY_BLT_WRITE_ALPHA |
+ XY_SRC_COPY_BLT_WRITE_RGB),
+ (3 << 24 | /* 32 bits */
+ 0xcc << 16 | /* copy ROP */
+ 4096),
+ 0 << 16 | 0, /* dst x1, y1 */
+ 1 << 16 | 2,
+ 0, /* dst relocation */
+ 0 << 16 | 0, /* src x1, y1 */
+ 4096,
+ 0, /* src relocation */
+ MI_BATCH_BUFFER_END,
+};
+
+uint32_t gen8_batch[] = {
+ (XY_SRC_COPY_BLT_CMD | 8 |
+ XY_SRC_COPY_BLT_WRITE_ALPHA |
+ XY_SRC_COPY_BLT_WRITE_RGB),
+ (3 << 24 | /* 32 bits */
+ 0xcc << 16 | /* copy ROP */
+ 4096),
+ 0 << 16 | 0, /* dst x1, y1 */
+ 1 << 16 | 2,
+ 0, /* dst relocation */
+ 0, /* FIXME */
+ 0 << 16 | 0, /* src x1, y1 */
+ 4096,
+ 0, /* src relocation */
+ 0, /* FIXME */
+ MI_BATCH_BUFFER_END,
+};
+
+uint32_t *batch = gen6_batch;
+uint32_t batch_size = sizeof(gen6_batch);
+
int main(int argc, char **argv)
{
- const uint32_t batch[] = {
- (XY_SRC_COPY_BLT_CMD |
- XY_SRC_COPY_BLT_WRITE_ALPHA |
- XY_SRC_COPY_BLT_WRITE_RGB),
- (3 << 24 | /* 32 bits */
- 0xcc << 16 | /* copy ROP */
- 4096),
- 0 << 16 | 0, /* dst x1, y1 */
- 1 << 16 | 2,
- 0, /* dst relocation */
- 0 << 16 | 0, /* src x1, y1 */
- 4096,
- 0, /* src relocation */
- MI_BATCH_BUFFER_END,
- };
+
const uint32_t hang[] = {-1, -1, -1, -1};
const uint32_t end[] = {MI_BATCH_BUFFER_END, 0};
uint64_t aper_size;
@@ -145,6 +170,11 @@ int main(int argc, char **argv)
if (intel_gen(noop) >= 6)
use_blt = I915_EXEC_BLT;
+ if (intel_gen(noop) >= 8) {
+ batch = gen8_batch;
+ batch_size += 2 * 4;
+ }
+
aper_size = gem_mappable_aperture_size();
if (intel_get_total_ram_mb() < aper_size / (1024*1024) * 2) {
fprintf(stderr, "not enough mem to run test\n");
@@ -166,7 +196,7 @@ int main(int argc, char **argv)
uint32_t bad;
handles[i] = gem_create(fd, 4096);
- gem_write(fd, handles[i], 0, batch, sizeof(batch));
+ gem_write(fd, handles[i], 0, batch, batch_size);
bad = gem_create(fd, 4096);
gem_write(fd, bad, 0, hang, sizeof(hang));