Hi Andreas,

On Sun, 25 Aug 2019 at 21:11, Andreas Bergmeier <abergme...@gmx.net> wrote:
> For a few weeks now I am working on implementing Vulkan for VideoCore 6 AKA 
> 42 (using V3D/DRM). Don't hold you breath ;)

Great! I can't say much about the specifics of VideoCore hardware, but
at least for some of the common parts ...

> Currently I am trying to understand what is necessary or how to interact with 
> V3D. So I am looking at TransformFeedback because it interacts with quite a 
> few other parts of the pipeline and still seems less mangled into the big 
> logic than other features. So I am comparing how Gallium (V3D) is handling TF 
> in the state tracker VS how Vulkan (Intel) is handling the Extension.
>
> The following is what I so far think I gathered:
> 1. GV3D is handling TransformFeedback directly with other bound parts of the 
> pipeline (e.g. `emit_state` in _v3dx_emit.c_). It seems to look into the 
> shader and associated TF specs. It seems to use "streamout targets", although 
> I do not yet understand what these are really. Then it passes all the 
> offsets, indices and finally resources to V3D.

'Stream out' is basically just what DirectX calls its version of
transform feedback. The idea is the same: capturing output from
vertex/geometry stages.

> 2. The Vulkan Extension only knows about CounterBuffers and iterates over 
> these. Intel seems to call TF -> XF? and subsequently the buffers XFB. Have 
> also not yet gathered what is the difference and what all the gazillion 
> acronyms mean.

'XFB' is the most widely-used acronym for transform, as 'trans' or
'cross' can abbreviate to X. 'TF' is not as widely used as XFB.

> So far my idea would be to implement TF similar to Intel and instead of 
> iterating over "streamout targets" I would iterate XFBs.

So these would really be the same thing. A streamout target is where
the VC4 writes its output stream of data from these shading stages,
and a counter buffer is where Vulkan writes the output stream of data
from these shading stages.

> The problem with this approach is, that it will not be easy to mimic 
> `cl_emit` calls similar to Gallium.
> My question now is which parts of V3D emits have a dependency.
>
> I would assume that I can move TRANSFORM_FEEDBACK_SPECS and 
> TRANSFORM_FEEDBACK_ENABLE to cmd state flush in Vulkan.
> `vkCmdBeginTransformFeedbackEXT` shoudl then only need 
> TRANSFORM_FEEDBACK_BUFFER and TRANSFORM_FEEDBACK_OUTPUT_ADDRESS.
>
> Sorry if this is a bit confusing - I am really just trying to figure this out 
> one by one.

This is getting more into the specifics of how you've structured the
driver, as well as hardware specifics, but it sounds about right to
me.

Cheers,
Daniel
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to