Vixen
02b45cc4
csharp
public static class IrCapabilities

Works out which target features a lowered module actually needs.

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

Remarks

Collected from the IR rather than from the symbols, and that is the point: by the time lowering is done, a branch behind a false [Permutation] is gone and an unbound compose implementation was never pulled in. A variant that does not reach the double maths does not require Float64, so the host is not asked for a feature this build has no use for.

Reported per shader as well as per module, because an engine gates a pipeline: whether one shader needs a feature says nothing about another in the same module.

Methods (2)

  • public static IReadOnlyCollection<string> Of(IrModule module)

    Everything the whole module requires.

  • public static IReadOnlyCollection<string> Of(IrShader shader)

    What one shader requires — the granularity a pipeline is gated at.

Used by (5)

  • CapabilityTestsVixen.Raven.Tests
  • CompileDriverVixen.Raven.Cli
  • Int64TestsVixen.Raven.Tests
  • ReflectionBuilderVixen.Raven
  • StorageImageTestsVixen.Raven.Tests