aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2020-05-08 12:28:08 -0700
committerMarge Bot <[email protected]>2020-05-12 16:30:57 +0000
commit064f395a890158ea5502f685ef6c22e504e3f0df (patch)
tree01f1ec43339990bc9c5a869163b76d1ec95cf094 /src/gallium
parentb2c23b1e48f043edee1a6aaa3c132c13edba032e (diff)
freedreno: Tell the kernel that all BOs are for writing.
Using non-write flags is pretty dubious -- it means the kernel tracking an array of read-only consumers of the BO and having exclusive consumers wait on each reader's fence. It allows multiple readers through dma-bufs to do work in parallel, but at the cost of kernel CPU time and memory management of the shared array. Other drivers have dropped this distinction since dma-buf sharing is usually producer-consumer, not producer-two-consumers, and the userspace and kernel space tracking is expensive. For us, this lets us drop the flags passed in for relocs and tracked in the ringbuffer reloc lists. The end result of the flags reduction work is drawoverhead uniforms test throughput 2.37195% +/- 0.365579% (n=15) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4967>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_pack.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_pack.h b/src/gallium/drivers/freedreno/a6xx/fd6_pack.h
index ed1c0003849..6b71c10f4e0 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_pack.h
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_pack.h
@@ -58,7 +58,6 @@ struct fd_reg_pair {
if (regs[i].bo) { \
struct fd_reloc reloc = { \
.bo = regs[i].bo, \
- .flags = (regs[i].bo_write ? FD_RELOC_WRITE : 0), \
.offset = regs[i].bo_offset, \
.or = regs[i].value, \
.shift = regs[i].bo_shift, \