mojira.dev
MC-308484

`VulkanRenderPass`: scissor is never set when `renderArea` is null

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.

Lolo

RogueLogix

Confirmed

Platform G

Important

Rendering

26.2 Pre-Release 1

26.2 Pre-Release 3

Retrieved