diff options
author | Eric Anholt <[email protected]> | 2020-05-08 12:28:08 -0700 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-05-12 16:30:57 +0000 |
commit | 064f395a890158ea5502f685ef6c22e504e3f0df (patch) | |
tree | 01f1ec43339990bc9c5a869163b76d1ec95cf094 /src/gallium | |
parent | b2c23b1e48f043edee1a6aaa3c132c13edba032e (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.h | 1 |
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, \ |