Vixen
02b45cc4
csharp
public static class BindingPlan

Assigns every binding its (set, binding) pair.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

The single place the descriptor layout is decided. Both emitters and ReflectionBuilder read this plan, so the SPIR-V decorations, the GLSL layout(set = …, binding = …) and the numbers the engine binds against cannot disagree — there is nothing to keep in step. The differential oracle checks that, but the plan is what makes it true.

The same reasoning as ShaderLayout, one level up: two copies of a rule is how two backends come to differ.

Methods (5)

  • public static ImmutableArray<PlannedBinding> Of(IrShader shader)

    The plan for one shader: sets in ascending index order, and within each set the uniform block first, then textures, then samplers, each in declaration order.

  • public static IrBinding? MaterialIndex(IrShader shader)

    The [MaterialIndex] a shader declared, or null.

  • public static string BlockName(IrShader shader, ResourceSet set)

    The name of a set's uniform block.

  • public static ImmutableArray<IrBinding> PushConstants(IrShader shader)

    The shader's push constants, in declaration order — the members of its one push-constant block.

  • public static string PushConstantBlockName(IrShader shader)

    The name of a shader's push-constant block.

Used by (9)

  • ComposeInterfaceTestsVixen.Raven.Tests
  • DescriptorSetTestsVixen.Raven.Tests
  • GlslEmitterVixen.Raven
  • LowererVixen.Raven
  • MaterialRecordTestsVixen.Raven.Tests
  • PushConstantTestsVixen.Raven.Tests
  • ReflectionBuilderVixen.Raven
  • SharedBindingTestsVixen.Raven.Tests
  • SpirvEmitterVixen.Raven