The problem was revealed where on 965, the display list vertex buffer would see:
create -> (CPU, CPU)
set_domain (CPU, CPU) -> (CPU, CPU)
set_comain (CPU, 0) -> (CPU, 0) (no clflush occurred)
execbuf (GPU, 0) -> (CPU+GPU, 0) (still no clflush)
instead of:
create -> (CPU, CPU)
set_domain (CPU, CPU) -> (CPU, CPU)
set_comain (CPU, 0) -> (CPU, CPU)
execbuf (GPU, 0) -> (CPU+GPU, 0) (clflushed)
i915_gem_clflush_object(obj);
}
- obj->write_domain = write_domain;
+ if ((write_domain | flush_domains) != 0)
+ obj->write_domain = write_domain;
obj->read_domains = read_domains;
dev->invalidate_domains |= invalidate_domains;
dev->flush_domains |= flush_domains;
iounmap(reloc_page);
#if WATCH_BUF
- i915_gem_dump_object(obj, 128, __func__, ~0);
+ if (0)
+ i915_gem_dump_object(obj, 128, __func__, ~0);
#endif
return 0;
}