[Mesa-dev] [PATCH 06/10] i965: Ignore reloc read/write domains
Chris Wilson
chris at chris-wilson.co.uk
Fri Jul 21 15:36:48 UTC 2017
Since before the kernel supported I915_EXEC_NO_RELOC, long before our
minimum kernel requirement, the kernel unconditionally invalidated all
GPU TLBs before a batch and flushed all GPU caches after a batch. At
that moment, the only use for read/write domain was for activity
tracking, ensuring that future reads waited for the last writer and
future writes waited for all reads. This only requires a single bit in
the execbuf interface which can be supplied via the NO_RELOC interface,
making the use of relocation domains entirely redundant.
Trimming the excess writes into the array allows the compiler to be much
more frugal:
text data bss dec hex filename
8493790 357184 424944 9275918 8d8a0e i965_dri.baseline
8493758 357184 424944 9275886 8d89ee i965_dri.so
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Kenneth Graunke <kenneth at whitecape.org>
Cc: Matt Turner <mattst88 at gmail.com>
Cc: Jason Ekstrand <jason.ekstrand at intel.com>
Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
---
src/mesa/drivers/dri/i965/intel_batchbuffer.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
index fcdd95ed78..6009679c07 100644
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
@@ -798,17 +798,13 @@ brw_emit_reloc(struct intel_batchbuffer *batch, uint32_t batch_offset,
offset64 = target->offset64;
}
- struct drm_i915_gem_relocation_entry *reloc =
- &batch->relocs[batch->reloc_count];
-
- batch->reloc_count++;
-
- reloc->offset = batch_offset;
- reloc->delta = target_offset;
- reloc->target_handle = target->gem_handle;
- reloc->read_domains = read_domains;
- reloc->write_domain = write_domain;
- reloc->presumed_offset = offset64;
+ batch->relocs[batch->reloc_count++] =
+ (struct drm_i915_gem_relocation_entry) {
+ .offset = batch_offset,
+ .delta = target_offset,
+ .target_handle = target->gem_handle,
+ .presumed_offset = offset64,
+ };
/* Using the old buffer offset, write in what the right data would be, in
* case the buffer doesn't move and we can short-circuit the relocation
--
2.13.3
More information about the mesa-dev
mailing list