diff options
author | Nicolai Hähnle <[email protected]> | 2019-04-01 15:44:39 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2019-05-13 17:07:23 +0200 |
commit | d814c21b1bea0396c735d65b363a8f2c6324c7d8 (patch) | |
tree | 9fc16e31d42e34c8b039c348ffa436821f47f403 /src/mapi/table.c | |
parent | 8a951c3d2f89f7d070ffb47e5db4351fd4c43401 (diff) |
radeonsi: overhaul the vertex fetch fixup mechanism
The overall goal is to support unaligned loads from vertex buffers
natively on SI.
In the unaligned case, we fall back to the general case implementation in
ac_build_opencoded_load_format. Since this function is fully general,
we will also use it going forward for cases requiring fully manual format
conversions of dwords anyway.
This requires a different encoding of the fix_fetch array, which will now
contain the entire format information if a fixup is required.
Having to check the alignment of vertex buffers is awkward. To keep the
impact on the fast path minimal, the si_context will keep track of which
vertex buffers are (not) at least dword-aligned, while the
si_vertex_elements will note which vertex buffers have some (at most dword)
alignment requirement. Vertex buffers should be dword-aligned most of the
time, which allows a fast early-out in almost all cases.
Add the radeonsi_vs_fetch_always_opencode configuration variable for
testing purposes. Note that it can only be used reliably on LLVM >= 9,
because support for byte and short load is required.
v2:
- add a missing check to si_bind_vertex_elements
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/mapi/table.c')
0 files changed, 0 insertions, 0 deletions