Skip to content

Question about "Vertex shader runs once per vertex (broadcast to all views)" in multiview docs #8

Description

@zhywzs

Hi! First, thank you for the excellent multiview documentation and examples — they're some of the clearest I've found on using VK_KHR_multiview in practice.

I have a question about one specific performance claim in the Multiview Rendering docs:

GPU: Vertex shader runs once per vertex (broadcast to all views)

I've been trying to verify this independently, but I can't find other sources (Vulkan spec, GPU vendor docs, GDC talks, etc.) that explicitly state this "broadcast" behavior at the vertex level. Most multiview documentation focuses on the single-pass draw-call reduction and gl_ViewIndex, but rarely discusses whether the vertex shader output is broadcast vs. replayed per view.

I'd really appreciate clarification on the following:

  1. Source / authority: Is this behavior guaranteed by the Vulkan spec (could you point me to the relevant section?), or is it an observed optimization on certain hardware that the doc generalizes? I did find spec language about vertex stages executing "once" in multiview, but I wanted to confirm the "broadcast" framing is canonical.

  2. Hardware limitations: Are there GPU architectures or driver stacks where this does not hold — i.e., where the vertex shader still runs per-view despite multiview being enabled? For instance, older desktop GPUs with partial multiview support.

  3. Enabling conditions: Beyond VK_KHR_multiview / Vulkan 1.1, are there specific feature bits (e.g., multiviewGeometryShader, multiviewTessellationShader) or VkPhysicalDeviceMultiviewProperties limits that gate this optimization? I'm wondering if the "broadcast" behavior is contingent on anything beyond basic multiview support.

  4. Mobile GPUs (tile-based renderers): The doc mentions tile-based renderers benefit "greatly," but does the vertex broadcast behavior work the same way on Mali / Adreno / PowerVR as on desktop IMRs? Or do tile-based architectures handle this differently under the hood (e.g., vertex shading per tile rather than per view)?

This isn't a bug report — the doc is great. I'm just trying to build a more precise mental model of multiview performance across different hardware targets. Thanks for any insight!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions