Can we set different Viewports and Scissors for Multiview without Geometry Shader?

Hi there,
Recently, I have already seen the sample in Github, but I have a question about Multiview.
In the sample, we only set one Viewport and Scissor for each view in Multiview. And in Viewport Array sample, we set different Viewports and Scissors for each view with Geometry Shader broadcasting.
Can we use the mixed operation to set different Viewports and Scissors for each view in Multiview but without Geometry Shader? Because, there’s no need for us to use Geometry Shader, of which we wanna save the high cost.
Similar with so Metal’s Multiview can do.

Dear @FrozenHeart

With multiview, the driver essentially replicates your draw across multiple views, but it doesn’t give you separate viewport/scissor state per view. The spec ties viewport and scissor to the pipeline state, not to the view index, so you can’t set them differently unless you use a geometry shader (or another mechanism that can route primitives per view).

In practice, that means:

  • Multiview is great for rendering the same scene into multiple eye buffers efficiently.
  • If you need different scissors or viewports per view, you’ll have to fall back to multiple passes or use a geometry shader to direct primitives.
  • There isn’t a way to “just set” different scissors per view in the fixed pipeline.

Think of multiview as a replication tool; it saves you from issuing multiple draws, but it doesn’t replace per‑view customization. Generally I use multiview with a custom shader as this reduces the amount of draw calls and load on the GPU for a little more work.

GL;HC;

~p3nGu1nZz

Dear @p3nGu1nZz ,
Thanks for your reply. So sad to hear that Multiview can only shared the same Viewport and Scissor. But we found a new Ext, named

VK_QCOM_multiview_per_view_viewports

, which is provided by Qualcomm. We will try it and hope it work out for us.