[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