[Mesa-dev] [PATCH 00/11] radeonsi: shader buffer support (atomic counters, ssbo)

eocallaghan at alterapraxis.com eocallaghan at alterapraxis.com
Tue Mar 22 02:47:24 UTC 2016


Hi Nicolai,

Thanks for taking over this work and going the whole nine yards with it!

This series is, Reviewed-by: Edward O'Callaghan 
<eocallaghan at alterapraxis.com>

Thanks again,
Edward.

On 2016-03-22 10:21, Nicolai Hähnle wrote:
> Hi,
> 
> since shader images have laid most of the foundation, here are shader 
> buffers
> now. This is the last extension missing for OpenGL 4.2 (we still need 
> to turn
> on GLSL 4.2, but I think that only involves flipping a bit).
> 
> As with shader images, this extension needs bleeding edge LLVM - this 
> time,
> important patches have not landed upstream yet, and if you want to try 
> this
> code you'll need my LLVM branch at
> https://cgit.freedesktop.org/~nh/llvm/log/?h=images
> 
> (For those following along at home, the necessary LLVM patches for 
> shader
> images have already landed upstream.)
> 
> In principle, there are two alternative implementations for shader 
> buffers:
> using LLVM IR  pointers with LLVM-native load/store instructions 
> directly, or
> using intrinsics that operate on GCN buffer descriptors. This 
> implementation
> uses the second approach. A brief comparison between the two 
> approaches:
> 
> 1. The pointer approach would use FLAT memory instructions on CI+, 
> which
>    operate on 64 bit pointers rather than 128 bit buffer descriptors. 
> This
>    would reduce SGPR memory pressure slightly.
> 
> 2. LLVM understands pointers for alias analysis, so it's possible that 
> it
>    would generate somewhat better code if we were to use pointers in 
> the
>    IR.
> 
> 3. The buffer load/store intructions have built-in bounds checks. 
> Bounds
>    checks are required for an honest implementation of the 
> ARB_robustness
>    extension, which we claim to support.
> 
> The last point makes it obvious that the implementation really needs to 
> use
> buffer intrinsics, but it'd be interesting to know how big the 
> difference
> in code quality is versus something that uses pointers. To get the best 
> of
> both worlds, we should really find a way to teach LLVM's alias analysis
> about what those buffer descriptors mean. For now, this current 
> approach is
> the right way to do it.
> 
> Please review!
> 
> Thanks,
> Nicolai
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev



More information about the mesa-dev mailing list