[Libre-soc-dev] 3D MESA Driver

Jacob Lifshay programmerjake at gmail.com
Mon Aug 10 16:59:06 BST 2020


On Mon, Aug 10, 2020, 08:29 Hendrik Boom <hendrik at topoi.pooq.com> wrote:

> I suppose it will still be possible to divide the screen into tiles, and
> have a separate C(G)PU do the graphics in each tile -- for further
> parallellism.  This would likely be accomplished entirely in software.
>

This is the plan.

>
> Would this involve expensive data transfer between CPU's, which we are
> trying to avoid by merging the CPU with the GPU?
>

It will, to some extent. That's inherent in trying to parallelize software.
The plan for Kazan is to run the vertex shaders (+geometry+tessellation) in
parallel chunks where each output triangle then gets added to the input
queues for each tile they overlap. Then, each time an input queue is big
enough or when the queues are flushed, then the tiles are drawn in
parallel, where each triangle in the tile's queue is drawn in sequence,
clipped to the tile's boundary (to prevent needing synchronization for each
drawn pixel with adjacent tiles -- this also means atomic ops aren't needed
for each pixel). My random guess for the tile size is 64x64, with the tile
being split into 4x2 blocks allowing VL to be 8. The size can be further
expanded or shrunk as needed.

Jacob


More information about the Libre-soc-dev mailing list