@carbonenginejs/runtime-resource 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/format/effect/effectPermutationGraph.js +257 -0
- package/dist/format/effect/effectPermutationGraph.js.map +1 -0
- package/dist/format/effect/effectReflectionPackage.js +636 -0
- package/dist/format/effect/effectReflectionPackage.js.map +1 -0
- package/dist/format/effect/sha256.js +114 -0
- package/dist/format/effect/sha256.js.map +1 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
- package/dist/formats/dxbc/core/DxbcReader.js +266 -0
- package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
- package/dist/formats/dxbc/core/container.js +169 -0
- package/dist/formats/dxbc/core/container.js.map +1 -0
- package/dist/formats/dxbc/core/decoder.js +789 -0
- package/dist/formats/dxbc/core/decoder.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -0
- package/dist/formats/dxbc/core/errors.js.map +1 -0
- package/dist/formats/dxbc/core/helpers.js +220 -0
- package/dist/formats/dxbc/core/helpers.js.map +1 -0
- package/dist/formats/dxbc/core/opcodes.js +45 -0
- package/dist/formats/dxbc/core/opcodes.js.map +1 -0
- package/dist/formats/dxbc/core/program.js +91 -0
- package/dist/formats/dxbc/core/program.js.map +1 -0
- package/dist/formats/dxbc/core/signature.js +172 -0
- package/dist/formats/dxbc/core/signature.js.map +1 -0
- package/dist/formats/dxbc/index.js +2 -0
- package/dist/formats/dxbc/index.js.map +1 -0
- package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
- package/dist/formats/hlsl/core/HlslReader.js +266 -0
- package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
- package/dist/formats/hlsl/core/analysis.js +51 -0
- package/dist/formats/hlsl/core/analysis.js.map +1 -0
- package/dist/formats/hlsl/core/helpers.js +270 -0
- package/dist/formats/hlsl/core/helpers.js.map +1 -0
- package/dist/formats/hlsl/core/json.js +284 -0
- package/dist/formats/hlsl/core/json.js.map +1 -0
- package/dist/formats/hlsl/core/metadata.js +327 -0
- package/dist/formats/hlsl/core/metadata.js.map +1 -0
- package/dist/formats/hlsl/core/portableReflection.js +848 -0
- package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
- package/dist/formats/hlsl/core/render-states.js +280 -0
- package/dist/formats/hlsl/core/render-states.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
- package/dist/formats/hlsl/index.js +2 -0
- package/dist/formats/hlsl/index.js.map +1 -0
- package/dist/formats/hlsl/portable.js +2 -0
- package/dist/formats/hlsl/portable.js.map +1 -0
- package/dist/formats/index.js +4 -0
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/webgl/CjsWebglFormat.js +221 -0
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
- package/dist/formats/webgl/core/cewg/binary.js +101 -0
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
- package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
- package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +789 -0
- package/dist/formats/webgl/core/effectPackage.js.map +1 -0
- package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
- package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgl/core/errors.js +27 -0
- package/dist/formats/webgl/core/errors.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +306 -0
- package/dist/formats/webgl/core/helpers.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -0
- package/dist/formats/webgl/index.js.map +1 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
- package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgpu/core/errors.js +20 -0
- package/dist/formats/webgpu/core/errors.js.map +1 -0
- package/dist/formats/webgpu/core/helpers.js +448 -0
- package/dist/formats/webgpu/core/helpers.js.map +1 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffect.js +300 -0
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
- package/dist/formats/webgpu/core/packageMetadata.js +8 -0
- package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
- package/dist/formats/webgpu/core/schema.js +4 -0
- package/dist/formats/webgpu/core/schema.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
- package/dist/formats/webgpu/index.js +2 -0
- package/dist/formats/webgpu/index.js.map +1 -0
- package/dist/resource/shader/Tr2EffectRes.js +159 -150
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +23 -28
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialMesh.js +21 -27
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialRes.js +24 -29
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
- package/dist/resource/shader/Tr2Shader.js +45 -39
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +30 -32
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +113 -78
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +17 -23
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +23 -29
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +44 -40
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +82 -86
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +55 -61
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +49 -45
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +25 -30
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +30 -32
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +21 -26
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/docs/formats/README.md +4 -0
- package/docs/formats/provenance.md +11 -3
- package/docs/reference/classes/formats.md +440 -0
- package/format-notices/dxbc/LICENSE +21 -0
- package/format-notices/dxbc/NOTICE +20 -0
- package/format-notices/hlsl/LICENSE +21 -0
- package/format-notices/hlsl/NOTICE +25 -0
- package/format-notices/webgl/LICENSE +21 -0
- package/format-notices/webgl/NOTICE +35 -0
- package/format-notices/webgpu/LICENSE +21 -0
- package/format-notices/webgpu/NOTICE +31 -0
- package/package.json +6 -1
- package/dist/resource/shader/portableValidation.js +0 -461
- package/dist/resource/shader/portableValidation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lowerMergeHistogramsComputeProgram.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js"],"sourcesContent":["import { analyzeRegisterValues } from \"../ir/analyzeRegisterValues.js\";\nimport { buildControlFlow } from \"../ir/buildControlFlow.js\";\nimport { inferValueTypes } from \"../ir/inferValueTypes.js\";\nimport { resolveRegisterFlow } from \"../ir/resolveRegisterFlow.js\";\nimport { lowerBindingLayout } from \"./lowerBindingLayout.js\";\nimport { requireRefactoringAllowed } from \"./precisionControls.js\";\nimport { buildSelectionPlans } from \"./selectionPlans.js\";\n\nconst COMPONENTS = Object.freeze([ \"x\", \"y\", \"z\", \"w\" ]);\nconst DECLARATION_OPCODES = Object.freeze([\n \"dcl_global_flags\",\n \"dcl_constant_buffer\",\n \"dcl_resource\",\n \"dcl_unordered_access_view_typed\",\n \"dcl_input\",\n \"dcl_input\",\n \"dcl_temps\",\n \"dcl_thread_group_shared_memory_structured\",\n \"dcl_thread_group\"\n]);\nconst BODY_OPCODES = Object.freeze([\n \"ult\", \"if\", \"store_structured\", \"endif\", \"sync\", \"ftou\", \"imul\", \"ult\",\n \"if\", \"ishl\", \"ushr\", \"mov\", \"mov\", \"mov\", \"loop\", \"uge\", \"breakc\",\n \"ushr\", \"iadd\", \"ld\", \"atomic_iadd\", \"iadd\", \"atomic_iadd\", \"iadd\",\n \"atomic_iadd\", \"atomic_iadd\", \"iadd\", \"endloop\", \"endif\", \"sync\", \"if\",\n \"ld_structured\", \"atomic_iadd\", \"endif\", \"ret\"\n]);\nconst BODY_OPERANDS_SM50 = Object.freeze([\n \"temp:0:x:0::none:default:uniform:4 | input_thread_id_in_group::x:::none:default:uniform:4 | immediate32::::#64:none:default:uniform:1\",\n \"temp:0:x:0::none:default:uniform:4\",\n \"thread_group_shared_memory:0:x:0::none:default:uniform:4 | input_thread_id_in_group::x:::none:default:uniform:4 | immediate32::::#0:none:default:uniform:1 | immediate32::::#0:none:default:uniform:1\",\n \"\",\n \"\",\n \"temp:0:yz:0::none:default:uniform:4 | constant_buffer:0:xxyx:0,0::none:default:uniform:4\",\n \"null:::::none:default:uniform:0 | temp:0:y:0::none:default:uniform:4 | temp:0:z:0::none:default:uniform:4 | temp:0:y:0::none:default:uniform:4\",\n \"temp:0:y:0::none:default:uniform:4 | input_thread_id::x:::none:default:uniform:4 | temp:0:y:0::none:default:uniform:4\",\n \"temp:0:y:0::none:default:uniform:4\",\n \"temp:0:y:0::none:default:uniform:4 | input_thread_id::x:::none:default:uniform:4 | immediate32::::#6:none:default:uniform:1\",\n \"temp:0:y:0::none:default:uniform:4 | temp:0:y:0::none:default:uniform:4 | immediate32::::#2:none:default:uniform:1\",\n \"temp:1:z:1::none:default:uniform:4 | immediate32::::#0:none:default:uniform:1\",\n \"temp:2:yw:2::none:default:uniform:4 | immediate32::::#0,#0,#0,#0:none:default:uniform:4\",\n \"temp:2:x:2::none:default:uniform:4 | immediate32::::#0:none:default:uniform:1\",\n \"\",\n \"temp:0:z:0::none:default:uniform:4 | temp:2:x:2::none:default:uniform:4 | immediate32::::#64:none:default:uniform:1\",\n \"temp:0:z:0::none:default:uniform:4\",\n \"temp:0:z:0::none:default:uniform:4 | temp:2:x:2::none:default:uniform:4 | immediate32::::#2:none:default:uniform:1\",\n \"temp:0:z:0::none:default:uniform:4 | temp:0:z:0::none:default:uniform:4 | temp:0:y:0::none:default:uniform:4\",\n \"temp:3:xyzw:3::none:default:uniform:4 | temp:0:zzzz:0::none:default:uniform:4 | resource:0:xyzw:0::none:default:uniform:4\",\n \"thread_group_shared_memory:0::0::none:default:uniform:0 | temp:2:xyxx:2::none:default:uniform:4 | temp:3:x:3::none:default:uniform:4\",\n \"temp:1:xy:1::none:default:uniform:4 | temp:2:xxxx:2::none:default:uniform:4 | immediate32::::#1,#3,#0,#0:none:default:uniform:4\",\n \"thread_group_shared_memory:0::0::none:default:uniform:0 | temp:1:xzxx:1::none:default:uniform:4 | temp:3:y:3::none:default:uniform:4\",\n \"temp:2:z:2::none:default:uniform:4 | temp:2:x:2::none:default:uniform:4 | immediate32::::#2:none:default:uniform:1\",\n \"thread_group_shared_memory:0::0::none:default:uniform:0 | temp:2:zwzz:2::none:default:uniform:4 | temp:3:z:3::none:default:uniform:4\",\n \"thread_group_shared_memory:0::0::none:default:uniform:0 | temp:1:yzyy:1::none:default:uniform:4 | temp:3:w:3::none:default:uniform:4\",\n \"temp:2:x:2::none:default:uniform:4 | temp:2:x:2::none:default:uniform:4 | immediate32::::#4:none:default:uniform:1\",\n \"\",\n \"\",\n \"\",\n \"temp:0:x:0::none:default:uniform:4\",\n \"temp:0:x:0::none:default:uniform:4 | input_thread_id_in_group::x:::none:default:uniform:4 | immediate32::::#0:none:default:uniform:1 | thread_group_shared_memory:0:xxxx:0::none:default:uniform:4\",\n \"uav:0::0::none:default:uniform:0 | input_thread_id_in_group::x:::none:default:uniform:4 | temp:0:x:0::none:default:uniform:4\",\n \"\",\n \"\"\n]);\nconst BODY_OPERANDS_SM51 = Object.freeze(BODY_OPERANDS_SM50.map((signature) =>\n signature\n .replaceAll(\"constant_buffer:0:xxyx:0,0::\", \"constant_buffer:0:xxyx:0,0,0::\")\n .replaceAll(\"resource:0:xyzw:0::\", \"resource:0:xyzw:0,0::\")\n .replaceAll(\"uav:0::0::\", \"uav:0::0,0::\")));\nconst BLOCK_BEFORE = new Set([\n \"loop\", \"else\", \"endif\", \"endloop\", \"case\", \"default\", \"endswitch\"\n]);\nconst BLOCK_AFTER = new Set([\n \"if\", \"loop\", \"switch\", \"break\", \"breakc\", \"continue\", \"continuec\",\n \"ret\", \"retc\", \"discard\", \"else\", \"endif\", \"endloop\", \"case\", \"default\",\n \"endswitch\"\n]);\nconst CONTROL_KIND = Object.freeze({\n if: \"selection\",\n endif: \"selection\",\n loop: \"loop\",\n breakc: \"loop\",\n endloop: \"loop\",\n ret: \"termination\"\n});\nconst SELECTION_STARTS = Object.freeze([ 1, 8, 30 ]);\n\nfunction clonePlain(value)\n{\n if (Array.isArray(value)) return value.map(clonePlain);\n if (value && typeof value === \"object\")\n {\n return Object.fromEntries(\n Object.entries(value).map(([ key, entry ]) => [ key, clonePlain(entry) ])\n );\n }\n return value;\n}\n\nfunction deepFreeze(value)\n{\n if (!value || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n for (const entry of Object.values(value)) deepFreeze(entry);\n return Object.freeze(value);\n}\n\nfunction buildBlocks(instructions)\n{\n const leaders = new Set([ 0 ]);\n for (let index = 0; index < instructions.length; index += 1)\n {\n if (BLOCK_BEFORE.has(instructions[index].opcodeName)) leaders.add(index);\n if (BLOCK_AFTER.has(instructions[index].opcodeName)\n && index + 1 < instructions.length)\n {\n leaders.add(index + 1);\n }\n }\n const starts = Array.from(leaders).sort((left, right) => left - right);\n return starts.map((start, blockIndex) =>\n {\n const end = (starts[blockIndex + 1] ?? instructions.length) - 1;\n const last = instructions[end];\n return {\n kind: \"basic-block\",\n id: `block${blockIndex}`,\n index: blockIndex,\n startInstruction: start,\n endInstruction: end,\n startDxbcOffset: instructions[start].dxbcOffset,\n endDxbcOffset: last.dxbcOffset,\n instructionIndices: Array.from(\n { length: end - start + 1 },\n (_, offset) => start + offset\n ),\n terminator: CONTROL_KIND[last.opcodeName] ? last.opcodeName : null\n };\n });\n}\n\nfunction analysisSnapshot(program)\n{\n return {\n blocks: program.blocks,\n controlFlow: program.controlFlow,\n values: program.values,\n instructions: program.instructions.map((instruction) => ({\n dataflow: instruction.dataflow,\n typeInfo: instruction.typeInfo\n }))\n };\n}\n\nfunction validateAnalysisMetadata(program)\n{\n const rebuilt = clonePlain(program);\n rebuilt.instructions = rebuilt.instructions.map((instruction) =>\n {\n delete instruction.dataflow;\n delete instruction.typeInfo;\n return instruction;\n });\n rebuilt.blocks = buildBlocks(rebuilt.instructions);\n delete rebuilt.controlFlow;\n delete rebuilt.values;\n buildControlFlow(rebuilt);\n analyzeRegisterValues(rebuilt);\n resolveRegisterFlow(rebuilt);\n inferValueTypes(rebuilt);\n if (JSON.stringify(analysisSnapshot(program))\n !== JSON.stringify(analysisSnapshot(rebuilt)))\n {\n throw new Error(\n \"WGSL merge-histograms compute CFG, SSA, or type metadata is inconsistent\"\n );\n }\n}\n\nfunction operandSignature(operand)\n{\n const index = (operand.indices || [])\n .map((entry) => entry.values?.join(\":\") || \"?\")\n .join(\",\");\n const immediate = (operand.immediateValues || [])\n .map((entry) => `#${entry.uint32 >>> 0}`)\n .join(\",\");\n return [\n operand.typeName,\n Number.isInteger(operand.registerIndex) ? operand.registerIndex : \"\",\n operand.mask || operand.swizzle || operand.selected || \"\",\n index,\n immediate,\n operand.modifierName ?? \"none\",\n operand.minPrecisionName ?? \"default\",\n operand.nonUniform === true ? \"nonuniform\" : \"uniform\",\n Number.isInteger(operand.componentCount) ? operand.componentCount : \"\"\n ].join(\":\");\n}\n\nfunction instructionOperandSignature(instruction)\n{\n return (instruction.operands || []).map(operandSignature).join(\" | \");\n}\n\nfunction validateCanonicalIndices(operand, context)\n{\n for (const [ index, entry ] of (operand.indices || []).entries())\n {\n if (entry?.dimension !== index\n || entry.representation !== 0\n || entry.relative !== null\n || entry.values?.length !== 1\n || !Number.isInteger(entry.values[0])\n || entry.values[0] < 0)\n {\n throw new Error(\n `WGSL merge-histograms ${context} has non-canonical index metadata`\n );\n }\n }\n}\n\nfunction validateCommonOperand(operand, context)\n{\n if (!operand\n || (operand.modifierName ?? \"none\") !== \"none\"\n || (operand.minPrecisionName ?? \"default\") !== \"default\"\n || operand.nonUniform === true)\n {\n throw new Error(\n `WGSL merge-histograms ${context} has unsupported operand modifiers`\n );\n }\n validateCanonicalIndices(operand, context);\n}\n\nfunction isCanonicalIndex(entry, dimension, value)\n{\n return entry?.dimension === dimension\n && entry.representation === 0\n && entry.relative === null\n && entry.values?.length === 1\n && entry.values[0] === value;\n}\n\nfunction validateSm51Range(data, context)\n{\n const range = data?.bindingRange;\n if (data?.bindingModel !== \"sm5.1-range\"\n || range?.bindingModel !== \"sm5.1-range\"\n || range.rangeId !== 0\n || range.lowerBound !== 0\n || range.upperBound !== 0\n || range.unbounded !== false\n || range.registerCount !== 1\n || range.registerSpace !== 0)\n {\n throw new Error(\n `WGSL merge-histograms ${context} requires one finite SM5.1 range`\n );\n }\n}\n\nfunction validateDeclarationOperand(operand, {\n componentCount, indices, registerIndex, selector, typeName\n}, context)\n{\n validateCommonOperand(operand, context);\n if (operand.typeName !== typeName\n || operand.registerIndex !== registerIndex\n || operand.componentCount !== componentCount\n || (operand.mask || operand.swizzle || operand.selected || \"\") !== selector\n || operand.indices?.length !== indices.length\n || indices.some((value, index) => operand.indices[index].values[0] !== value)\n || operand.immediateValues?.length\n || (operand.resourceReference !== undefined\n && operand.resourceReference !== null))\n {\n throw new Error(`WGSL merge-histograms ${context} is malformed`);\n }\n}\n\nfunction validateBuiltinDeclaration(\n declaration,\n typeName,\n operandType,\n componentCount,\n selector\n)\n{\n const operand = declaration.operands?.[0];\n validateDeclarationOperand(operand, {\n typeName,\n registerIndex: null,\n componentCount,\n selector,\n indices: []\n }, `${typeName} declaration`);\n if (declaration.data?.registerIndex !== null\n || declaration.data.operandType !== operandType\n || declaration.data.operandTypeName !== typeName\n || declaration.operands.length !== 1)\n {\n throw new Error(\n `WGSL merge-histograms compute requires exactly ${typeName}.${selector}`\n );\n }\n}\n\n/**\n * Whether declarations select the isolated merge-histograms compute profile.\n * Once selected, all detailed validation errors are final.\n *\n * @param {object} program CJS shader IR program.\n * @returns {boolean} True for the merge-histograms declaration family.\n */\nexport function isMergeHistogramsComputeProfile(program)\n{\n return program?.stage === \"compute\"\n && program.declarations?.length === DECLARATION_OPCODES.length\n && program.instructions?.length === BODY_OPCODES.length\n && DECLARATION_OPCODES.every((opcodeName, index) =>\n program.declarations[index]?.opcodeName === opcodeName);\n}\n\nfunction validateTypedUintBuffer(declaration, kind, minor)\n{\n const label = kind === \"resource\" ? \"t0\" : \"u0\";\n const data = declaration.data;\n if (data?.registerIndex !== 0\n || data.resourceDimension !== 1\n || data.resourceDimensionName !== \"buffer\"\n || (kind === \"resource\" && data.sampleCount !== 0)\n || (kind === \"uav\" && data.globallyCoherent !== false)\n || data.returnType?.returnTypes?.length !== 4\n || data.returnType.returnTypes.some((entry) => entry !== 4)\n || data.returnType?.returnTypeNames?.length !== 4\n || data.returnType.returnTypeNames.some((entry) => entry !== \"uint\")\n || declaration.operands?.length !== 1)\n {\n throw new Error(\n `WGSL merge-histograms compute requires typed uint Buffer ${label}`\n );\n }\n validateDeclarationOperand(declaration.operands[0], minor === 0\n ? {\n typeName: kind,\n registerIndex: 0,\n componentCount: 0,\n selector: \"\",\n indices: [ 0 ]\n }\n : {\n typeName: kind,\n registerIndex: 0,\n componentCount: 4,\n selector: \"xyzw\",\n indices: [ 0, 0, 0 ]\n },\n `${label} declaration`);\n}\n\nfunction validateDeclarations(program)\n{\n const minor = program?.shaderModel?.minor;\n if (program?.format !== \"CJS_SHADER_IR\"\n || program.formatVersion !== 1\n || program.stage !== \"compute\"\n || program.shaderModel?.major !== 5\n || ![ 0, 1 ].includes(minor))\n {\n throw new TypeError(\n \"WGSL merge-histograms compute profile requires CJS SM5.0 or finite-range SM5.1 compute IR\"\n );\n }\n if (!isMergeHistogramsComputeProfile(program))\n {\n throw new Error(\n \"WGSL merge-histograms compute declaration shape is not supported\"\n );\n }\n if (program.declarations.some((declaration) => declaration.tailTokens?.length))\n {\n throw new Error(\n \"WGSL merge-histograms compute declarations must not contain trailing payload words\"\n );\n }\n if ((program.signatures?.input || []).length\n || (program.signatures?.output || []).length\n || (program.signatures?.patch || []).length\n || program.immediateConstantBuffer\n || program.constTables)\n {\n throw new Error(\n \"WGSL merge-histograms compute profile does not support signatures or constant tables\"\n );\n }\n requireRefactoringAllowed(program, \"merge-histograms compute\");\n\n const [\n global, constants, input, output, localId, dispatchId, temps, shared, group\n ] = program.declarations;\n if (global.data?.globalFlags !== (1 << 11)\n || global.data.refactoringAllowed !== true\n || global.operands?.length)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires only the refactoring-allowed global flag\"\n );\n }\n if (constants.data?.accessPattern !== \"immediate_indexed\"\n || constants.data.registerIndex !== 0\n || constants.data.sizeInVec4 !== 1\n || constants.operands?.length !== 1)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires immediate one-row cb0\"\n );\n }\n validateDeclarationOperand(constants.operands[0], minor === 0\n ? {\n typeName: \"constant_buffer\",\n registerIndex: 0,\n componentCount: 4,\n selector: \"xyzw\",\n indices: [ 0, 1 ]\n }\n : {\n typeName: \"constant_buffer\",\n registerIndex: 0,\n componentCount: 4,\n selector: \"xyzw\",\n indices: [ 0, 0, 0 ]\n },\n \"cb0 declaration\");\n validateTypedUintBuffer(input, \"resource\", minor);\n validateTypedUintBuffer(output, \"uav\", minor);\n validateBuiltinDeclaration(\n localId, \"input_thread_id_in_group\", 34, 4, \"x\"\n );\n validateBuiltinDeclaration(dispatchId, \"input_thread_id\", 32, 4, \"x\");\n if (temps.data?.tempCount !== 4 || temps.operands?.length)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires exactly four temps\"\n );\n }\n if (shared.data?.registerIndex !== 0\n || shared.data.structureStride !== 4\n || shared.data.structureCount !== 64\n || shared.operands?.length !== 1)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires g0 with stride 4 and 64 records\"\n );\n }\n validateDeclarationOperand(shared.operands[0], {\n typeName: \"thread_group_shared_memory\",\n registerIndex: 0,\n componentCount: 0,\n selector: \"\",\n indices: [ 0 ]\n }, \"g0 declaration\");\n if (group.data?.threadGroupX !== 256\n || group.data?.threadGroupY !== 1\n || group.data?.threadGroupZ !== 1\n || group.operands?.length)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires dcl_thread_group 256,1,1\"\n );\n }\n if (minor === 1)\n {\n validateSm51Range(constants.data, \"cb0 declaration\");\n validateSm51Range(input.data, \"t0 declaration\");\n validateSm51Range(output.data, \"u0 declaration\");\n }\n else if (constants.data.bindingModel || constants.data.bindingRange\n || input.data.bindingModel || input.data.bindingRange\n || output.data.bindingModel || output.data.bindingRange)\n {\n throw new Error(\n \"WGSL merge-histograms SM5.0 declarations must use register bindings\"\n );\n }\n}\n\nfunction validateBodyReference(program, instruction, operand, operandIndex)\n{\n const context = `instruction ${instruction.index} operand ${operandIndex}`;\n validateCommonOperand(operand, context);\n if (program.shaderModel.minor === 0)\n {\n if (operand.resourceReference !== undefined\n && operand.resourceReference !== null)\n {\n throw new Error(\n `WGSL merge-histograms ${context} has unexpected SM5.1 reference metadata`\n );\n }\n return;\n }\n const reference = operand.resourceReference;\n if ([ \"resource\", \"uav\" ].includes(operand.typeName))\n {\n if (reference?.bindingModel !== \"sm5.1-range\"\n || reference.rangeId !== 0\n || reference.nonUniform !== false\n || !isCanonicalIndex(reference.absoluteIndex, 1, 0)\n || reference.bufferIndex !== null\n || reference.vectorOffset !== null)\n {\n throw new Error(\n `WGSL merge-histograms ${context} has an invalid SM5.1 resource reference`\n );\n }\n }\n else if (operand.typeName === \"constant_buffer\")\n {\n if (reference?.bindingModel !== \"sm5.1-range\"\n || reference.rangeId !== 0\n || reference.nonUniform !== false\n || reference.absoluteIndex !== null\n || !isCanonicalIndex(reference.bufferIndex, 1, 0)\n || !isCanonicalIndex(reference.vectorOffset, 2, 0))\n {\n throw new Error(\n `WGSL merge-histograms ${context} has an invalid SM5.1 constant-buffer reference`\n );\n }\n }\n else if (reference !== undefined && reference !== null)\n {\n throw new Error(\n `WGSL merge-histograms ${context} has unexpected resource reference metadata`\n );\n }\n}\n\nfunction validExtensions(program, instruction)\n{\n const extensions = instruction.extensions || [];\n if (program.shaderModel.minor === 1) return extensions.length === 0;\n if (instruction.index === 19 && instruction.opcodeName === \"ld\")\n {\n return extensions.length === 2\n && extensions[0]?.token === 2147483714\n && extensions[0].type === 2\n && extensions[0].typeName === \"resource_dimension\"\n && extensions[0].resourceDimension === 1\n && extensions[0].resourceDimensionName === \"buffer\"\n && extensions[0].structureStride === 0\n && extensions[1]?.token === 1118467\n && extensions[1].type === 3\n && extensions[1].typeName === \"resource_return_type\"\n && extensions[1].resourceReturnTypes?.length === 4\n && extensions[1].resourceReturnTypes.every((entry) => entry === 4);\n }\n return extensions.length === 0;\n}\n\nfunction validateBody(program)\n{\n const expectedOperands = program.shaderModel.minor === 0\n ? BODY_OPERANDS_SM50\n : BODY_OPERANDS_SM51;\n if (program.instructions?.length !== BODY_OPCODES.length\n || BODY_OPCODES.some((opcodeName, index) =>\n program.instructions[index]?.opcodeName !== opcodeName\n || instructionOperandSignature(program.instructions[index])\n !== expectedOperands[index]))\n {\n throw new Error(\n \"WGSL merge-histograms compute requires the exact bounded body opcode, operand, and modifier sequence\"\n );\n }\n for (const [ index, instruction ] of program.instructions.entries())\n {\n const conditional = [ \"if\", \"breakc\" ].includes(instruction.opcodeName);\n const sync = instruction.opcodeName === \"sync\";\n if (instruction.index !== index\n || (index > 0\n && instruction.dxbcOffset\n <= program.instructions[index - 1].dxbcOffset)\n || instruction.controlKind !== (CONTROL_KIND[instruction.opcodeName] || null)\n || instruction.testBoolean !== (conditional ? \"nonzero\" : null)\n || instruction.saturate\n || instruction.preciseMask !== \"\"\n || instruction.tailTokens?.length\n || !validExtensions(program, instruction)\n || (sync\n ? instruction.syncFlags !== 3\n || JSON.stringify(instruction.syncFlagNames)\n !== JSON.stringify([\n \"threads_in_group\",\n \"thread_group_shared_memory\"\n ])\n : instruction.syncFlags !== undefined\n || instruction.syncFlagNames !== undefined))\n {\n throw new Error(\n `WGSL merge-histograms instruction ${index} has inconsistent envelope metadata`\n );\n }\n for (const [ operandIndex, operand ] of instruction.operands.entries())\n {\n validateBodyReference(\n program, instruction, operand, operandIndex\n );\n }\n }\n\n validateAnalysisMetadata(program);\n const originCounts = program.values.reduce((counts, value) =>\n {\n counts[value.origin] = (counts[value.origin] || 0) + 1;\n return counts;\n }, {});\n if (program.blocks.length !== 14\n || program.controlFlow.edgeCount !== 17\n || program.controlFlow.regions.length !== 4\n || program.controlFlow.unreachableBlockIds.length\n || program.values.length !== 30\n || originCounts[\"instruction-write\"] !== 17\n || originCounts[\"undefined-register\"] !== 8\n || originCounts[\"program-input\"] !== 2\n || originCounts[\"control-flow-merge\"] !== 3)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires the canonical CFG and register-value shape\"\n );\n }\n const values = new Map(program.values.map((value) => [ value.id, value ]));\n for (const instruction of program.instructions)\n {\n for (const ref of instruction.dataflow.reads.flatMap((read) => read.refs))\n {\n if (values.get(ref.valueId)?.origin === \"undefined-register\")\n {\n throw new Error(\n `WGSL merge-histograms instruction ${instruction.index} reads undefined register data`\n );\n }\n }\n }\n\n const plans = buildSelectionPlans(program, \"merge-histograms compute\");\n if (plans.size !== 4\n || SELECTION_STARTS.some((start) =>\n plans.get(start)?.kind !== \"selection\"\n || plans.get(start).hasElse\n || plans.get(start).merges.length))\n {\n throw new Error(\n \"WGSL merge-histograms compute requires the canonical no-else selections\"\n );\n }\n const loop = plans.get(14);\n const merge = loop?.merges?.[0];\n if (loop?.kind !== \"loop\"\n || loop.preheaderBlockId !== \"block4\"\n || loop.backedgeBlockId !== \"block8\"\n || loop.merges.length !== 1\n || merge.id !== \"value68\"\n || merge.type !== \"u32\"\n || merge.entryIncoming?.blockId !== \"block4\"\n || merge.entryIncoming?.valueId !== \"value25\"\n || merge.entryIncoming?.component !== \"x\"\n || merge.backedgeIncoming?.valueId !== \"value44\"\n || merge.backedgeIncoming?.component !== \"x\"\n || loop.exitMerges.length\n || loop.exitEdges.size)\n {\n throw new Error(\n \"WGSL merge-histograms compute requires the canonical four-bin loop merge\"\n );\n }\n}\n\nfunction validateBindings(bindings)\n{\n const expected = [\n [\n \"uniform-buffer\", \"cb0\", \"var<uniform>\", \"array<vec4<f32>, 1>\",\n null, \"uniform\", 16\n ],\n [\n \"sampled-resource\", \"t0\", \"var<storage, read>\", \"array<u32>\",\n null, \"read-only-storage\", 4\n ],\n [\n \"storage-resource\", \"u0\", \"var<storage, read_write>\",\n \"array<atomic<u32>>\", null, \"storage\", 4\n ]\n ];\n if (bindings.length !== expected.length\n || expected.some(([\n kind, symbol, declaration, type, stride, bufferType, minSize\n ], index) =>\n {\n const binding = bindings[index];\n return binding?.resourceKind !== kind\n || binding.registerIndex !== 0\n || binding.registerSpace !== 0\n || binding.generatedSymbol !== symbol\n || binding.declaration !== declaration\n || binding.type !== type\n || (binding.structureStride ?? null) !== stride\n || binding.buffer?.type !== bufferType\n || binding.buffer.hasDynamicOffset !== false\n || binding.buffer.minBindingSize !== minSize;\n }))\n {\n throw new Error(\n \"WGSL merge-histograms compute binding layout does not match cb0/t0/u0\"\n );\n }\n}\n\nfunction uintLiteral(value)\n{\n return `0x${(value >>> 0).toString(16).padStart(8, \"0\")}u`;\n}\n\nfunction selectedComponents(operand, active)\n{\n if (operand.selected) return active.map(() => operand.selected);\n const swizzle = operand.swizzle || \"xyzw\";\n return active.map((component) => swizzle[COMPONENTS.indexOf(component)]);\n}\n\nfunction rawSourcePart(operand, component)\n{\n if (operand.typeName === \"temp\")\n {\n return `r${operand.registerIndex}.${component}`;\n }\n if (operand.typeName === \"input_thread_id_in_group\")\n {\n return `local_invocation_id.${component}`;\n }\n if (operand.typeName === \"input_thread_id\")\n {\n return `dispatch_thread_id.${component}`;\n }\n if (operand.typeName === \"immediate32\")\n {\n const sourceIndex = operand.immediateValues.length === 1\n ? 0\n : COMPONENTS.indexOf(component);\n return uintLiteral(operand.immediateValues[sourceIndex].uint32);\n }\n throw new Error(\n `WGSL merge-histograms source ${operand.typeName || \"unknown\"} cannot be materialized`\n );\n}\n\nfunction sourceParts(instruction, operandIndex, active)\n{\n const operand = instruction.operands[operandIndex];\n return selectedComponents(operand, active)\n .map((component) => rawSourcePart(operand, component));\n}\n\nfunction assignment(instruction, destination, parts)\n{\n const type = destination.mask.length === 1\n ? \"u32\"\n : `vec${destination.mask.length}<u32>`;\n return {\n kind: \"value-assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `r${destination.registerIndex}.${destination.mask}`,\n type,\n expression: {\n code: parts.length === 1 ? parts[0] : `${type}(${parts.join(\", \")})`,\n type\n }\n };\n}\n\nfunction aluStatement(instruction, constants)\n{\n if (instruction.opcodeName === \"ftou\")\n {\n const destination = instruction.operands[0];\n const active = Array.from(destination.mask);\n const components = selectedComponents(instruction.operands[1], active);\n return assignment(\n instruction,\n destination,\n components.map((component) =>\n `u32(${constants.generatedSymbol}[0u].${component})`)\n );\n }\n if (instruction.opcodeName === \"imul\")\n {\n const destination = instruction.operands[1];\n const active = Array.from(destination.mask);\n const left = sourceParts(instruction, 2, active);\n const right = sourceParts(instruction, 3, active);\n return assignment(\n instruction,\n destination,\n left.map((part, index) => `(${part} * ${right[index]})`)\n );\n }\n\n const destination = instruction.operands[0];\n const active = Array.from(destination.mask);\n const source = (operandIndex) =>\n sourceParts(instruction, operandIndex, active);\n let parts;\n switch (instruction.opcodeName)\n {\n case \"mov\":\n parts = source(1);\n break;\n case \"iadd\":\n case \"ishl\":\n case \"ushr\":\n {\n const left = source(1);\n const right = source(2);\n const operator = {\n iadd: \"+\",\n ishl: \"<<\",\n ushr: \">>\"\n }[instruction.opcodeName];\n parts = left.map((part, index) =>\n `(${part} ${operator} ${right[index]})`);\n break;\n }\n case \"ult\":\n case \"uge\":\n {\n const left = source(1);\n const right = source(2);\n const operator = instruction.opcodeName === \"ult\" ? \"<\" : \">=\";\n parts = left.map((part, index) =>\n `select(0u, 0xffffffffu, ${part} ${operator} ${right[index]})`);\n break;\n }\n default:\n throw new Error(\n `WGSL merge-histograms ${instruction.opcodeName} instruction ${instruction.index} is not an ALU operation`\n );\n }\n return assignment(instruction, destination, parts);\n}\n\nfunction typedLoad(instruction, input)\n{\n const destination = instruction.operands[0];\n const active = Array.from(destination.mask);\n const address = sourceParts(instruction, 1, [ \"x\" ])[0];\n const length = `arrayLength(&${input.generatedSymbol})`;\n const recordCount = `(${length} / 4u)`;\n const safeRecord = `min(${address}, max(${recordCount}, 1u) - 1u)`;\n const safeBase = `((${safeRecord}) * 4u)`;\n const parts = active.map((_, word) =>\n `select(0u, ${input.generatedSymbol}[min(${safeBase} + ${word}u, ${length} - 1u)], ${address} < ${recordCount})`);\n return assignment(instruction, destination, parts);\n}\n\nfunction sharedStore(instruction)\n{\n const address = sourceParts(instruction, 1, [ \"x\" ])[0];\n const byteOffset = sourceParts(instruction, 2, [ \"x\" ])[0];\n const value = sourceParts(instruction, 3, [ \"x\" ])[0];\n const index = `(${address} + (${byteOffset} >> 2u))`;\n return {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: {\n code: `atomicStore(&g0[${index}], ${value})`,\n type: \"void\"\n }\n };\n}\n\nfunction sharedLoad(instruction)\n{\n const address = sourceParts(instruction, 1, [ \"x\" ])[0];\n const byteOffset = sourceParts(instruction, 2, [ \"x\" ])[0];\n const index = `(${address} + (${byteOffset} >> 2u))`;\n return assignment(instruction, instruction.operands[0], [\n `atomicLoad(&g0[${index}])`\n ]);\n}\n\nfunction atomicAddStatement(instruction, output)\n{\n const target = instruction.operands[0];\n const value = sourceParts(instruction, 2, [ \"x\" ])[0];\n if (target.typeName === \"thread_group_shared_memory\")\n {\n const address = sourceParts(instruction, 1, [ \"x\", \"y\" ]);\n const index = `(${address[0]} + (${address[1]} >> 2u))`;\n return [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: {\n code: `atomicAdd(&g0[${index}], ${value})`,\n type: \"void\"\n }\n } ];\n }\n const address = sourceParts(instruction, 1, [ \"x\" ])[0];\n return [ {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: {\n code: `${address} < arrayLength(&${output.generatedSymbol})`,\n type: \"bool\"\n },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: {\n code: `atomicAdd(&${output.generatedSymbol}[${address}], ${value})`,\n type: \"void\"\n }\n } ]\n } ];\n}\n\nfunction binding(bindings, resourceKind)\n{\n return bindings.find((entry) =>\n entry.resourceKind === resourceKind\n && entry.registerIndex === 0\n && entry.registerSpace === 0);\n}\n\nfunction lowerBody(program, bindings)\n{\n const constants = binding(bindings, \"uniform-buffer\");\n const input = binding(bindings, \"sampled-resource\");\n const output = binding(bindings, \"storage-resource\");\n const statements = Array.from({ length: 4 }, (_, registerIndex) => ({\n kind: \"var\",\n name: `r${registerIndex}`,\n type: \"vec4<u32>\",\n expression: { code: \"vec4<u32>(0u)\", type: \"vec4<u32>\" }\n }));\n const stack = [];\n let current = statements;\n for (const instruction of program.instructions)\n {\n if (instruction.opcodeName === \"if\")\n {\n const condition = sourceParts(instruction, 0, [ \"x\" ])[0];\n const statement = {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${condition} != 0u`, type: \"bool\" },\n statements: []\n };\n current.push(statement);\n stack.push({ kind: \"if\", parent: current });\n current = statement.statements;\n continue;\n }\n if (instruction.opcodeName === \"endif\")\n {\n const owner = stack.pop();\n if (owner?.kind !== \"if\")\n {\n throw new Error(\n `WGSL merge-histograms endif ${instruction.index} has malformed nesting`\n );\n }\n current = owner.parent;\n continue;\n }\n if (instruction.opcodeName === \"loop\")\n {\n const statement = {\n kind: \"loop\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n statements: []\n };\n current.push(statement);\n stack.push({ kind: \"loop\", parent: current });\n current = statement.statements;\n continue;\n }\n if (instruction.opcodeName === \"endloop\")\n {\n const owner = stack.pop();\n if (owner?.kind !== \"loop\")\n {\n throw new Error(\n `WGSL merge-histograms endloop ${instruction.index} has malformed nesting`\n );\n }\n current = owner.parent;\n continue;\n }\n if (instruction.opcodeName === \"breakc\")\n {\n const condition = sourceParts(instruction, 0, [ \"x\" ])[0];\n current.push({\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${condition} != 0u`, type: \"bool\" },\n statements: [ {\n kind: \"break\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset\n } ]\n });\n continue;\n }\n if (instruction.opcodeName === \"sync\")\n {\n current.push({\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: \"workgroupBarrier()\", type: \"void\" }\n });\n continue;\n }\n if (instruction.opcodeName === \"ret\")\n {\n if (stack.length)\n {\n throw new Error(\n `WGSL merge-histograms return ${instruction.index} has malformed nesting`\n );\n }\n current.push({\n kind: \"return\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset\n });\n continue;\n }\n if (instruction.opcodeName === \"store_structured\")\n {\n current.push(sharedStore(instruction));\n }\n else if (instruction.opcodeName === \"ld_structured\")\n {\n current.push(sharedLoad(instruction));\n }\n else if (instruction.opcodeName === \"ld\")\n {\n current.push(typedLoad(instruction, input));\n }\n else if (instruction.opcodeName === \"atomic_iadd\")\n {\n current.push(...atomicAddStatement(instruction, output));\n }\n else\n {\n current.push(aluStatement(instruction, constants));\n }\n }\n if (stack.length)\n {\n throw new Error(\n \"WGSL merge-histograms compute contains unterminated control-flow nesting\"\n );\n }\n return statements;\n}\n\n/**\n * Lowers the exact SM5.0/finite-SM5.1 merge-histograms compute profile.\n *\n * The source accumulates 64 uint bins per workgroup. Typed Buffer t0 is\n * flattened to DWORD storage; one uint4 load is admitted only when all four\n * physical words exist. Missing input records therefore read as zero. The\n * final typed uint UAV atomic is guarded by arrayLength so an OOB destination\n * drops the write. TGSM indices are fixed by the exact 0..63 source loop.\n *\n * @param {object} program CJS shader IR program.\n * @param {object} [options] Exact compute-only binding options.\n * @returns {object} Typed compute program.\n */\nexport function lowerMergeHistogramsComputeProgram(program, options = {})\n{\n validateDeclarations(program);\n validateBody(program);\n const bindings = lowerBindingLayout(\n program,\n options.bindingPlan ?? null\n );\n validateBindings(bindings);\n return deepFreeze({\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"compute\",\n entryPoint: \"main\",\n builtinInputs: [\n {\n builtin: \"local_invocation_id\",\n name: \"local_invocation_id\",\n type: \"vec3<u32>\"\n },\n {\n builtin: \"global_invocation_id\",\n name: \"dispatch_thread_id\",\n type: \"vec3<u32>\"\n }\n ],\n threadGroupSize: [ 256, 1, 1 ],\n workgroupVariables: [\n { name: \"g0\", elementType: \"atomic<u32>\", elementCount: 64 }\n ],\n bindings,\n statements: lowerBody(program, bindings)\n });\n}\n"],"names":["COMPONENTS","Object","freeze","DECLARATION_OPCODES","BODY_OPCODES","BODY_OPERANDS_SM50","BODY_OPERANDS_SM51","map","signature","replaceAll","BLOCK_BEFORE","Set","BLOCK_AFTER","CONTROL_KIND","if","endif","loop","breakc","endloop","ret","SELECTION_STARTS","clonePlain","value","Array","isArray","fromEntries","entries","key","entry","deepFreeze","isFrozen","values","buildBlocks","instructions","leaders","index","length","has","opcodeName","add","starts","from","sort","left","right","start","blockIndex","end","last","kind","id","startInstruction","endInstruction","startDxbcOffset","dxbcOffset","endDxbcOffset","instructionIndices","_","offset","terminator","analysisSnapshot","program","blocks","controlFlow","instruction","dataflow","typeInfo","validateAnalysisMetadata","rebuilt","buildControlFlow","analyzeRegisterValues","resolveRegisterFlow","inferValueTypes","JSON","stringify","Error","operandSignature","operand","indices","join","immediate","immediateValues","uint32","typeName","Number","isInteger","registerIndex","mask","swizzle","selected","modifierName","minPrecisionName","nonUniform","componentCount","instructionOperandSignature","operands","validateCanonicalIndices","context","dimension","representation","relative","validateCommonOperand","isCanonicalIndex","validateSm51Range","data","range","bindingRange","bindingModel","rangeId","lowerBound","upperBound","unbounded","registerCount","registerSpace","validateDeclarationOperand","selector","some","resourceReference","undefined","validateBuiltinDeclaration","declaration","operandType","operandTypeName","isMergeHistogramsComputeProfile","stage","declarations","every","validateTypedUintBuffer","minor","label","resourceDimension","resourceDimensionName","sampleCount","globallyCoherent","returnType","returnTypes","returnTypeNames","validateDeclarations","shaderModel","format","formatVersion","major","includes","TypeError","tailTokens","signatures","input","output","patch","immediateConstantBuffer","constTables","requireRefactoringAllowed","global","constants","localId","dispatchId","temps","shared","group","globalFlags","refactoringAllowed","accessPattern","sizeInVec4","tempCount","structureStride","structureCount","threadGroupX","threadGroupY","threadGroupZ","validateBodyReference","operandIndex","reference","absoluteIndex","bufferIndex","vectorOffset","validExtensions","extensions","token","type","resourceReturnTypes","validateBody","expectedOperands","conditional","sync","controlKind","testBoolean","saturate","preciseMask","syncFlags","syncFlagNames","originCounts","reduce","counts","origin","edgeCount","regions","unreachableBlockIds","Map","ref","reads","flatMap","read","refs","get","valueId","plans","buildSelectionPlans","size","hasElse","merges","merge","preheaderBlockId","backedgeBlockId","entryIncoming","blockId","component","backedgeIncoming","exitMerges","exitEdges","validateBindings","bindings","expected","symbol","stride","bufferType","minSize","binding","resourceKind","generatedSymbol","buffer","hasDynamicOffset","minBindingSize","uintLiteral","toString","padStart","selectedComponents","active","indexOf","rawSourcePart","sourceIndex","sourceParts","assignment","destination","parts","instructionIndex","name","expression","code","aluStatement","components","part","source","operator","iadd","ishl","ushr","typedLoad","address","recordCount","safeRecord","safeBase","word","sharedStore","byteOffset","sharedLoad","atomicAddStatement","target","condition","statements","find","lowerBody","stack","current","statement","push","parent","owner","pop","lowerMergeHistogramsComputeProgram","options","lowerBindingLayout","bindingPlan","entryPoint","builtinInputs","builtin","threadGroupSize","workgroupVariables","elementType","elementCount"],"mappings":"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"}
|