AnsweredAssumed Answered

vkCmdExecuteCommands messes up primitive topology

Question asked by asylum29 on Apr 29, 2020
Latest reply on Jul 8, 2020 by dorisyan

The problem seems to be Vega-specific (reproed on Vega 64, 20.2.2). On the R7 360 as well as on other cards it works correctly.

 

The sample in a nutshell is:

  • record secondary command buffers wrt. the current view frustum
  • subpass 0: execute secondary command buffers (topology: triangle list)
  • subpass 1: render bounding boxes (topology: line list)

With a (probably unnecessary) dependency between the subpasses.

 

Actual"Expected"

 

The code is not a "minimal" sample, as I didn't want to change too many things (I only replaced the models and changed some of the behavior), sorry for that. Build in Release, with the latest Vulkan SDK installed: FOR_AMD_5.zip

 

My first thought was that this is a subpass dependency problem, but didn't find any indication for it. Then I traced the problem to the vkCmdExecuteCommands call (commenting it fixes the box rendering).

 

Also tested with RenderDoc; it shows the box rendering done correctly, but when I step to the next call, it "retroactively" produces the incorrect result.

 

UPDATE

Minimal repro, which clearly shows that the problem is caused by the secondary command buffer: FOR_AMD_6.zip

Outcomes