summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2019-04-01 15:44:39 +0200
committerNicolai Hähnle <[email protected]>2019-05-13 17:07:23 +0200
commitd814c21b1bea0396c735d65b363a8f2c6324c7d8 (patch)
tree9fc16e31d42e34c8b039c348ffa436821f47f403 /src/util
parent8a951c3d2f89f7d070ffb47e5db4351fd4c43401 (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/util')
0 files changed, 0 insertions, 0 deletions