<div dir="ltr">Hi Julian et. al,<br><div class="gmail_extra"><br><div class="gmail_quote">On 28 July 2017 at 17:53, Julien Valentin <span dir="ltr"><<a href="mailto:julienvalentin51@gmail.com" target="_blank">julienvalentin51@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I pushed a new osg branch at git for Indirect Draw feature<br>
<a href="https://github.com/openscenegraph/OpenSceneGraph/tree/MultiDrawIndirect" rel="noreferrer" target="_blank">https://github.com/<wbr>openscenegraph/OpenSceneGraph/<wbr>tree/MultiDrawIndirect</a><br></blockquote><div><br></div><div><br></div><div>Now that this branch is merged with master, it should be OK for us to delete the branch. Julian, do you have any further revisions planned?</div><div><br></div><div>FYI, I made some build fixes for compiling the OSG without the automatic ref_ptr<> -> C pointer conversion enabled, so these would need merging with the MultiDrawIndirect branch if you want to keep it around.</div><div><br></div><div>I also did some testing of the osgsimpleMDI example and found the --classic code path that uses multiple DrawElementsUInt in place of a single DefaultIndirectCommandDrawElements and was surprised at how the performance was with the non MultiDrawIndirect code path, However, looking at the way this example works I spotted that a DrawElemenetsUInt was being used for each separate quad which is about the worst way to implement things. To provide a proper comparison I added a --single code path that creates a single DrawElementsUInt primitive set and this produced the expected performance.</div><div><br></div><div>The performance I get on my iCore7 + Geforce GTX 760 was:</div><div><br></div><div> osgsimpleMDI [ uses MultiDrawElementsIndirectUShort : draw dispatch 0.11ms, draw GPU 0.94ms]</div><div><br><div> osgsimpleMDI --classic [ uses multiple DrawElementsUShort : draw dispatch 2.3ms, draw GPU 0.44ms]</div><div><br><div> osgsimpleMDI --single [ uses single DrawElementsUShort : draw dispatch 0.11ms, draw GPU 0.22ms]</div><div><br></div></div><div>So for this test MDI is lightweight on draw dispatch but heavy on the GPU, multiple DrawElementsUInt is super heavy on draw dispatch but modest on GPU, but the winner is single DrawElementsUInt with lightweight draw dispatch and on the GPU (move than 4 times faster than MDI.)</div><div><br></div><div>Different drivers and hardware will give different values but for this particular usage case using old style DrawElementsUInt will likely be the best.</div><div><br></div><div>Robert.<br></div><div><br></div></div><div><br></div><div><br></div></div></div></div>