When a render pass is created without a renderArea, the constructor calls vkCmdSetViewport but never calls vkCmdSetScissor. Since scissor is a dynamic state, Vulkan requires it to be set before any draw command, omitting it violates VUID-vkCmdDraw-None-07832 (here) : "If the bound graphics pipeline state was created with VK_DYNAMIC_STATE_SCISSOR enabled, then vkCmdSetScissor must have been called prior to this drawing command." The OpenGL backend handles this correctly: it stores enabled=false in ScissorState and explicitly calls _disableScissorTest() before every draw in trySetup(). The fix is to emit vkCmdSetScissor(0, 0, outputWidth, outputHeight) in the else branch of the constructor here, mirroring the fallback already present in disableScissor().
Comments 0
No comments.