n constant buffers, each with a structurally rich payload — vectors, matrices, an array of a nested `Light` struct, a nested `Material` struct and a scalar array. This is the only workload with a large, deeply-typed shader *parameter interface* (every other workload's interface is a single RWStructuredBuffer), so it is the one stressor for the parameter binding / layout-assignment engine and — with `-reflection-json` (see the spec's reflection_json flag) — the reflection serializer, the layout/reflection path no other workload covers. Scales by breadth = number of parameter blocks the layout engine must place and reflect. Note: layout is computed during compileInner regardless of the flag (so compileInner is the holistic signal); -reflection-json additionally runs the serializer, which is cheap today but tracked here for regression coverage.
bucket: reflection_layout · compile mode: target · flags: -target spirv -emit-spirv-directly · default N: 120
Full sub-counter decomposition of compileInner — named leaf timers plus (self) residuals (a parent's time not covered by a named child, e.g. the autodiff transform in linkAndOptimizeIR (self)). Topmost band traces compileInner; hover a band for its phase.
exact compiled source (N = 120); long files show the first 40 lines, the area around computeMain (±40), and the last 40 lines (gaps elided)
// AUTO-GENERATED by perf-suite/workloads.py — do not edit by hand.
struct Light { float3 pos; float3 color; float intensity; float4x4 shadow; }
struct Material { float4 base; float metal; float rough; float2 uvScale; float3x3 tangent; }
cbuffer Params0 : register(b0)
{
float4 tint0;
float4x4 xform0;
Light lights0[4];
Material mat0;
float weights0[8];
}
cbuffer Params1 : register(b1)
{
float4 tint1;
float4x4 xform1;
Light lights1[4];
Material mat1;
float weights1[8];
}
cbuffer Params2 : register(b2)
{
float4 tint2;
float4x4 xform2;
Light lights2[4];
Material mat2;
float weights2[8];
}
cbuffer Params3 : register(b3)
{
float4 tint3;
float4x4 xform3;
Light lights3[4];
Material mat3;
float weights3[8];
}
cbuffer Params4 : register(b4)
{
float4 tint4;
float4x4 xform4;
// … 889 lines omitted …
Material mat115;
float weights115[8];
}
cbuffer Params116 : register(b116)
{
float4 tint116;
float4x4 xform116;
Light lights116[4];
Material mat116;
float weights116[8];
}
cbuffer Params117 : register(b117)
{
float4 tint117;
float4x4 xform117;
Light lights117[4];
Material mat117;
float weights117[8];
}
cbuffer Params118 : register(b118)
{
float4 tint118;
float4x4 xform118;
Light lights118[4];
Material mat118;
float weights118[8];
}
cbuffer Params119 : register(b119)
{
float4 tint119;
float4x4 xform119;
Light lights119[4];
Material mat119;
float weights119[8];
}
RWStructuredBuffer<float> outBuf;
[shader("compute")]
[numthreads(1,1,1)]
void computeMain()
{
float acc = 0.0;
acc += tint0.x + xform0[0][0] + lights0[0].intensity + mat0.metal + weights0[0];
acc += tint1.x + xform1[0][0] + lights1[0].intensity + mat1.metal + weights1[0];
acc += tint2.x + xform2[0][0] + lights2[0].intensity + mat2.metal + weights2[0];
acc += tint3.x + xform3[0][0] + lights3[0].intensity + mat3.metal + weights3[0];
acc += tint4.x + xform4[0][0] + lights4[0].intensity + mat4.metal + weights4[0];
acc += tint5.x + xform5[0][0] + lights5[0].intensity + mat5.metal + weights5[0];
acc += tint6.x + xform6[0][0] + lights6[0].intensity + mat6.metal + weights6[0];
acc += tint7.x + xform7[0][0] + lights7[0].intensity + mat7.metal + weights7[0];
acc += tint8.x + xform8[0][0] + lights8[0].intensity + mat8.metal + weights8[0];
acc += tint9.x + xform9[0][0] + lights9[0].intensity + mat9.metal + weights9[0];
acc += tint10.x + xform10[0][0] + lights10[0].intensity + mat10.metal + weights10[0];
acc += tint11.x + xform11[0][0] + lights11[0].intensity + mat11.metal + weights11[0];
acc += tint12.x + xform12[0][0] + lights12[0].intensity + mat12.metal + weights12[0];
acc += tint13.x + xform13[0][0] + lights13[0].intensity + mat13.metal + weights13[0];
acc += tint14.x + xform14[0][0] + lights14[0].intensity + mat14.metal + weights14[0];
acc += tint15.x + xform15[0][0] + lights15[0].intensity + mat15.metal + weights15[0];
acc += tint16.x + xform16[0][0] + lights16[0].intensity + mat16.metal + weights16[0];
acc += tint17.x + xform17[0][0] + lights17[0].intensity + mat17.metal + weights17[0];
acc += tint18.x + xform18[0][0] + lights18[0].intensity + mat18.metal + weights18[0];
acc += tint19.x + xform19[0][0] + lights19[0].intensity + mat19.metal + weights19[0];
acc += tint20.x + xform20[0][0] + lights20[0].intensity + mat20.metal + weights20[0];
acc += tint21.x + xform21[0][0] + lights21[0].intensity + mat21.metal + weights21[0];
acc += tint22.x + xform22[0][0] + lights22[0].intensity + mat22.metal + weights22[0];
acc += tint23.x + xform23[0][0] + lights23[0].intensity + mat23.metal + weights23[0];
acc += tint24.x + xform24[0][0] + lights24[0].intensity + mat24.metal + weights24[0];
acc += tint25.x + xform25[0][0] + lights25[0].intensity + mat25.metal + weights25[0];
acc += tint26.x + xform26[0][0] + lights26[0].intensity + mat26.metal + weights26[0];
acc += tint27.x + xform27[0][0] + lights27[0].intensity + mat27.metal + weights27[0];
acc += tint28.x + xform28[0][0] + lights28[0].intensity + mat28.metal + weights28[0];
acc += tint29.x + xform29[0][0] + lights29[0].intensity + mat29.metal + weights29[0];
acc += tint30.x + xform30[0][0] + lights30[0].intensity + mat30.metal + weights30[0];
acc += tint31.x + xform31[0][0] + lights31[0].intensity + mat31.metal + weights31[0];
acc += tint32.x + xform32[0][0] + lights32[0].intensity + mat32.metal + weights32[0];
acc += tint33.x + xform33[0][0] + lights33[0].intensity + mat33.metal + weights33[0];
acc += tint34.x + xform34[0][0] + lights34[0].intensity + mat34.metal + weights34[0];
acc += tint35.x + xform35[0][0] + lights35[0].intensity + mat35.metal + weights35[0];
acc += tint36.x + xform36[0][0] + lights36[0].intensity + mat36.metal + weights36[0];
acc += tint37.x + xform37[0][0] + lights37[0].intensity + mat37.metal + weights37[0];
// … 44 lines omitted …
acc += tint82.x + xform82[0][0] + lights82[0].intensity + mat82.metal + weights82[0];
acc += tint83.x + xform83[0][0] + lights83[0].intensity + mat83.metal + weights83[0];
acc += tint84.x + xform84[0][0] + lights84[0].intensity + mat84.metal + weights84[0];
acc += tint85.x + xform85[0][0] + lights85[0].intensity + mat85.metal + weights85[0];
acc += tint86.x + xform86[0][0] + lights86[0].intensity + mat86.metal + weights86[0];
acc += tint87.x + xform87[0][0] + lights87[0].intensity + mat87.metal + weights87[0];
acc += tint88.x + xform88[0][0] + lights88[0].intensity + mat88.metal + weights88[0];
acc += tint89.x + xform89[0][0] + lights89[0].intensity + mat89.metal + weights89[0];
acc += tint90.x + xform90[0][0] + lights90[0].intensity + mat90.metal + weights90[0];
acc += tint91.x + xform91[0][0] + lights91[0].intensity + mat91.metal + weights91[0];
acc += tint92.x + xform92[0][0] + lights92[0].intensity + mat92.metal + weights92[0];
acc += tint93.x + xform93[0][0] + lights93[0].intensity + mat93.metal + weights93[0];
acc += tint94.x + xform94[0][0] + lights94[0].intensity + mat94.metal + weights94[0];
acc += tint95.x + xform95[0][0] + lights95[0].intensity + mat95.metal + weights95[0];
acc += tint96.x + xform96[0][0] + lights96[0].intensity + mat96.metal + weights96[0];
acc += tint97.x + xform97[0][0] + lights97[0].intensity + mat97.metal + weights97[0];
acc += tint98.x + xform98[0][0] + lights98[0].intensity + mat98.metal + weights98[0];
acc += tint99.x + xform99[0][0] + lights99[0].intensity + mat99.metal + weights99[0];
acc += tint100.x + xform100[0][0] + lights100[0].intensity + mat100.metal + weights100[0];
acc += tint101.x + xform101[0][0] + lights101[0].intensity + mat101.metal + weights101[0];
acc += tint102.x + xform102[0][0] + lights102[0].intensity + mat102.metal + weights102[0];
acc += tint103.x + xform103[0][0] + lights103[0].intensity + mat103.metal + weights103[0];
acc += tint104.x + xform104[0][0] + lights104[0].intensity + mat104.metal + weights104[0];
acc += tint105.x + xform105[0][0] + lights105[0].intensity + mat105.metal + weights105[0];
acc += tint106.x + xform106[0][0] + lights106[0].intensity + mat106.metal + weights106[0];
acc += tint107.x + xform107[0][0] + lights107[0].intensity + mat107.metal + weights107[0];
acc += tint108.x + xform108[0][0] + lights108[0].intensity + mat108.metal + weights108[0];
acc += tint109.x + xform109[0][0] + lights109[0].intensity + mat109.metal + weights109[0];
acc += tint110.x + xform110[0][0] + lights110[0].intensity + mat110.metal + weights110[0];
acc += tint111.x + xform111[0][0] + lights111[0].intensity + mat111.metal + weights111[0];
acc += tint112.x + xform112[0][0] + lights112[0].intensity + mat112.metal + weights112[0];
acc += tint113.x + xform113[0][0] + lights113[0].intensity + mat113.metal + weights113[0];
acc += tint114.x + xform114[0][0] + lights114[0].intensity + mat114.metal + weights114[0];
acc += tint115.x + xform115[0][0] + lights115[0].intensity + mat115.metal + weights115[0];
acc += tint116.x + xform116[0][0] + lights116[0].intensity + mat116.metal + weights116[0];
acc += tint117.x + xform117[0][0] + lights117[0].intensity + mat117.metal + weights117[0];
acc += tint118.x + xform118[0][0] + lights118[0].intensity + mat118.metal + weights118[0];
acc += tint119.x + xform119[0][0] + lights119[0].intensity + mat119.metal + weights119[0];
outBuf[0] = acc;
}