Skip to main content

Module reflection

Module reflection 

Source
Expand description

The entry point’s metadata, resource records, type annotations and signature parts of an SM6 container, as the records the file stores: the entry point and what its properties state (thread group, geometry, mesh, hull and domain state), its signature elements and their packing, the bound resource ranges of dx.resources with their tags, the field annotations of dx.typeAnnotations, and the rows of an ISG1/OSG1/PSG1 part, each with DXIL’s and D3D’s own numbers. What the numbers mean for a graphics API is the caller’s to decide.

Structs§

Element
One signature element of the entry point: its id (the sigId loadInput and storeOutput name), its first register and column, and its size.
FieldAnnotation
One field of a struct type, as its annotation in dx.typeAnnotations states it.
GeometryState
What a geometry program’s entry point states (the properties’ tag 1), as stored: the primitive it reads (input, a D3D_PRIMITIVE: 1 point, 2 line, 3 triangle, 6 line and 7 triangle with adjacency), how many vertices it emits at most, the streams it writes (a mask), the topology its stream makes (a D3D_PRIMITIVE_TOPOLOGY: 1 point list, 3 line strip, 5 triangle strip) and how many invocations run for a primitive.
HullState
What a hull program’s entry point states about its patch (the properties’ tag 3): the patch-constant function, the control-point counts, the tessellator’s domain, partitioning and output primitive and the largest factor.
MeshState
What a mesh program’s entry point states (the properties’ tag 9) after its thread group, as stored: the most vertices and primitives it writes, the topology of its primitives (1 line, 2 triangle) and the size in bytes of the payload it reads from a task program. A null field is zero.
Range
A bound resource range: class (0 SRV, 1 UAV, 2 constant buffer, 3 sampler), range id, first register, count.
SignatureElement
One element of an ISG1/OSG1/PSG1 part as stored.

Functions§

domain_state
A domain program’s patch state (tag 2): the tessellator domain and the input control point count.
elements
The entry point’s input and output elements, by id.
entry
The entry point’s function value.
fields
Fields of a struct type from dx.typeAnnotations (field tag 6 the name, 3 the constant-buffer offset, 7 the component type). Empty when the module has no annotation for it.
geometry_state
A geometry program’s state.
hull_state
A hull program’s patch state.
library_kind
The shader kind a library’s entry point states (properties tag 8): the numbers of a program’s kind (7 ray generation to 12 callable, 13 mesh).
mesh_state
A mesh program’s state.
num_threads
The entry point’s thread group size (numthreads): the value of the properties’ tag 4 (a mesh program’s, the first field of its state, tag 9). None when the entry point states none (every stage but compute).
patch_elements
A hull or domain program’s patch-constant elements, by id.
ranges
The bound resource ranges of dx.resources (SRVs, UAVs, constant buffers, samplers), each with its variable’s name and the type its variable points to (the resource’s handle type).
signature
The elements of a signature part (ISG1, OSG1 or PSG1): a count and the offset of the first record, then records of 32 bytes (stream, name offset, semantic index, system value, component type, register, mask and read-write mask, minimum precision). A name ends within 256 bytes.