[Mesa-dev] [PATCH 0/3] radeonsi: handle unaligned vertex buffers in hardware
Samuel Pitoiset
samuel.pitoiset at gmail.com
Fri May 3 10:44:06 UTC 2019
On 5/3/19 12:39 PM, Nicolai Hähnle wrote:
> On 30.04.19 21:20, Marek Olšák wrote:
>> Why can we not use tbuffer loads?
>
> tbuffer_load_format has the exact same limitations as
> buffer_load_format. They both use the same hardware path, the only
> difference is that tbuffer_load_format gets the format information
> from the instruction, while buffer_load_format gets it from the
> resource descriptor.
>
> Therefore, in all cases where we *can* use tbuffer_load_format, we may
> as well use buffer_load_format (because we can just initialize the
> descriptor for that vertex input / vertex element correctly).
>
> The benefit that tbuffer_load_format could potentially give us in the
> future is that when multiple vertex elements reference the same vertex
> buffer, we could put a single buffer descriptor into the descriptor
> table (or into USER_SGPRs) instead of having one buffer descriptor for
> every element.
Yes, I did that change for RADV recently, and the SGPRs decrease was
nice. :-)
>
> Cheers,
> Nicolai
>
>
>>
>> Marek
>>
>> On Thu, Apr 25, 2019 at 7:18 AM Nicolai Hähnle <nhaehnle at gmail.com
>> <mailto:nhaehnle at gmail.com>> wrote:
>>
>> Hi all,
>>
>> the following patches contain code to implement all vertex fetches
>> using plain, non-format loads plus explicit shader arithmetic for
>> format conversion.
>>
>> This allows us to remove the software workaround for unaligned
>> vertex
>> buffers on SI, because we can just load individual bytes on the GPU.
>> CI+ will still use short/dword loads even in the unaligned case.
>>
>> The format conversion code was tested by running with
>> radeonsi_vs_fetch_always_opencode=true on both Verde and Vega.
>>
>> Please review!
>>
>> Thanks,
>> Nicolai
>> --
>> src/amd/common/ac_llvm_build.c | 313
>> +++++++++++++++++
>> src/amd/common/ac_llvm_build.h | 30 ++
>> .../drivers/radeonsi/si_debug_options.h | 1 +
>> src/gallium/drivers/radeonsi/si_get.c | 2 +-
>> src/gallium/drivers/radeonsi/si_pipe.h | 1 +
>> src/gallium/drivers/radeonsi/si_shader.c | 249 +++++--------
>> src/gallium/drivers/radeonsi/si_shader.h | 46 +--
>> src/gallium/drivers/radeonsi/si_state.c | 233 +++++++-----
>> src/gallium/drivers/radeonsi/si_state.h | 19 +
>> .../drivers/radeonsi/si_state_shaders.c | 37 +-
>> 10 files changed, 645 insertions(+), 286 deletions(-)
>>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> <mailto:mesa-dev at lists.freedesktop.org>
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>
More information about the mesa-dev
mailing list