@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5
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/global/blue/BlueClasses.js +200 -0
- package/dist/global/blue/BlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueClasses.js +79 -0
- package/dist/global/blue/IBlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
- package/dist/global/blue/blue.js +8 -2
- package/dist/global/blue/blue.js.map +1 -1
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/consts/index.js +0 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/renderContext/formats.js +26 -25
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
- package/dist/global/imageio/BitmapDimensions.js.map +1 -0
- package/dist/global/imageio/Cutout.js +28 -0
- package/dist/global/imageio/Cutout.js.map +1 -0
- package/dist/global/imageio/HostBitmap.js +1106 -0
- package/dist/global/imageio/HostBitmap.js.map +1 -0
- package/dist/global/imageio/ImageIOResult.js +99 -0
- package/dist/global/imageio/ImageIOResult.js.map +1 -0
- package/dist/global/imageio/ImageUtility.js +205 -0
- package/dist/global/imageio/ImageUtility.js.map +1 -0
- package/dist/global/imageio/LoadParameters.js +86 -0
- package/dist/global/imageio/LoadParameters.js.map +1 -0
- package/dist/global/imageio/Metadata.js +22 -0
- package/dist/global/imageio/Metadata.js.map +1 -0
- package/dist/global/imageio/index.js +8 -0
- package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
- package/dist/global/index.js +2 -1
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/color.js +1 -1
- package/dist/global/math/color.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +8 -0
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +47 -7
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +37 -0
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/format/CjsByteWriter.js +46 -46
- package/dist/resource/format/CjsByteWriter.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +7 -8
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatStore.js +8 -8
- package/dist/resource/format/CjsFormatStore.js.map +1 -1
- package/dist/resource/format/CjsGeometryFormat.js +114 -0
- package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
- package/dist/resource/format/CjsImageFormat.js +282 -0
- package/dist/resource/format/CjsImageFormat.js.map +1 -0
- package/dist/resource/format/CjsResourceProbe.js +12 -48
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/CjsStringTable.js +37 -37
- package/dist/resource/format/CjsStringTable.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +3 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
- package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +1 -3
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/constants.js +1 -2
- package/dist/resource/formats/cmf/core/constants.js.map +1 -1
- package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
- package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
- package/dist/resource/formats/cmf/core/helpers.js +13 -13
- package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/core/writer.js +24 -24
- package/dist/resource/formats/cmf/core/writer.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +125 -40
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
- package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
- package/dist/resource/formats/dxbc/core/decoder.js +2 -2
- package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +3 -3
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
- package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
- package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -12
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
- package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
- package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +3 -5
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
- package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +3 -5
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +3 -5
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +5 -113
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +40 -15
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +4 -6
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/red/CjsRedFormat.js +22 -28
- package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
- package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
- package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +5 -19
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +3 -5
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +3 -5
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
- package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
- package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
- package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +3 -5
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +35 -35
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -3
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
- package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/resource/imageio/ImageIO.js +142 -0
- package/dist/resource/imageio/ImageIO.js.map +1 -0
- package/dist/resource/imageio/index.js +17 -0
- package/dist/resource/imageio/index.js.map +1 -0
- package/dist/resource/index.js +7 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
- package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
- package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
- package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +100 -68
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +151 -29
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/texture/index.js +7 -0
- package/dist/resource/texture/index.js.map +1 -1
- package/dist/resource/texture/registerTextureResources.js +83 -0
- package/dist/resource/texture/registerTextureResources.js.map +1 -0
- package/dist/resource/texture/solidColorTexture.js +10 -19
- package/dist/resource/texture/solidColorTexture.js.map +1 -1
- package/dist/sof/EveSOF.js +39 -7
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
- package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
- package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
- package/dist/trinity/core/Tr2RenderUtils.js +1 -1
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
- package/dist/trinity/core/Tr2TextureReference.js +114 -0
- package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
- package/dist/trinity/core/procedural/gradientTexture.js +10 -13
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +102 -50
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +242 -234
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +57 -16
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/index.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +3 -3
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
- package/dist/trinityal/index.js +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +1 -0
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/global/reference/classes/README.md +90 -0
- package/docs/resource/concepts/format-capabilities.md +3 -3
- package/docs/resource/formats/README.md +1 -1
- package/docs/resource/reference/classes/core.md +31 -1
- package/docs/resource/reference/classes/formats.md +7 -7
- package/docs/resource/reference/classes/resources.md +76 -16
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
- package/docs/trinityal/reference/classes/README.md +0 -10
- package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
- package/package.json +4 -3
- package/dist/global/consts/webgpu/index.js +0 -2
- package/dist/global/consts/webgpu/textureFormats.js +0 -180
- package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
- package/dist/resource/formats/dxbc/core/container.js.map +0 -1
- package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
- package/dist/resource/formats/dxbc/core/program.js.map +0 -1
- package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
- package/dist/resource/formats/stl/core/targets.js.map +0 -1
- package/dist/resource/formats/webgl/core/errors.js.map +0 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
- package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
- package/dist/resource/texture/texturePipelineBehavior.js +0 -332
- package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
- package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsWebgpuDevice.js","sources":["../../../../src/trinityal/webgpu/CjsWebgpuDevice.js"],"sourcesContent":["import { CjsResource } from \"#resource/CjsResource\";\nimport { CanonicalKey, CjsWebgpuPipelineCache, RenderPipelineKey } from \"./core/CjsWebgpuPipelineCache.js\";\nimport { AssertFormatFeature, PlanTextureUpload } from \"./core/textureLayout.js\";\nimport { CjsWebgpuEncodeState } from \"./core/CjsWebgpuEncodeState.js\";\n\nconst PREPARED_PIPELINES = new WeakMap();\nconst LIVE_PIPELINES = new WeakMap();\nconst BINDING_SETS = new WeakMap();\nconst GEOMETRIES = new WeakMap();\nconst TEXTURES = new WeakMap();\nconst SAMPLERS = new WeakMap();\nconst RESOURCE_BUNDLES = new WeakMap();\nconst DRAWS = new WeakMap();\nconst DEVICE_BUFFERS = new WeakMap();\nconst MAX_GPU_SIZE_32 = 0xFFFFFFFF;\nconst MIN_GPU_SIGNED_OFFSET_32 = -0x80000000;\nconst MAX_GPU_SIGNED_OFFSET_32 = 0x7FFFFFFF;\nconst VERTEX_FORMAT_BYTES = new Map([\n [ \"uint8\", 1 ], [ \"sint8\", 1 ], [ \"unorm8\", 1 ], [ \"snorm8\", 1 ],\n [ \"uint8x2\", 2 ], [ \"uint8x4\", 4 ],\n [ \"sint8x2\", 2 ], [ \"sint8x4\", 4 ],\n [ \"unorm8x2\", 2 ], [ \"unorm8x4\", 4 ], [ \"unorm8x4-bgra\", 4 ],\n [ \"snorm8x2\", 2 ], [ \"snorm8x4\", 4 ],\n [ \"uint16\", 2 ], [ \"sint16\", 2 ], [ \"unorm16\", 2 ], [ \"snorm16\", 2 ], [ \"float16\", 2 ],\n [ \"uint16x2\", 4 ], [ \"uint16x4\", 8 ],\n [ \"sint16x2\", 4 ], [ \"sint16x4\", 8 ],\n [ \"unorm16x2\", 4 ], [ \"unorm16x4\", 8 ],\n [ \"snorm16x2\", 4 ], [ \"snorm16x4\", 8 ],\n [ \"float16x2\", 4 ], [ \"float16x4\", 8 ],\n [ \"float32\", 4 ], [ \"float32x2\", 8 ], [ \"float32x3\", 12 ], [ \"float32x4\", 16 ],\n [ \"uint32\", 4 ], [ \"uint32x2\", 8 ], [ \"uint32x3\", 12 ], [ \"uint32x4\", 16 ],\n [ \"sint32\", 4 ], [ \"sint32x2\", 8 ], [ \"sint32x3\", 12 ], [ \"sint32x4\", 16 ],\n [ \"unorm10-10-10-2\", 4 ]\n]);\nconst TEXTURE_VIEW_DIMENSIONS = new Set([ \"2d\", \"2d-array\", \"cube\", \"cube-array\" ]);\nconst TEXTURE_FORMATS = new Map([\n [ \"rgba8unorm\", Object.freeze({ bytesPerPixel: 4, isSRGB: false }) ],\n [ \"rgba8unorm-srgb\", Object.freeze({ bytesPerPixel: 4, isSRGB: true }) ]\n]);\nconst SAMPLER_ADDRESS_MODES = new Set([ \"clamp-to-edge\", \"repeat\", \"mirror-repeat\" ]);\nconst SAMPLER_FILTER_MODES = new Set([ \"nearest\", \"linear\" ]);\nconst SAMPLER_COMPARE_FUNCTIONS = new Set([\n \"never\", \"less\", \"equal\", \"less-equal\", \"greater\", \"not-equal\", \"greater-equal\", \"always\"\n]);\nconst SELECTED_SAMPLER_PAYLOAD_KEYS = new Set([\n \"payloadType\", \"label\", \"addressModeU\", \"addressModeV\", \"addressModeW\",\n \"magFilter\", \"minFilter\", \"mipmapFilter\", \"lodMinClamp\", \"lodMaxClamp\",\n \"compare\", \"maxAnisotropy\"\n]);\nconst SELECTED_SAMPLER_REQUIRED_KEYS = Object.freeze([\n \"addressModeU\", \"addressModeV\", \"addressModeW\", \"magFilter\", \"minFilter\",\n \"mipmapFilter\", \"lodMinClamp\", \"lodMaxClamp\", \"maxAnisotropy\"\n]);\nconst RGBA8_TEXTURE_PAYLOAD_KEYS = new Set([\n \"payloadType\", \"sourceFormat\", \"width\", \"height\", \"pixelFormat\", \"data\",\n \"strideBytes\", \"origin\", \"colorSpace\", \"alphaMode\", \"containerOnly\",\n \"isDecoded\", \"rgbaDecodeSupported\"\n]);\n\nfunction fail(message)\n{\n throw new Error(`CjsWebgpuDevice: ${message}`);\n}\n\nfunction asPipelineJson(pipeline)\n{\n if (pipeline && typeof pipeline.ToJSON === \"function\") return pipeline.ToJSON();\n if (!pipeline || typeof pipeline !== \"object\") fail(\"pipeline must be a CjsWebgpuPipeline or plain descriptor\");\n return pipeline;\n}\n\nfunction normalizeStageName(value)\n{\n if (value === \"pixel\" || value === \"fragment\") return \"fragment\";\n if (value === \"vertex\") return \"vertex\";\n return String(value || \"\");\n}\n\nfunction bindingIdentity(binding)\n{\n if (!binding?.resourceKind || !Number.isInteger(binding.registerSpace) || !Number.isInteger(binding.registerIndex))\n {\n fail(\"canonical binding has an invalid D3D identity\");\n }\n const identity = `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\n if (binding.identity !== undefined && binding.identity !== identity)\n {\n fail(`canonical binding has inconsistent D3D identity ${binding.identity}`);\n }\n if (binding.scopeIdentity !== undefined\n && (typeof binding.scopeIdentity !== \"string\" || !binding.scopeIdentity))\n {\n fail(`canonical binding has invalid scope identity ${binding.scopeIdentity || \"<empty>\"}`);\n }\n const scopeIdentity = binding.scopeIdentity === undefined ? identity : binding.scopeIdentity;\n const visibility = Array.isArray(binding.visibility)\n ? Array.from(new Set(binding.visibility.map(normalizeStageName)))\n : [];\n if (typeof scopeIdentity !== \"string\"\n || (scopeIdentity !== identity\n && (visibility.length !== 1 || scopeIdentity !== `${identity}@${visibility[0]}`)))\n {\n fail(`canonical binding has invalid scope identity ${scopeIdentity || \"<empty>\"}`);\n }\n return scopeIdentity;\n}\n\n\nfunction assertPlainObject(value, label)\n{\n if (!value || typeof value !== \"object\" || Array.isArray(value)) fail(`${label} must be a plain object`);\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) fail(`${label} must be a plain object`);\n if (Object.getOwnPropertySymbols(value).length) fail(`${label} cannot have symbol keys`);\n}\n\nfunction frozenRecord(entries)\n{\n const result = {};\n for (const [ key, value ] of entries)\n {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value\n });\n }\n return result;\n}\n\nfunction snapshotPlain(value)\n{\n if (!value || typeof value !== \"object\") return value;\n if (Array.isArray(value)) return value.map(snapshotPlain);\n const result = {};\n for (const [ key, entry ] of Object.entries(value)) result[key] = snapshotPlain(entry);\n return result;\n}\n\nfunction samePlain(left, right)\n{\n if (Object.is(left, right)) return true;\n if (!left || !right || typeof left !== \"object\" || typeof right !== \"object\") return false;\n if (Array.isArray(left) || Array.isArray(right))\n {\n return Array.isArray(left) && Array.isArray(right) && left.length === right.length\n && left.every((entry, index) => samePlain(entry, right[index]));\n }\n const leftKeys = Object.keys(left).sort();\n const rightKeys = Object.keys(right).sort();\n return leftKeys.length === rightKeys.length\n && leftKeys.every((key, index) => key === rightKeys[index] && samePlain(left[key], right[key]));\n}\n\nfunction assertKeys(value, allowed, label)\n{\n for (const key of Object.keys(value))\n {\n if (!allowed.has(key)) fail(`${label} has unsupported ${key}`);\n }\n}\n\nfunction binaryView(value, label)\n{\n if (ArrayBuffer.isView(value))\n {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength).slice();\n }\n if (value instanceof ArrayBuffer) return new Uint8Array(value).slice();\n fail(`${label} data must be an ArrayBuffer or ArrayBufferView`);\n}\n\nfunction normalizeVertexLayout(value, label)\n{\n if (!value || typeof value !== \"object\" || Array.isArray(value)) fail(`${label} layout must be an object`);\n assertKeys(value, new Set([ \"arrayStride\", \"stepMode\", \"attributes\" ]), `${label} layout`);\n if (!Number.isSafeInteger(value.arrayStride) || value.arrayStride < 4 || value.arrayStride % 4 !== 0)\n {\n fail(`${label} arrayStride must be a positive multiple of 4`);\n }\n if (value.stepMode !== undefined && value.stepMode !== \"vertex\" && value.stepMode !== \"instance\")\n {\n fail(`${label} stepMode must be vertex or instance`);\n }\n if (!Array.isArray(value.attributes) || !value.attributes.length) fail(`${label} attributes must be a non-empty array`);\n const locations = new Set();\n const attributes = value.attributes.map((attribute, index) =>\n {\n const attributeLabel = `${label} attribute ${index}`;\n if (!attribute || typeof attribute !== \"object\" || Array.isArray(attribute)) fail(`${attributeLabel} must be an object`);\n assertKeys(attribute, new Set([ \"shaderLocation\", \"offset\", \"format\" ]), attributeLabel);\n if (!Number.isSafeInteger(attribute.shaderLocation) || attribute.shaderLocation < 0\n || attribute.shaderLocation > MAX_GPU_SIZE_32)\n {\n fail(`${attributeLabel} shaderLocation must be nonnegative`);\n }\n if (locations.has(attribute.shaderLocation)) fail(`${label} duplicates shader location ${attribute.shaderLocation}`);\n locations.add(attribute.shaderLocation);\n if (!Number.isSafeInteger(attribute.offset) || attribute.offset < 0)\n {\n fail(`${attributeLabel} offset must be nonnegative`);\n }\n const byteSize = VERTEX_FORMAT_BYTES.get(attribute.format);\n if (!byteSize) fail(`${attributeLabel} has unsupported GPUVertexFormat ${String(attribute.format || \"<empty>\")}`);\n const alignment = Math.min(4, byteSize);\n if (attribute.offset % alignment !== 0)\n {\n fail(`${attributeLabel} offset must be aligned to ${alignment} bytes for ${attribute.format}`);\n }\n if (attribute.offset + byteSize > value.arrayStride)\n {\n fail(`${attributeLabel} exceeds arrayStride`);\n }\n return {\n shaderLocation: attribute.shaderLocation,\n offset: attribute.offset,\n format: attribute.format\n };\n }).sort((left, right) => left.shaderLocation - right.shaderLocation);\n return snapshotPlain({\n arrayStride: value.arrayStride,\n stepMode: value.stepMode || \"vertex\",\n attributes\n });\n}\n\nfunction canonicalVertexLayouts(values, label)\n{\n if (!Array.isArray(values)) fail(`${label} must be an array`);\n const layouts = values.map((value, index) => normalizeVertexLayout(value, `${label} slot ${index}`));\n const shaderLocations = new Set();\n for (const layout of layouts)\n {\n for (const attribute of layout.attributes)\n {\n if (shaderLocations.has(attribute.shaderLocation))\n {\n fail(`${label} duplicates shader location ${attribute.shaderLocation}`);\n }\n shaderLocations.add(attribute.shaderLocation);\n }\n }\n return layouts;\n}\n\nfunction normalizeGeometry(options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options)) fail(\"geometry options must be an object\");\n assertKeys(options, new Set([ \"label\", \"vertexBuffers\", \"indexBuffer\" ]), \"geometry\");\n if (options.label !== undefined && (typeof options.label !== \"string\" || !options.label))\n {\n fail(\"geometry label must be a non-empty string\");\n }\n if (!Array.isArray(options.vertexBuffers) || !options.vertexBuffers.length)\n {\n fail(\"geometry vertexBuffers must be a non-empty array\");\n }\n const vertexBuffers = options.vertexBuffers.map((entry, index) =>\n {\n const label = `geometry vertex buffer ${index}`;\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) fail(`${label} must be an object`);\n assertKeys(entry, new Set([ \"slot\", \"label\", \"data\", \"layout\" ]), label);\n if (!Number.isInteger(entry.slot) || entry.slot < 0) fail(`${label} slot must be nonnegative`);\n if (entry.label !== undefined && (typeof entry.label !== \"string\" || !entry.label))\n {\n fail(`${label} label must be a non-empty string`);\n }\n const data = binaryView(entry.data, label);\n if (!data.byteLength) fail(`${label} data must not be empty`);\n const layout = normalizeVertexLayout(entry.layout, label);\n if (data.byteLength % layout.arrayStride !== 0)\n {\n fail(`${label} byte length must be a multiple of arrayStride`);\n }\n return { slot: entry.slot, label: entry.label || null, data, layout };\n }).sort((left, right) => left.slot - right.slot);\n for (let index = 0; index < vertexBuffers.length; index += 1)\n {\n if (vertexBuffers[index].slot !== index) fail(\"geometry vertex-buffer slots must be unique and contiguous from 0\");\n }\n const shaderLocations = new Set();\n for (const entry of vertexBuffers)\n {\n for (const attribute of entry.layout.attributes)\n {\n if (shaderLocations.has(attribute.shaderLocation))\n {\n fail(`geometry duplicates shader location ${attribute.shaderLocation} across vertex buffers`);\n }\n shaderLocations.add(attribute.shaderLocation);\n }\n }\n\n let indexBuffer = null;\n if (options.indexBuffer != null)\n {\n const entry = options.indexBuffer;\n if (typeof entry !== \"object\" || Array.isArray(entry)) fail(\"geometry index buffer must be an object\");\n assertKeys(entry, new Set([ \"label\", \"data\", \"format\" ]), \"geometry index buffer\");\n if (entry.label !== undefined && (typeof entry.label !== \"string\" || !entry.label))\n {\n fail(\"geometry index-buffer label must be a non-empty string\");\n }\n if (entry.format !== \"uint16\" && entry.format !== \"uint32\")\n {\n fail(\"geometry index-buffer format must be uint16 or uint32\");\n }\n const data = binaryView(entry.data, \"geometry index buffer\");\n const elementSize = entry.format === \"uint16\" ? 2 : 4;\n if (!data.byteLength || data.byteLength % elementSize !== 0)\n {\n fail(`geometry ${entry.format} index-buffer data has an invalid byte length`);\n }\n indexBuffer = { label: entry.label || null, data, format: entry.format };\n }\n return {\n label: options.label || \"geometry\",\n vertexBuffers,\n indexBuffer\n };\n}\n\nfunction alignedBufferSize(byteLength)\n{\n return Math.ceil(byteLength / 4) * 4;\n}\n\nfunction validateGeometryLimits(plan, device)\n{\n const limits = device?.limits || {};\n const exceeds = (name, value) => Number.isFinite(limits[name]) && value > limits[name];\n if (exceeds(\"maxVertexBuffers\", plan.vertexBuffers.length))\n {\n fail(`geometry exceeds device maxVertexBuffers ${limits.maxVertexBuffers}`);\n }\n const attributeCount = plan.vertexBuffers.reduce((total, entry) => total + entry.layout.attributes.length, 0);\n if (exceeds(\"maxVertexAttributes\", attributeCount))\n {\n fail(`geometry exceeds device maxVertexAttributes ${limits.maxVertexAttributes}`);\n }\n for (const entry of plan.vertexBuffers)\n {\n if (exceeds(\"maxVertexBufferArrayStride\", entry.layout.arrayStride))\n {\n fail(`geometry vertex buffer ${entry.slot} exceeds device maxVertexBufferArrayStride ${limits.maxVertexBufferArrayStride}`);\n }\n if (Number.isFinite(limits.maxVertexAttributes))\n {\n for (const attribute of entry.layout.attributes)\n {\n if (attribute.shaderLocation >= limits.maxVertexAttributes)\n {\n fail(`geometry shader location ${attribute.shaderLocation} exceeds the device vertex-attribute range`);\n }\n }\n }\n if (exceeds(\"maxBufferSize\", alignedBufferSize(entry.data.byteLength)))\n {\n fail(`geometry vertex buffer ${entry.slot} exceeds device maxBufferSize ${limits.maxBufferSize}`);\n }\n }\n if (plan.indexBuffer && exceeds(\"maxBufferSize\", alignedBufferSize(plan.indexBuffer.data.byteLength)))\n {\n fail(`geometry index buffer exceeds device maxBufferSize ${limits.maxBufferSize}`);\n }\n}\n\nfunction normalizeTexture(options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options)) fail(\"texture options must be an object\");\n assertKeys(\n options,\n new Set([\n \"label\", \"width\", \"height\", \"layers\", \"viewDimension\", \"format\",\n \"bytesPerRow\", \"mipLevelCount\", \"data\"\n ]),\n \"texture\"\n );\n if (options.label !== undefined && (typeof options.label !== \"string\" || !options.label))\n {\n fail(\"texture label must be a non-empty string\");\n }\n if (!Number.isSafeInteger(options.width) || options.width < 1 || options.width > MAX_GPU_SIZE_32)\n {\n fail(\"texture width must be a positive GPUSize32 value\");\n }\n if (!Number.isSafeInteger(options.height) || options.height < 1 || options.height > MAX_GPU_SIZE_32)\n {\n fail(\"texture height must be a positive GPUSize32 value\");\n }\n // A 1-layer array view is legal and distinct from a plain 2D view: a shader\n // declaring texture_2d_array<f32> needs the array view whatever the layer\n // count, so the view dimension stays explicit rather than inferred.\n const plan = PlanTextureUpload({\n format: options.format,\n width: options.width,\n height: options.height,\n layers: Object.hasOwn(options, \"layers\") && options.layers !== undefined ? options.layers : undefined,\n viewDimension: Object.hasOwn(options, \"viewDimension\") && options.viewDimension !== undefined\n ? options.viewDimension\n : undefined,\n mipLevelCount: Object.hasOwn(options, \"mipLevelCount\") && options.mipLevelCount !== undefined\n ? options.mipLevelCount\n : undefined\n });\n\n // `bytesPerRow` remains accepted for a single-level image, where a caller may\n // legitimately hand over padded rows. It is checked against the tight stride\n // the format implies rather than trusted, and it has no meaning once a mip\n // chain is involved because each level has its own stride.\n let bytesPerRow = plan.writes[0].bytesPerRow;\n if (Object.hasOwn(options, \"bytesPerRow\") && options.bytesPerRow !== undefined)\n {\n if (plan.mipLevelCount > 1)\n {\n fail(\"texture bytesPerRow cannot be supplied with a mip chain; each level has its own stride\");\n }\n if (!Number.isSafeInteger(options.bytesPerRow) || options.bytesPerRow < 1\n || options.bytesPerRow > MAX_GPU_SIZE_32)\n {\n fail(\"texture bytesPerRow must be a positive GPUSize32 value\");\n }\n if (options.bytesPerRow < bytesPerRow || options.bytesPerRow % plan.format.blockBytes !== 0)\n {\n fail(`texture bytesPerRow must contain ${bytesPerRow} active bytes and align to the block size`);\n }\n bytesPerRow = options.bytesPerRow;\n }\n\n const expectedBytes = plan.mipLevelCount > 1\n ? plan.byteLength\n : bytesPerRow * plan.writes[0].rowsPerImage * plan.layers;\n if (!Number.isSafeInteger(expectedBytes)) fail(\"texture byte length exceeds the supported JavaScript range\");\n const data = binaryView(options.data, \"texture\");\n if (data.byteLength !== expectedBytes)\n {\n fail(`texture data must be exactly ${expectedBytes} bytes`);\n }\n\n return {\n label: options.label || \"texture\",\n width: plan.width,\n height: plan.height,\n layers: plan.layers,\n viewDimension: plan.viewDimension,\n mipLevelCount: plan.mipLevelCount,\n formatName: plan.formatName,\n format: plan.format,\n plan,\n bytesPerRow,\n data\n };\n}\n\nfunction validateTextureLimits(plan, device)\n{\n const limit = device?.limits?.maxTextureDimension2D;\n if (Number.isFinite(limit) && (plan.width > limit || plan.height > limit))\n {\n fail(`texture dimensions exceed device maxTextureDimension2D ${limit}`);\n }\n const layerLimit = device?.limits?.maxTextureArrayLayers;\n if (Number.isFinite(layerLimit) && plan.layers > layerLimit)\n {\n fail(`texture layers exceed device maxTextureArrayLayers ${layerLimit}`);\n }\n}\n\nfunction normalizeSampler(options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options)) fail(\"sampler options must be an object\");\n const prototype = Object.getPrototypeOf(options);\n if (prototype !== Object.prototype && prototype !== null) fail(\"sampler options must be a plain object\");\n assertKeys(options, new Set([\n \"label\", \"addressModeU\", \"addressModeV\", \"addressModeW\", \"magFilter\", \"minFilter\",\n \"mipmapFilter\", \"lodMinClamp\", \"lodMaxClamp\", \"compare\", \"maxAnisotropy\"\n ]), \"sampler\");\n if (options.label !== undefined && (typeof options.label !== \"string\" || !options.label))\n {\n fail(\"sampler label must be a non-empty string\");\n }\n const enumValue = (name, allowed, fallback) =>\n {\n const value = Object.hasOwn(options, name) && options[name] !== undefined ? options[name] : fallback;\n if (!allowed.has(value)) fail(`sampler ${name} has unsupported ${String(value)}`);\n return value;\n };\n const addressModeU = enumValue(\"addressModeU\", SAMPLER_ADDRESS_MODES, \"clamp-to-edge\");\n const addressModeV = enumValue(\"addressModeV\", SAMPLER_ADDRESS_MODES, \"clamp-to-edge\");\n const addressModeW = enumValue(\"addressModeW\", SAMPLER_ADDRESS_MODES, \"clamp-to-edge\");\n const magFilter = enumValue(\"magFilter\", SAMPLER_FILTER_MODES, \"nearest\");\n const minFilter = enumValue(\"minFilter\", SAMPLER_FILTER_MODES, \"nearest\");\n const mipmapFilter = enumValue(\"mipmapFilter\", SAMPLER_FILTER_MODES, \"nearest\");\n const numberValue = (name, fallback) =>\n {\n const input = Object.hasOwn(options, name) && options[name] !== undefined ? options[name] : fallback;\n if (typeof input !== \"number\" || !Number.isFinite(input)) fail(`sampler ${name} must be finite`);\n const value = Math.fround(input);\n if (!Number.isFinite(value)) fail(`sampler ${name} must fit a finite float32 value`);\n return value === 0 ? 0 : value;\n };\n const lodMinClamp = numberValue(\"lodMinClamp\", 0);\n const lodMaxClamp = numberValue(\"lodMaxClamp\", 32);\n if (lodMinClamp < 0) fail(\"sampler lodMinClamp must be nonnegative\");\n if (lodMaxClamp < lodMinClamp) fail(\"sampler lodMaxClamp must be at least lodMinClamp\");\n const maxAnisotropy = Object.hasOwn(options, \"maxAnisotropy\") && options.maxAnisotropy !== undefined\n ? options.maxAnisotropy\n : 1;\n if (!Number.isInteger(maxAnisotropy) || maxAnisotropy < 1 || maxAnisotropy > 0xFFFF)\n {\n fail(\"sampler maxAnisotropy must be an integer from 1 through 65535\");\n }\n if (maxAnisotropy > 1\n && (magFilter !== \"linear\" || minFilter !== \"linear\" || mipmapFilter !== \"linear\"))\n {\n fail(\"sampler anisotropy requires linear magFilter, minFilter, and mipmapFilter\");\n }\n let compare;\n if (Object.hasOwn(options, \"compare\") && options.compare !== undefined)\n {\n compare = options.compare;\n if (!SAMPLER_COMPARE_FUNCTIONS.has(compare))\n {\n fail(`sampler compare has unsupported ${String(compare)}`);\n }\n }\n const label = options.label || \"sampler\";\n const semantic = {\n addressModeU,\n addressModeV,\n addressModeW,\n magFilter,\n minFilter,\n mipmapFilter,\n lodMinClamp,\n lodMaxClamp,\n ...(compare === undefined ? {} : { compare }),\n maxAnisotropy\n };\n return {\n label,\n descriptor: snapshotPlain({ label, ...semantic }),\n semantic: snapshotPlain(semantic),\n cacheKey: JSON.stringify(semantic),\n isComparison: compare !== undefined,\n isFiltering: magFilter === \"linear\" || minFilter === \"linear\" || mipmapFilter === \"linear\"\n };\n}\n\nfunction normalizeResourceBundle(options)\n{\n assertPlainObject(options, \"resource bundle options\");\n assertKeys(options, new Set([ \"label\", \"geometries\", \"textures\", \"samplers\" ]), \"resource bundle\");\n if (options.label !== undefined && (typeof options.label !== \"string\" || options.label.trim() === \"\"))\n {\n fail(\"resource bundle label must be a non-empty string\");\n }\n const label = options.label || \"resource bundle\";\n const definitions = [];\n for (const [ category, kind ] of [\n [ \"geometries\", \"geometry\" ],\n [ \"textures\", \"texture\" ],\n [ \"samplers\", \"sampler\" ]\n ])\n {\n const values = Object.hasOwn(options, category) && options[category] !== undefined\n ? options[category]\n : {};\n assertPlainObject(values, `resource bundle ${category}`);\n for (const [ key, value ] of Object.entries(values))\n {\n if (key.trim() === \"\") fail(`resource bundle ${category} keys must be non-empty`);\n assertPlainObject(value, `resource bundle ${category}.${key}`);\n definitions.push({\n category,\n kind,\n key,\n options: value.label === undefined\n ? { ...value, label: `${label}.${kind}.${key}` }\n : value\n });\n }\n }\n if (!definitions.length) fail(\"resource bundle must contain at least one geometry, texture, or sampler\");\n return { label, definitions: definitions };\n}\n\nfunction normalizeResourceRealizationOptions(options)\n{\n assertPlainObject(options, \"resource realization options\");\n assertKeys(options, new Set([ \"adapterKey\" ]), \"resource realization\");\n const adapterKey = options.adapterKey ?? \"webgpu\";\n if (typeof adapterKey !== \"string\" || adapterKey.trim() === \"\")\n {\n fail(\"resource realization adapterKey must be a non-empty string\");\n }\n return { adapterKey };\n}\n\nfunction normalizeRgba8TextureRealizationOptions(options)\n{\n assertPlainObject(options, \"RGBA8 texture realization options\");\n assertKeys(options, new Set([ \"textureKey\", \"bundleLabel\", \"adapterKey\" ]), \"RGBA8 texture realization\");\n const textureKey = options.textureKey;\n const bundleLabel = options.bundleLabel ?? \"prepared RGBA8 texture\";\n const adapterKey = options.adapterKey ?? \"webgpu\";\n if (typeof textureKey !== \"string\" || textureKey.trim() === \"\")\n {\n fail(\"RGBA8 texture realization textureKey must be a non-empty string\");\n }\n if (typeof bundleLabel !== \"string\" || bundleLabel.trim() === \"\")\n {\n fail(\"RGBA8 texture realization bundleLabel must be a non-empty string\");\n }\n if (typeof adapterKey !== \"string\" || adapterKey.trim() === \"\")\n {\n fail(\"RGBA8 texture realization adapterKey must be a non-empty string\");\n }\n return { name: \"RGBA8 texture realization\", textureKey, bundleLabel, adapterKey };\n}\n\nfunction normalizeSamplerRealizationOptions(options)\n{\n assertPlainObject(options, \"sampler realization options\");\n assertKeys(options, new Set([ \"samplerKey\", \"bundleLabel\", \"adapterKey\" ]), \"sampler realization\");\n const samplerKey = options.samplerKey;\n const bundleLabel = options.bundleLabel ?? \"prepared WebGPU sampler\";\n const adapterKey = options.adapterKey ?? \"webgpu\";\n if (typeof samplerKey !== \"string\" || samplerKey.trim() === \"\")\n {\n fail(\"sampler realization samplerKey must be a non-empty string\");\n }\n if (typeof bundleLabel !== \"string\" || bundleLabel.trim() === \"\")\n {\n fail(\"sampler realization bundleLabel must be a non-empty string\");\n }\n if (typeof adapterKey !== \"string\" || adapterKey.trim() === \"\")\n {\n fail(\"sampler realization adapterKey must be a non-empty string\");\n }\n return { name: \"sampler realization\", samplerKey, bundleLabel, adapterKey };\n}\n\nfunction mapRgba8TexturePayload(value, plan)\n{\n const label = `${plan.name} payload`;\n assertPlainObject(value, label);\n assertKeys(value, RGBA8_TEXTURE_PAYLOAD_KEYS, label);\n if (value.payloadType !== \"rgba\") fail(`${label} payloadType must be rgba`);\n if (typeof value.sourceFormat !== \"string\" || value.sourceFormat.trim() === \"\")\n {\n fail(`${label} sourceFormat must be a non-empty string`);\n }\n if (value.containerOnly !== false) fail(`${label} containerOnly must be false`);\n if (value.isDecoded !== true) fail(`${label} isDecoded must be true`);\n if (Object.hasOwn(value, \"rgbaDecodeSupported\") && value.rgbaDecodeSupported !== true)\n {\n fail(`${label} rgbaDecodeSupported must be true when provided`);\n }\n if (!Number.isSafeInteger(value.width) || value.width < 1 || value.width > MAX_GPU_SIZE_32)\n {\n fail(`${label} width must be a positive GPUSize32 value`);\n }\n if (!Number.isSafeInteger(value.height) || value.height < 1 || value.height > MAX_GPU_SIZE_32)\n {\n fail(`${label} height must be a positive GPUSize32 value`);\n }\n if (value.pixelFormat !== \"rgba8unorm\") fail(`${label} pixelFormat must be rgba8unorm`);\n if (!(value.data instanceof Uint8Array)) fail(`${label} data must be a Uint8Array`);\n if (!Number.isSafeInteger(value.strideBytes) || value.strideBytes < 1\n || value.strideBytes > MAX_GPU_SIZE_32)\n {\n fail(`${label} strideBytes must be a positive GPUSize32 value`);\n }\n const activeRowBytes = value.width * 4;\n if (value.strideBytes < activeRowBytes || value.strideBytes % 4 !== 0)\n {\n fail(`${label} strideBytes must contain ${activeRowBytes} active bytes and align to the RGBA8 texel size`);\n }\n const expectedBytes = value.strideBytes * value.height;\n if (!Number.isSafeInteger(expectedBytes)) fail(`${label} byte length exceeds the supported JavaScript range`);\n if (value.data.byteLength !== expectedBytes)\n {\n fail(`${label} data must be exactly ${expectedBytes} bytes`);\n }\n if (value.origin !== \"top-left\") fail(`${label} origin must be top-left`);\n if (value.colorSpace !== \"srgb\" && value.colorSpace !== \"linear\")\n {\n fail(`${label} colorSpace must be srgb or linear`);\n }\n if (value.alphaMode !== \"straight\" && value.alphaMode !== \"opaque\")\n {\n fail(`${label} alphaMode must be straight or opaque`);\n }\n\n const texture = {\n width: value.width,\n height: value.height,\n format: value.colorSpace === \"srgb\" ? \"rgba8unorm-srgb\" : \"rgba8unorm\",\n bytesPerRow: value.strideBytes,\n data: value.data\n };\n return {\n label: plan.bundleLabel,\n textures: frozenRecord([ [ plan.textureKey, texture ] ])\n };\n}\n\nfunction mapSamplerPayload(value, plan)\n{\n assertPlainObject(value, `${plan.name} payload`);\n assertKeys(value, SELECTED_SAMPLER_PAYLOAD_KEYS, `${plan.name} payload`);\n if (value.payloadType !== \"webgpu-sampler\")\n {\n fail(`${plan.name} payload payloadType must be webgpu-sampler`);\n }\n for (const key of SELECTED_SAMPLER_REQUIRED_KEYS)\n {\n if (!Object.hasOwn(value, key) || value[key] === undefined)\n {\n fail(`${plan.name} payload must provide ${key}`);\n }\n }\n const { payloadType: _payloadType, ...descriptor } = value;\n const normalized = normalizeSampler(descriptor);\n const sampler = {\n label: normalized.label,\n ...normalized.semantic\n };\n return {\n label: plan.bundleLabel,\n samplers: frozenRecord([ [ plan.samplerKey, sampler ] ])\n };\n}\n\nfunction assertRealizationResource(resource)\n{\n if (!(resource instanceof CjsResource))\n {\n fail(\"resource realization requires a CjsResource\");\n }\n return resource;\n}\n\nfunction cloneDiagnostics(messages)\n{\n return (messages || []).map((message) => ({\n type: String(message.type || \"info\"),\n message: String(message.message || \"\"),\n lineNum: Number.isInteger(message.lineNum) ? message.lineNum : null,\n linePos: Number.isInteger(message.linePos) ? message.linePos : null,\n offset: Number.isInteger(message.offset) ? message.offset : null,\n length: Number.isInteger(message.length) ? message.length : null\n }));\n}\n\nfunction visibilityFlags(visibility, shaderStage)\n{\n const names = Array.isArray(visibility) ? Array.from(new Set(visibility.map(normalizeStageName))) : [];\n if (!names.length) fail(\"canonical binding has no shader visibility\");\n let flags = 0;\n for (const name of names)\n {\n if (name === \"vertex\") flags |= shaderStage.VERTEX;\n else if (name === \"fragment\") flags |= shaderStage.FRAGMENT;\n else fail(`canonical binding has unsupported ${name || \"empty\"} visibility`);\n }\n return flags;\n}\n\nfunction bindingLayout(binding)\n{\n if (binding?.sourceTruth !== \"wgsl-layout\") fail(\"all live bindings must come from a canonical WGSL layout\");\n // A dynamic binding must be marked in BOTH places or WebGPU rejects the bind\n // group: `dynamic` is the package's word for it and `hasDynamicOffset` is the\n // layout's, and they are written by different producers. Disagreement here\n // surfaces much later as a bind-group validation error that names neither.\n if (Boolean(binding.dynamic) !== Boolean(binding.layout?.buffer?.hasDynamicOffset))\n {\n fail(`${bindingIdentity(binding)} disagrees with its layout about being dynamic`);\n }\n const layout = binding.layout;\n if (!layout || typeof layout !== \"object\") fail(`${bindingIdentity(binding)} has no WebGPU layout`);\n const keys = [ \"buffer\", \"sampler\", \"texture\", \"storageTexture\", \"externalTexture\" ]\n .filter((key) => layout[key] != null);\n if (keys.length !== 1) fail(`${bindingIdentity(binding)} must have exactly one WebGPU layout kind`);\n return { [keys[0]]: snapshotPlain(layout[keys[0]]) };\n}\n\nfunction normalizePipeline(pipeline, shaderStage)\n{\n const value = asPipelineJson(pipeline);\n const stages = Array.isArray(value.shaderModules) ? value.shaderModules : [];\n const vertex = stages.filter((entry) => normalizeStageName(entry?.stageName) === \"vertex\");\n const fragment = stages.filter((entry) => normalizeStageName(entry?.stageName) === \"fragment\");\n if (stages.length !== 2 || vertex.length !== 1 || fragment.length !== 1)\n {\n fail(\"render pipelines require exactly one vertex and one pixel shader module\");\n }\n for (const shader of [ vertex[0], fragment[0] ])\n {\n if (typeof shader.wgsl !== \"string\" || !shader.wgsl) fail(`${shader.stageName} shader has no WGSL`);\n if (typeof shader.entryPoint !== \"string\" || !shader.entryPoint) fail(`${shader.stageName} shader has no entry point`);\n }\n\n const groups = Array.isArray(value.bindGroups) ? value.bindGroups.slice() : [];\n groups.sort((left, right) => left.group - right.group);\n const slots = new Set();\n const identities = new Set();\n const baseScopes = new Map();\n const normalizedGroups = groups.map((group, groupIndex) =>\n {\n if (group?.group !== groupIndex) fail(\"canonical bind groups must be contiguous from group 0\");\n const bindings = Array.isArray(group.bindings) ? group.bindings.slice() : [];\n bindings.sort((left, right) => left.binding - right.binding);\n return {\n group: group.group,\n entries: bindings.map((binding) =>\n {\n if (binding?.group !== group.group || !Number.isInteger(binding.binding) || binding.binding < 0)\n {\n fail(`group ${group.group} has an invalid binding slot`);\n }\n const slot = `${group.group}:${binding.binding}`;\n if (slots.has(slot)) fail(`canonical layout duplicates binding slot ${slot}`);\n slots.add(slot);\n const identity = bindingIdentity(binding);\n if (identities.has(identity)) fail(`canonical layout duplicates ${identity}`);\n identities.add(identity);\n const baseIdentity = `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\n if (!baseScopes.has(baseIdentity)) baseScopes.set(baseIdentity, new Set());\n const scopes = baseScopes.get(baseIdentity);\n if ((identity === baseIdentity && Array.from(scopes).some((scope) => scope !== baseIdentity))\n || (identity !== baseIdentity && scopes.has(baseIdentity)))\n {\n fail(`canonical layout mixes shared and stage-scoped forms for ${baseIdentity}`);\n }\n scopes.add(identity);\n return {\n binding: binding.binding,\n identity,\n descriptor: {\n binding: binding.binding,\n visibility: visibilityFlags(binding.visibility, shaderStage),\n ...bindingLayout(binding)\n }\n };\n })\n };\n });\n\n const stageSnapshot = (shader) => ({\n key: String(shader.key || \"\"),\n stageName: String(shader.stageName || \"\"),\n wgsl: shader.wgsl,\n entryPoint: shader.entryPoint\n });\n return {\n key: String(value.key || \"\"),\n vertex: stageSnapshot(vertex[0]),\n fragment: stageSnapshot(fragment[0]),\n groups: normalizedGroups\n };\n}\n\nfunction findResource(resources, identity)\n{\n if (resources instanceof Map) return resources.get(identity);\n if (resources && typeof resources === \"object\" && Object.hasOwn(resources, identity)) return resources[identity];\n return undefined;\n}\n\nfunction resourceEntries(resources, label)\n{\n if (resources == null) return [];\n if (resources instanceof Map) return Array.from(resources.entries());\n if (typeof resources === \"object\") return Object.entries(resources);\n fail(`${label} must be a Map or plain object`);\n}\n\nfunction validateRecipe(recipe)\n{\n if (!recipe || typeof recipe !== \"object\") fail(\"an explicit render-pipeline recipe is required\");\n if (!recipe.vertex || !Array.isArray(recipe.vertex.buffers)) fail(\"recipe.vertex.buffers must be an array\");\n if (!recipe.fragment || !Array.isArray(recipe.fragment.targets) || !recipe.fragment.targets.length)\n {\n fail(\"recipe.fragment.targets must be a non-empty array\");\n }\n if (!recipe.primitive || typeof recipe.primitive !== \"object\") fail(\"recipe.primitive is required\");\n if (Object.hasOwn(recipe, \"layout\") || Object.hasOwn(recipe.vertex, \"module\") || Object.hasOwn(recipe.vertex, \"entryPoint\")\n || Object.hasOwn(recipe.fragment, \"module\") || Object.hasOwn(recipe.fragment, \"entryPoint\"))\n {\n fail(\"recipe cannot replace package shader modules, entry points, or canonical layout\");\n }\n return snapshotPlain(recipe);\n}\n\nfunction assertPrepared(owner, prepared)\n{\n const record = PREPARED_PIPELINES.get(prepared);\n if (!record || record.owner !== owner) fail(\"prepared pipeline belongs to another device\");\n owner._AssertGeneration(record.generation);\n return record;\n}\n\nfunction assertLive(owner, livePipeline)\n{\n const record = LIVE_PIPELINES.get(livePipeline);\n if (!record || record.owner !== owner) fail(\"live pipeline belongs to another device\");\n owner._AssertGeneration(record.generation);\n return record;\n}\n\nfunction assertBindingSet(owner, bindingSet, livePipeline = null)\n{\n const record = BINDING_SETS.get(bindingSet);\n if (!record || record.owner !== owner) fail(\"binding set belongs to another device\");\n owner._AssertGeneration(record.generation);\n if (record.destroyed) fail(\"binding set is destroyed\");\n if (livePipeline && record.livePipeline !== livePipeline) fail(\"binding set belongs to another live pipeline\");\n assertAdapterResources(record.adapterResources, \"binding set\");\n return record;\n}\n\nfunction assertGeometry(owner, geometry)\n{\n const record = GEOMETRIES.get(geometry);\n if (!record || record.owner !== owner) fail(\"geometry belongs to another device\");\n owner._AssertGeneration(record.generation);\n if (record.destroyed) fail(\"geometry is destroyed\");\n return record;\n}\n\nfunction assertTexture(owner, texture)\n{\n const record = TEXTURES.get(texture);\n if (!record || record.owner !== owner) fail(\"texture belongs to another device\");\n owner._AssertGeneration(record.generation);\n if (record.destroyed) fail(\"texture is destroyed\");\n return record;\n}\n\nfunction assertSampler(owner, sampler)\n{\n const record = SAMPLERS.get(sampler);\n if (!record || record.owner !== owner) fail(\"sampler belongs to another device\");\n owner._AssertGeneration(record.generation);\n if (record.destroyed) fail(\"sampler is destroyed\");\n return record;\n}\n\nfunction resolveBindingResource(owner, entry, resource)\n{\n const textureRecord = TEXTURES.get(resource);\n if (textureRecord)\n {\n assertTexture(owner, resource);\n const layout = entry.descriptor.texture;\n if (!layout) fail(`${entry.identity} cannot bind an engine texture`);\n const viewDimension = layout.viewDimension ?? \"2d\";\n const multisampled = layout.multisampled ?? false;\n const sampleType = layout.sampleType ?? \"float\";\n // Every dimension the texture adapter can create must be bindable, or a\n // cube map is creatable and then unusable. Multisampled textures are still\n // out: those are attachments, and the render target owns them.\n if (!TEXTURE_VIEW_DIMENSIONS.has(viewDimension) || multisampled || sampleType !== \"float\")\n {\n fail(`${entry.identity} requires a ${multisampled ? \"multisampled \" : \"\"}${sampleType} ${viewDimension} texture,`\n + \" which this adapter does not realize\");\n }\n // The view's dimension is fixed at creation, so a layout asking for the\n // other one cannot be satisfied by reinterpreting it.\n if ((textureRecord.viewDimension ?? \"2d\") !== viewDimension)\n {\n fail(`${entry.identity} requires a ${viewDimension} texture view,`\n + ` but the bound texture provides ${textureRecord.viewDimension ?? \"2d\"}`);\n }\n return { resource: textureRecord.view, adapterRecord: textureRecord };\n }\n const samplerRecord = SAMPLERS.get(resource);\n if (samplerRecord)\n {\n assertSampler(owner, resource);\n const layout = entry.descriptor.sampler;\n if (!layout) fail(`${entry.identity} cannot bind an engine sampler`);\n const type = layout.type ?? \"filtering\";\n const compatible = type === \"filtering\"\n ? !samplerRecord.isComparison\n : type === \"non-filtering\"\n ? !samplerRecord.isComparison && !samplerRecord.isFiltering\n : type === \"comparison\" && samplerRecord.isComparison;\n if (!compatible) fail(`${entry.identity} is incompatible with the ${type} sampler layout`);\n return { resource: samplerRecord.sampler, adapterRecord: samplerRecord };\n }\n if (entry.descriptor.buffer && (!resource || typeof resource !== \"object\" || !resource.buffer))\n {\n fail(`${entry.identity} requires a GPUBufferBinding resource`);\n }\n return { resource, adapterRecord: null };\n}\n\n// A dynamic binding is bound once and re-aimed per draw, which is what lets\n// many objects share one ring buffer instead of taking a buffer each. WebGPU\n// takes the offsets as a flat array per bind group, ordered by BINDING NUMBER\n// within the group - not by the order a caller happens to list them - so the\n// order is derived from the layout here rather than trusted from the caller.\nfunction resolveDynamicOffsets(record, offsets, device)\n{\n const supplied = offsets == null ? null : new Map(resourceEntries(offsets, \"draw dynamicOffsets\"));\n const perGroup = [];\n const consumed = new Set();\n let anyDynamic = false;\n\n for (const group of record.descriptor.groups)\n {\n const dynamic = group.entries\n .filter((entry) => entry.descriptor.buffer?.hasDynamicOffset === true)\n .sort((first, second) => first.binding - second.binding);\n\n if (!dynamic.length)\n {\n perGroup[group.group] = null;\n continue;\n }\n\n anyDynamic = true;\n const values = [];\n\n for (const entry of dynamic)\n {\n // Defaulting a missing offset to zero would aim every object at the first\n // slot of the ring and render them all identically, which looks like a\n // scene bug rather than a missing argument.\n const value = supplied?.get(entry.identity);\n if (value == null) fail(`draw is missing a dynamic offset for ${entry.identity}`);\n if (!Number.isSafeInteger(value) || value < 0 || value > MAX_GPU_SIZE_32)\n {\n fail(`dynamic offset for ${entry.identity} must be a GPUSize32 value`);\n }\n\n const alignment = entry.descriptor.buffer.type === \"uniform\"\n ? device?.limits?.minUniformBufferOffsetAlignment ?? 256\n : device?.limits?.minStorageBufferOffsetAlignment ?? 256;\n if (value % alignment !== 0)\n {\n fail(`dynamic offset for ${entry.identity} must be a multiple of ${alignment}`);\n }\n\n consumed.add(entry.identity);\n values.push(value);\n }\n\n perGroup[group.group] = values;\n }\n\n if (supplied)\n {\n for (const identity of supplied.keys())\n {\n if (!consumed.has(identity)) fail(`draw supplies a dynamic offset for ${identity}, which is not a dynamic binding`);\n }\n }\n\n return anyDynamic ? perGroup : null;\n}\n\nfunction assertAdapterResources(records, label)\n{\n for (const record of records || [])\n {\n if (record.destroyed) fail(`${label} ${record.kind} is destroyed`);\n }\n}\n\nasync function popValidationScope(device, state)\n{\n if (!state.open) return null;\n state.open = false;\n return device.popErrorScope();\n}\n\n/**\n * Engine-owned WebGPU device boundary. It realizes already-selected Carbon WebGPU\n * descriptors; format/capability policy remains with the caller.\n */\nexport class CjsWebgpuDevice\n{\n /**\n * Requests or accepts a WebGPU adapter and device, then returns a ready\n * engine boundary.\n */\n static async Request(options = {})\n {\n const gpu = Object.prototype.hasOwnProperty.call(options, \"gpu\")\n ? options.gpu\n : globalThis.navigator?.gpu;\n let adapter = options.adapter ?? null;\n let device = options.device ?? null;\n\n if (!device)\n {\n if (!adapter)\n {\n if (!gpu || typeof gpu.requestAdapter !== \"function\") fail(\"WebGPU is unavailable\");\n adapter = await gpu.requestAdapter(options.adapterOptions);\n if (!adapter) fail(\"requestAdapter returned null\");\n }\n if (typeof adapter.requestDevice !== \"function\") fail(\"the GPUAdapter cannot request a device\");\n device = await adapter.requestDevice(options.deviceDescriptor);\n }\n return new CjsWebgpuDevice({ ...options, gpu, adapter, device });\n }\n\n /**\n * Creates a ready engine boundary around an already-acquired GPU device.\n */\n constructor(options = {})\n {\n if (!options.device || typeof options.device.createShaderModule !== \"function\") fail(\"a GPUDevice is required\");\n const shaderStage = options.shaderStage || globalThis.GPUShaderStage;\n if (!shaderStage || !Number.isInteger(shaderStage.VERTEX) || !Number.isInteger(shaderStage.FRAGMENT))\n {\n fail(\"GPUShaderStage constants are required\");\n }\n this._gpu = options.gpu || null;\n this._adapter = options.adapter || null;\n this._device = options.device;\n this._adapterOptions = options.adapterOptions;\n this._deviceDescriptor = options.deviceDescriptor;\n this._shaderStage = shaderStage;\n this._bufferUsage = options.bufferUsage || globalThis.GPUBufferUsage || null;\n this._textureUsage = options.textureUsage || globalThis.GPUTextureUsage || null;\n this._samplerCache = new Map();\n this._preparedCache = new CjsWebgpuPipelineCache();\n this._renderPipelineCache = new CjsWebgpuPipelineCache();\n this._resourceRealizations = new WeakMap();\n this._onLost = typeof options.onLost === \"function\" ? options.onLost : null;\n this._generation = 1;\n this._state = \"ready\";\n this._lostInfo = null;\n this._validationTail = Promise.resolve();\n this._recreateSerial = 0;\n this._lifecycleVersion = 0;\n this._WatchDevice(this._device, this._generation);\n }\n\n /**\n * Returns the adapter associated with the boundary, when known.\n */\n GetAdapter()\n {\n return this._adapter;\n }\n\n /**\n * Returns the ready native GPU device.\n */\n GetDevice()\n {\n this._AssertReady();\n return this._device;\n }\n\n /**\n * The `GPUBufferUsage` table this device builds masks from.\n *\n * It is injectable (`options.bufferUsage`) so a test can drive buffer\n * creation without a real WebGPU global.\n *\n * @returns {object} The usage flags.\n */\n GetBufferUsage()\n {\n return this._bufferUsage;\n }\n\n /**\n * The `GPUTextureUsage` flags this device creates textures with; injectable\n * for the same reason as the buffer usage.\n *\n * @returns {object|null} The usage flags.\n */\n GetTextureUsage()\n {\n return this._textureUsage;\n }\n\n /**\n * Returns the generation used to reject objects from earlier device\n * lifecycles.\n */\n GetGeneration()\n {\n return this._generation;\n }\n\n /**\n * Returns the most recently accepted device-loss record, if any.\n */\n GetLostInfo()\n {\n return this._lostInfo;\n }\n\n /**\n * Reports whether the boundary is currently in the lost state.\n */\n IsLost()\n {\n return this._state === \"lost\";\n }\n\n /**\n * Reports whether the boundary currently has a usable device.\n */\n IsReady()\n {\n return this._state === \"ready\";\n }\n\n /**\n * Compiles a Carbon WebGPU render descriptor and realizes its generation-bound\n * canonical pipeline layout.\n */\n async PreparePipeline(pipeline, options = {})\n {\n const descriptor = normalizePipeline(pipeline, this._shaderStage);\n const prepareOptions = snapshotPlain(options);\n // Stage A identity is the caller's to supply: shader source is too large to\n // serialize into a key on every call, and the composed path already has one\n // from the runtime resource layer. Without it this prepares uncached, which is never\n // wrong. The rest of the options join the key because `warningsAsErrors`\n // decides whether a warning throws, so the same program under a stricter\n // policy is not the same answer.\n const identity = prepareOptions.identity ?? null;\n const key = identity === null || identity === undefined\n ? null\n : `prepared|${CanonicalKey(identity)}|${CanonicalKey(prepareOptions)}`;\n\n return this._preparedCache.Resolve(key, this._generation, () => this._SerializeValidation(async () =>\n {\n const device = this.GetDevice();\n const generation = this._generation;\n const scope = { open: typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\" };\n if (scope.open) device.pushErrorScope(\"validation\");\n try\n {\n const modules = {};\n for (const stageName of [ \"vertex\", \"fragment\" ])\n {\n const shader = descriptor[stageName];\n const module = device.createShaderModule({\n label: `${descriptor.key || \"pipeline\"}.${stageName}`,\n code: shader.wgsl\n });\n modules[stageName] = { module, entryPoint: shader.entryPoint };\n }\n this._AssertGeneration(generation);\n const bindGroupLayouts = descriptor.groups.map((group) => device.createBindGroupLayout({\n label: `${descriptor.key || \"pipeline\"}.group${group.group}`,\n entries: group.entries.map((entry) => entry.descriptor)\n }));\n const pipelineLayout = device.createPipelineLayout({\n label: `${descriptor.key || \"pipeline\"}.layout`,\n bindGroupLayouts\n });\n const validationPromise = popValidationScope(device, scope);\n const compilationPromise = Promise.all([ \"vertex\", \"fragment\" ].map(async (stageName) =>\n {\n const module = modules[stageName].module;\n const messages = typeof module.getCompilationInfo === \"function\"\n ? cloneDiagnostics((await module.getCompilationInfo()).messages)\n : [];\n return { stageName, messages };\n }));\n const [ compilation, validationError ] = await Promise.all([ compilationPromise, validationPromise ]);\n if (validationError) fail(`pipeline preparation validation failed: ${validationError.message || validationError}`);\n const diagnostics = [];\n for (const { stageName, messages } of compilation)\n {\n diagnostics.push(...messages.map((message) => ({ stage: stageName, ...message })));\n const errors = messages.filter((message) => message.type === \"error\");\n const warnings = messages.filter((message) => message.type === \"warning\");\n if (errors.length || (prepareOptions.warningsAsErrors && warnings.length))\n {\n const kinds = errors.length ? errors : warnings;\n fail(`${stageName} WGSL diagnostics: ${kinds.map((entry) => entry.message).join(\" | \")}`);\n }\n }\n this._AssertGeneration(generation);\n const prepared = {\n key: descriptor.key,\n generation,\n diagnostics: diagnostics,\n bindGroupLayouts: bindGroupLayouts.slice(),\n pipelineLayout\n };\n PREPARED_PIPELINES.set(prepared, {\n owner: this,\n generation,\n descriptor,\n modules,\n bindGroupLayouts,\n pipelineLayout,\n identity\n });\n return prepared;\n }\n catch (error)\n {\n await popValidationScope(device, scope).catch(() => null);\n throw error;\n }\n }));\n }\n\n /**\n * Realizes a generation-bound native render pipeline from a Carbon WebGPU\n * descriptor or prepared pipeline.\n */\n async CreateRenderPipeline(pipelineOrPrepared, recipe)\n {\n const pipelineRecipe = validateRecipe(recipe);\n const prepared = PREPARED_PIPELINES.has(pipelineOrPrepared)\n ? pipelineOrPrepared\n : await this.PreparePipeline(pipelineOrPrepared, pipelineRecipe.prepareOptions || {});\n\n // Stage B: the program's identity plus the recipe's POD block. The recipe\n // is small enough to serialize exactly, so unlike Carbon's Metal cache -\n // which keys on a hash and never rechecks, so a collision silently returns\n // the wrong pipeline - two different pipelines cannot collide here.\n const record = assertPrepared(this, prepared);\n const cacheKey = RenderPipelineKey(record.identity, pipelineRecipe);\n\n return this._renderPipelineCache.Resolve(cacheKey, this._generation, () => this._SerializeValidation(async () =>\n {\n const device = this.GetDevice();\n const scope = { open: typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\" };\n if (scope.open) device.pushErrorScope(\"validation\");\n try\n {\n const pipelineDescriptor = {\n label: pipelineRecipe.label || record.descriptor.key || \"Carbon WebGPU render pipeline\",\n layout: record.pipelineLayout,\n vertex: {\n ...pipelineRecipe.vertex,\n module: record.modules.vertex.module,\n entryPoint: record.modules.vertex.entryPoint\n },\n fragment: {\n ...pipelineRecipe.fragment,\n module: record.modules.fragment.module,\n entryPoint: record.modules.fragment.entryPoint\n },\n primitive: pipelineRecipe.primitive,\n ...(pipelineRecipe.depthStencil ? { depthStencil: pipelineRecipe.depthStencil } : {}),\n ...(pipelineRecipe.multisample ? { multisample: pipelineRecipe.multisample } : {})\n };\n const pipelinePromise = typeof device.createRenderPipelineAsync === \"function\"\n ? device.createRenderPipelineAsync(pipelineDescriptor)\n : Promise.resolve(device.createRenderPipeline(pipelineDescriptor));\n const validationPromise = popValidationScope(device, scope);\n const [ gpuPipeline, validationError ] = await Promise.all([ pipelinePromise, validationPromise ]);\n if (validationError) fail(`render-pipeline validation failed: ${validationError.message || validationError}`);\n this._AssertGeneration(record.generation);\n const livePipeline = {\n key: record.descriptor.key,\n generation: record.generation,\n prepared,\n pipeline: gpuPipeline\n };\n LIVE_PIPELINES.set(livePipeline, { ...record, livePipeline, pipeline: gpuPipeline, pipelineRecipe });\n return livePipeline;\n }\n catch (error)\n {\n await popValidationScope(device, scope).catch(() => null);\n throw error;\n }\n }));\n }\n\n /**\n * Upload an explicit CPU geometry payload into device-owned vertex/index\n * buffers. The returned handle is opaque apart from its immutable\n * caller-provided vertex layouts and lifecycle metadata; TriGeometryRes\n * ownership remains outside the backend.\n */\n async CreateGeometry(options = {})\n {\n this._AssertReady();\n const plan = normalizeGeometry(options);\n const usage = this._bufferUsage;\n if (!usage || !Number.isInteger(usage.VERTEX) || !Number.isInteger(usage.INDEX)\n || !Number.isInteger(usage.COPY_DST))\n {\n fail(\"GPUBufferUsage VERTEX, INDEX, and COPY_DST constants are required to create geometry\");\n }\n return this._SerializeValidation(async () =>\n {\n const device = this.GetDevice();\n if (typeof device.createBuffer !== \"function\" || typeof device.queue?.writeBuffer !== \"function\")\n {\n fail(\"GPUDevice buffer creation and queue.writeBuffer are required to create geometry\");\n }\n validateGeometryLimits(plan, device);\n const generation = this._generation;\n const ownedBuffers = [];\n const scopes = { validation: false, memory: false };\n if (typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\")\n {\n device.pushErrorScope(\"out-of-memory\");\n scopes.memory = true;\n device.pushErrorScope(\"validation\");\n scopes.validation = true;\n }\n const popScope = async (name) =>\n {\n if (!scopes[name]) return null;\n scopes[name] = false;\n return device.popErrorScope();\n };\n const upload = (label, data, kind) =>\n {\n const size = alignedBufferSize(data.byteLength);\n const buffer = device.createBuffer({\n label,\n size,\n usage: usage[kind] | usage.COPY_DST\n });\n ownedBuffers.push(buffer);\n let bytes = data;\n if (size !== data.byteLength)\n {\n bytes = new Uint8Array(size);\n bytes.set(data);\n }\n device.queue.writeBuffer(buffer, 0, bytes);\n return buffer;\n };\n\n try\n {\n const vertexBuffers = plan.vertexBuffers.map((entry) => ({\n slot: entry.slot,\n buffer: upload(entry.label || `${plan.label}.vertex${entry.slot}`, entry.data, \"VERTEX\"),\n offset: 0,\n size: entry.data.byteLength,\n capacity: entry.data.byteLength / entry.layout.arrayStride,\n stepMode: entry.layout.stepMode\n }));\n const indexBuffer = plan.indexBuffer\n ? {\n buffer: upload(plan.indexBuffer.label || `${plan.label}.index`, plan.indexBuffer.data, \"INDEX\"),\n format: plan.indexBuffer.format,\n offset: 0,\n size: plan.indexBuffer.data.byteLength,\n count: plan.indexBuffer.data.byteLength / (plan.indexBuffer.format === \"uint16\" ? 2 : 4)\n }\n : null;\n const validationPromise = popScope(\"validation\");\n const memoryPromise = popScope(\"memory\");\n const [ validationError, memoryError ] = await Promise.all([ validationPromise, memoryPromise ]);\n if (memoryError)\n {\n fail(`geometry allocation failed: ${memoryError.message || memoryError}`);\n }\n if (validationError)\n {\n fail(`geometry validation failed: ${validationError.message || validationError}`);\n }\n this._AssertGeneration(generation);\n const vertexBufferLayouts = plan.vertexBuffers.map((entry) => entry.layout);\n const minimumCapacity = (stepMode) =>\n {\n const capacities = vertexBuffers.filter((entry) => entry.stepMode === stepMode).map((entry) => entry.capacity);\n return capacities.length ? Math.min(...capacities) : null;\n };\n let geometry;\n geometry = {\n label: plan.label,\n generation,\n vertexBufferCount: vertexBuffers.length,\n vertexBufferLayouts,\n vertexCapacity: minimumCapacity(\"vertex\"),\n instanceCapacity: minimumCapacity(\"instance\"),\n indexed: indexBuffer !== null,\n indexFormat: indexBuffer?.format || null,\n indexCount: indexBuffer?.count || 0,\n Destroy: () => this.DestroyGeometry(geometry)\n };\n GEOMETRIES.set(geometry, {\n owner: this,\n generation,\n vertexBuffers: vertexBuffers,\n vertexBufferLayouts,\n indexBuffer,\n ownedBuffers: ownedBuffers.slice(),\n destroyed: false\n });\n return geometry;\n }\n catch (error)\n {\n const validationPromise = popScope(\"validation\").catch(() => null);\n const memoryPromise = popScope(\"memory\").catch(() => null);\n await Promise.all([ validationPromise, memoryPromise ]);\n for (const buffer of ownedBuffers)\n {\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\n }\n throw error;\n }\n });\n }\n\n /**\n * Destroys the device buffers owned by a geometry handle.\n */\n DestroyGeometry(geometry)\n {\n const record = GEOMETRIES.get(geometry);\n if (!record || record.owner !== this) fail(\"geometry belongs to another device\");\n if (record.destroyed) return;\n record.destroyed = true;\n for (const buffer of record.ownedBuffers)\n {\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\n }\n }\n\n /**\n * Upload one explicit, single-mip, uncompressed 2D CPU texture payload.\n * Sampler state and resource-path policy remain separate from this handle.\n */\n async CreateTexture(options = {})\n {\n this._AssertReady();\n const plan = normalizeTexture(options);\n const usage = this._textureUsage;\n if (!usage || !Number.isInteger(usage.TEXTURE_BINDING) || !Number.isInteger(usage.COPY_DST))\n {\n fail(\"GPUTextureUsage TEXTURE_BINDING and COPY_DST constants are required to create textures\");\n }\n return this._SerializeValidation(async () =>\n {\n const device = this.GetDevice();\n if (typeof device.createTexture !== \"function\" || typeof device.queue?.writeTexture !== \"function\")\n {\n fail(\"GPUDevice texture creation and queue.writeTexture are required to create textures\");\n }\n // Told before anything is created, so a device without BC support gets\n // the feature name rather than an unsupported-format error from inside\n // createTexture.\n AssertFormatFeature(plan, device);\n validateTextureLimits(plan, device);\n const generation = this._generation;\n const scopes = { validation: false, memory: false };\n if (typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\")\n {\n device.pushErrorScope(\"out-of-memory\");\n scopes.memory = true;\n device.pushErrorScope(\"validation\");\n scopes.validation = true;\n }\n const popScope = async (name) =>\n {\n if (!scopes[name]) return null;\n scopes[name] = false;\n return device.popErrorScope();\n };\n let gpuTexture = null;\n try\n {\n gpuTexture = device.createTexture({\n label: plan.label,\n size: { width: plan.width, height: plan.height, depthOrArrayLayers: plan.layers },\n mipLevelCount: plan.mipLevelCount,\n sampleCount: 1,\n // A WebGPU array texture is a 2d texture with more layers, not a 3d\n // one; only the view dimension changes. A cube is the same again: six\n // layers and a cube VIEW.\n dimension: \"2d\",\n format: plan.formatName,\n usage: usage.TEXTURE_BINDING | usage.COPY_DST\n });\n if (plan.mipLevelCount === 1)\n {\n // One level means every layer is a contiguous slab of the same\n // stride, so one write still covers them all.\n device.queue.writeTexture(\n { texture: gpuTexture },\n plan.data,\n { offset: 0, bytesPerRow: plan.bytesPerRow, rowsPerImage: plan.plan.writes[0].rowsPerImage },\n {\n width: plan.plan.writes[0].copyWidth,\n height: plan.plan.writes[0].copyHeight,\n depthOrArrayLayers: plan.layers\n }\n );\n }\n else\n {\n // A mip chain is stored layer-major, so one level across layers is\n // not contiguous and each (layer, level) is written on its own.\n // rowsPerImage counts BLOCK rows, which is what makes a compressed\n // upload differ from an uncompressed one.\n for (const write of plan.plan.writes)\n {\n device.queue.writeTexture(\n { texture: gpuTexture, mipLevel: write.level, origin: { x: 0, y: 0, z: write.layer } },\n plan.data,\n { offset: write.offset, bytesPerRow: write.bytesPerRow, rowsPerImage: write.rowsPerImage },\n { width: write.copyWidth, height: write.copyHeight, depthOrArrayLayers: 1 }\n );\n }\n }\n if (typeof gpuTexture?.createView !== \"function\") fail(\"created texture cannot create a view\");\n const view = gpuTexture.createView({ label: `${plan.label}.view`, dimension: plan.viewDimension });\n const validationPromise = popScope(\"validation\");\n const memoryPromise = popScope(\"memory\");\n const [ validationError, memoryError ] = await Promise.all([ validationPromise, memoryPromise ]);\n if (memoryError)\n {\n fail(`texture allocation failed: ${memoryError.message || memoryError}`);\n }\n if (validationError)\n {\n fail(`texture validation failed: ${validationError.message || validationError}`);\n }\n this._AssertGeneration(generation);\n let texture;\n texture = {\n label: plan.label,\n generation,\n width: plan.width,\n height: plan.height,\n depthOrArrayLayers: plan.layers,\n mipLevelCount: plan.mipLevelCount,\n sampleCount: 1,\n dimension: \"2d\",\n viewDimension: plan.viewDimension,\n format: plan.formatName,\n isSRGB: plan.format.isSRGB,\n Destroy: () => this.DestroyTexture(texture)\n };\n TEXTURES.set(texture, {\n kind: \"texture\",\n owner: this,\n generation,\n texture: gpuTexture,\n view,\n viewDimension: plan.viewDimension,\n destroyed: false\n });\n return texture;\n }\n catch (error)\n {\n const validationPromise = popScope(\"validation\").catch(() => null);\n const memoryPromise = popScope(\"memory\").catch(() => null);\n await Promise.all([ validationPromise, memoryPromise ]);\n if (typeof gpuTexture?.destroy === \"function\") gpuTexture.destroy();\n throw error;\n }\n });\n }\n\n /**\n * Destroys the native texture owned by a texture handle.\n */\n DestroyTexture(texture)\n {\n const record = TEXTURES.get(texture);\n if (!record || record.owner !== this) fail(\"texture belongs to another device\");\n if (record.destroyed) return;\n record.destroyed = true;\n if (typeof record.texture?.destroy === \"function\") record.texture.destroy();\n }\n\n /**\n * Normalize one explicit sampler descriptor and reuse its immutable native\n * GPUSampler within this device generation. Each call receives an\n * independently releasable opaque handle.\n */\n async CreateSampler(options = {})\n {\n this._AssertReady();\n const plan = normalizeSampler(options);\n return this._SerializeValidation(async () =>\n {\n const device = this.GetDevice();\n if (typeof device.createSampler !== \"function\") fail(\"GPUDevice sampler creation is required to create samplers\");\n const generation = this._generation;\n let cached = this._samplerCache.get(plan.cacheKey);\n if (!cached)\n {\n const scope = {\n open: typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\"\n };\n if (scope.open) device.pushErrorScope(\"validation\");\n const popScope = async () =>\n {\n if (!scope.open) return null;\n scope.open = false;\n return device.popErrorScope();\n };\n try\n {\n const nativeSampler = device.createSampler(plan.descriptor);\n const validationError = await popScope();\n if (validationError)\n {\n fail(`sampler validation failed: ${validationError.message || validationError}`);\n }\n this._AssertGeneration(generation);\n cached = { generation, sampler: nativeSampler };\n this._samplerCache.set(plan.cacheKey, cached);\n }\n catch (error)\n {\n await popScope().catch(() => null);\n throw error;\n }\n }\n else\n {\n this._AssertGeneration(cached.generation);\n }\n\n let sampler;\n sampler = {\n label: plan.label,\n generation,\n ...plan.semantic,\n isComparison: plan.isComparison,\n isFiltering: plan.isFiltering,\n Destroy: () => this.DestroySampler(sampler)\n };\n SAMPLERS.set(sampler, {\n kind: \"sampler\",\n owner: this,\n generation,\n sampler: cached.sampler,\n isComparison: plan.isComparison,\n isFiltering: plan.isFiltering,\n destroyed: false\n });\n return sampler;\n });\n }\n\n /**\n * Releases one logical sampler handle without destroying its shared native\n * sampler.\n */\n DestroySampler(sampler)\n {\n const record = SAMPLERS.get(sampler);\n if (!record || record.owner !== this) fail(\"sampler belongs to another device\");\n record.destroyed = true;\n }\n\n /**\n * Atomically realize one keyed collection of already-prepared plain GPU\n * payloads. Child handles remain private until every queued creation has\n * settled successfully, and the returned bundle owns their cleanup.\n */\n async CreateResourceBundle(options = {})\n {\n this._AssertReady();\n const plan = normalizeResourceBundle(options);\n const generation = this._generation;\n const tasks = plan.definitions.map((definition) =>\n {\n let promise;\n if (definition.kind === \"geometry\") promise = this.CreateGeometry(definition.options);\n else if (definition.kind === \"texture\") promise = this.CreateTexture(definition.options);\n else promise = this.CreateSampler(definition.options);\n return { definition, promise };\n });\n const results = await Promise.allSettled(tasks.map((task) => task.promise));\n const fulfilled = results.flatMap((result, index) => result.status === \"fulfilled\"\n ? [ { definition: tasks[index].definition, resource: result.value } ]\n : []);\n const failure = results.find((result) => result.status === \"rejected\");\n let generationError = null;\n try\n {\n this._AssertGeneration(generation);\n }\n catch (error)\n {\n generationError = error;\n }\n if (failure || generationError)\n {\n for (let index = fulfilled.length - 1; index >= 0; index -= 1)\n {\n fulfilled[index].resource.Destroy();\n }\n throw failure?.reason || generationError;\n }\n\n const categoryEntries = {\n geometries: [],\n textures: [],\n samplers: []\n };\n for (const entry of fulfilled)\n {\n categoryEntries[entry.definition.category].push([ entry.definition.key, entry.resource ]);\n }\n const geometries = frozenRecord(categoryEntries.geometries);\n const textures = frozenRecord(categoryEntries.textures);\n const samplers = frozenRecord(categoryEntries.samplers);\n let bundle;\n bundle = {\n label: plan.label,\n generation,\n geometries,\n textures,\n samplers,\n Destroy: () => this.DestroyResourceBundle(bundle)\n };\n RESOURCE_BUNDLES.set(bundle, {\n owner: this,\n generation,\n resources: fulfilled.map((entry) => entry.resource),\n destroyed: false\n });\n return bundle;\n }\n\n /**\n * Destroys a resource bundle's child handles in reverse creation order.\n */\n DestroyResourceBundle(bundle)\n {\n const record = RESOURCE_BUNDLES.get(bundle);\n if (!record || record.owner !== this) fail(\"resource bundle belongs to another device\");\n if (record.destroyed) return;\n record.destroyed = true;\n let firstError = null;\n for (let index = record.resources.length - 1; index >= 0; index -= 1)\n {\n try\n {\n record.resources[index].Destroy();\n }\n catch (error)\n {\n firstError ||= error;\n }\n }\n if (firstError)\n {\n record.destroyed = false;\n throw firstError;\n }\n }\n\n /**\n * Realize the already-published RGBA8 CPU payload attached to one resource.\n * Mapping remains synchronous and GPU-free; allocation and guarded adapter\n * publication are delegated to {@link CjsWebgpuDevice#_RealizeResource}.\n * Concurrent calls for the same resource and adapter key share one operation.\n *\n * @param {CjsResource} resource Current loaded resource exposing `GetPayload()`.\n * @param {object} options Texture key, bundle label, and adapter slot.\n * @param {string} options.textureKey Binding/resource identity for the texture.\n * @param {string} [options.bundleLabel=\"prepared RGBA8 texture\"] Diagnostic bundle label.\n * @param {string} [options.adapterKey=\"webgpu\"] Resource adapter slot.\n * @returns {Promise<object>} Engine-owned prepared resource bundle.\n */\n RealizeRgba8Texture(resource, options = {})\n {\n assertRealizationResource(resource);\n const plan = normalizeRgba8TextureRealizationOptions(options);\n const input = mapRgba8TexturePayload(resource.GetPayload(), plan);\n return this.RealizeResource(resource, input, { adapterKey: plan.adapterKey });\n }\n\n /**\n * Realize already-selected WebGPU sampler state from a published CPU payload.\n * Selection and texture pairing remain caller policy; this method only maps,\n * allocates, and commits the selected sampler under the requested adapter key.\n *\n * @param {CjsResource} resource Current loaded resource exposing `GetPayload()`.\n * @param {object} options Sampler key, bundle label, and adapter slot.\n * @param {string} options.samplerKey Binding/resource identity for the sampler.\n * @param {string} [options.bundleLabel=\"prepared WebGPU sampler\"] Diagnostic bundle label.\n * @param {string} [options.adapterKey=\"webgpu\"] Resource adapter slot.\n * @returns {Promise<object>} Engine-owned prepared resource bundle.\n */\n RealizeSampler(resource, options = {})\n {\n assertRealizationResource(resource);\n const plan = normalizeSamplerRealizationOptions(options);\n const input = mapSamplerPayload(resource.GetPayload(), plan);\n return this.RealizeResource(resource, input, { adapterKey: plan.adapterKey });\n }\n\n /**\n * Realize one already-published CPU resource as an engine-owned WebGPU bundle.\n *\n * The in-flight boundary is this device session plus resource handle and\n * adapter key. Candidate allocation completes before a synchronous current-\n * target check and adapter commit. A stale or failed candidate is destroyed;\n * a current failure restores any usable prior adapter and otherwise returns\n * the resource to `LOADED` without discarding its CPU payload.\n *\n * @param {CjsResource} resource Current loaded resource receiving the adapter.\n * @param {object} value Plain geometry/texture/sampler bundle input. When omitted, the resource payload is used.\n * @param {object} [options={}] Adapter publication options.\n * @param {string} [options.adapterKey=\"webgpu\"] Resource adapter slot.\n * @returns {Promise<object>} Engine-owned prepared resource bundle.\n */\n RealizeResource(resource, value, options = {})\n {\n assertRealizationResource(resource);\n const plan = normalizeResourceRealizationOptions(options);\n let operations = this._resourceRealizations.get(resource);\n if (!operations)\n {\n operations = new Map();\n this._resourceRealizations.set(resource, operations);\n }\n const existing = operations.get(plan.adapterKey);\n if (existing) return existing;\n\n const input = value === undefined ? resource.GetPayload() : value;\n const promise = this._RealizeResource(resource, input, plan);\n operations.set(plan.adapterKey, promise);\n const remove = () =>\n {\n if (operations.get(plan.adapterKey) === promise) operations.delete(plan.adapterKey);\n };\n promise.then(remove, remove);\n return promise;\n }\n\n /**\n * Allocates, publishes, and rolls back one guarded resource realization.\n */\n async _RealizeResource(resource, value, plan)\n {\n const stale = () =>\n {\n const error = new Error(`CjsWebgpuDevice: resource realization target ${plan.adapterKey} is stale`);\n error.code = \"CJS_WEBGPU_STALE_RESOURCE_REALIZATION\";\n error.adapterKey = plan.adapterKey;\n return error;\n };\n const assertOwned = (bundle, label) =>\n {\n if (bundle === undefined || bundle === null) return null;\n const record = RESOURCE_BUNDLES.get(bundle);\n if (!record || record.owner !== this)\n {\n fail(`${label} adapter slot ${plan.adapterKey} is not an engine-owned resource bundle`);\n }\n return record;\n };\n const isUsable = (bundle) =>\n {\n const record = bundle ? RESOURCE_BUNDLES.get(bundle) : null;\n return Boolean(record\n && record.owner === this\n && record.generation === this._generation\n && record.destroyed !== true);\n };\n\n if (!resource.IsCurrent()) throw stale();\n let displaced = resource.GetAdapterResource(plan.adapterKey);\n assertOwned(displaced, \"existing\");\n resource.MarkPreparing();\n if (!resource.IsCurrent()) throw stale();\n\n let candidate = null;\n let committed = false;\n try\n {\n candidate = await this.CreateResourceBundle(value);\n if (!resource.IsCurrent()) throw stale();\n\n displaced = resource.GetAdapterResource(plan.adapterKey);\n assertOwned(displaced, \"current\");\n resource.SetAdapterResource(plan.adapterKey, candidate);\n if (resource.GetAdapterResource(plan.adapterKey) !== candidate)\n {\n fail(`resource realization adapter slot ${plan.adapterKey} did not publish the candidate bundle`);\n }\n resource.MarkPrepared();\n if (!resource.IsCurrent()) throw stale();\n committed = true;\n if (displaced && displaced !== candidate) displaced.Destroy();\n return candidate;\n }\n catch (error)\n {\n if (!committed)\n {\n try\n {\n if (resource.IsCurrent())\n {\n const current = resource.GetAdapterResource(plan.adapterKey);\n if (current === candidate)\n {\n if (displaced !== undefined && displaced !== null)\n {\n resource.SetAdapterResource(plan.adapterKey, displaced);\n }\n else\n {\n resource.DestroyAdapterResource(plan.adapterKey);\n }\n }\n if (isUsable(resource.GetAdapterResource(plan.adapterKey))) resource.MarkPrepared();\n else resource.MarkLoaded();\n }\n }\n catch\n {\n // Preserve the realization error. The candidate is still destroyed\n // below, and a detached resource must not receive further mutation.\n }\n try\n {\n candidate?.Destroy();\n }\n catch\n {\n // Preserve the realization error after best-effort candidate cleanup.\n }\n }\n throw error;\n }\n }\n\n /**\n * Creates generation-bound bind groups and owned uniform buffers for a live\n * pipeline.\n */\n CreateBindingSet(livePipeline, options = {})\n {\n const record = assertLive(this, livePipeline);\n const usage = this._bufferUsage;\n const device = this.GetDevice();\n\n const uniformInputs = new Map(resourceEntries(options.uniformData, \"binding-set uniformData\"));\n const externalInputs = new Map(resourceEntries(options.resources, \"binding-set resources\"));\n const uniformPlans = new Map();\n const externalPlans = new Map();\n for (const group of record.descriptor.groups)\n {\n for (const entry of group.entries)\n {\n const buffer = entry.descriptor.buffer;\n if (buffer?.type === \"uniform\")\n {\n // A dynamic binding is bound ONCE and re-aimed per draw through the\n // offsets handed to setBindGroup, which is what lets many objects\n // share one ring buffer instead of one buffer each. The binding's\n // size is then the WINDOW, not the buffer, so it is taken from the\n // layout's minBindingSize rather than from the data's length.\n const size = buffer.minBindingSize;\n if (!Number.isInteger(size) || size < 1 || size % 4 !== 0)\n {\n fail(`${entry.identity} has an invalid uniform binding size`);\n }\n const data = uniformInputs.get(entry.identity);\n if (data == null) fail(`binding set is missing uniform data ${entry.identity}`);\n if (!ArrayBuffer.isView(data)) fail(`${entry.identity} uniform data must be an ArrayBufferView`);\n if (data.byteLength < size || data.byteLength % 4 !== 0)\n {\n fail(`${entry.identity} uniform data must be a 4-byte-aligned view of at least ${size} bytes`);\n }\n uniformPlans.set(entry.identity, {\n entry,\n data,\n size: data.byteLength,\n minBindingSize: size,\n dynamic: buffer.hasDynamicOffset === true,\n group: group.group\n });\n }\n else\n {\n const resource = externalInputs.get(entry.identity);\n if (resource == null) fail(`binding set is missing caller resource ${entry.identity}`);\n externalPlans.set(entry.identity, { entry, ...resolveBindingResource(this, entry, resource) });\n }\n }\n }\n for (const identity of uniformInputs.keys())\n {\n if (!uniformPlans.has(identity)) fail(`binding set has unexpected uniform data ${identity}`);\n }\n for (const identity of externalInputs.keys())\n {\n if (!externalPlans.has(identity)) fail(`binding set has unexpected caller resource ${identity}`);\n }\n if (uniformPlans.size\n && (!usage || !Number.isInteger(usage.UNIFORM) || !Number.isInteger(usage.COPY_DST)))\n {\n fail(\"GPUBufferUsage constants are required to create binding sets\");\n }\n if (uniformPlans.size\n && (typeof device.createBuffer !== \"function\" || typeof device.queue?.writeBuffer !== \"function\"))\n {\n fail(\"GPUDevice buffer creation and queue.writeBuffer are required to create binding sets\");\n }\n\n const buffers = [];\n try\n {\n const resources = new Map();\n const uniforms = new Map();\n const adapterResources = new Set();\n for (const [ identity, plan ] of uniformPlans)\n {\n const buffer = device.createBuffer({\n label: `${record.descriptor.key || \"pipeline\"}.${identity}`,\n size: plan.size,\n usage: usage.UNIFORM | usage.COPY_DST\n });\n buffers.push(buffer);\n device.queue.writeBuffer(buffer, 0, plan.data);\n // A dynamic binding's resource must describe the window the shader\n // sees, not the whole buffer; WebGPU adds the per-draw offset to this\n // one and validates that the window still fits.\n resources.set(identity, plan.dynamic\n ? { buffer, offset: 0, size: plan.minBindingSize }\n : { buffer });\n uniforms.set(identity, { buffer, size: plan.size, dynamic: plan.dynamic });\n }\n for (const [ identity, plan ] of externalPlans)\n {\n resources.set(identity, plan.resource);\n if (plan.adapterRecord) adapterResources.add(plan.adapterRecord);\n }\n\n const bindGroups = record.descriptor.groups.map((group) => device.createBindGroup({\n label: `${record.descriptor.key || \"pipeline\"}.group${group.group}.bindingSet`,\n layout: record.bindGroupLayouts[group.group],\n entries: group.entries.map((entry) => ({\n binding: entry.binding,\n resource: resources.get(entry.identity)\n }))\n }));\n let bindingSet;\n bindingSet = {\n key: record.descriptor.key,\n generation: record.generation,\n Update: (uniformData) =>\n {\n this.UpdateBindingSet(bindingSet, uniformData);\n return bindingSet;\n },\n Destroy: () => this.DestroyBindingSet(bindingSet)\n };\n BINDING_SETS.set(bindingSet, {\n owner: this,\n generation: record.generation,\n livePipeline,\n bindGroups: bindGroups,\n buffers: buffers.slice(),\n uniforms,\n adapterResources: Array.from(adapterResources),\n destroyed: false\n });\n return bindingSet;\n }\n catch (error)\n {\n for (const buffer of buffers)\n {\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\n }\n throw error;\n }\n }\n\n // A buffer Trinity owns and rewrites, as opposed to the geometry buffers\n // above, which this device uploads once and caches. Carbon's `Tr2BufferAL`\n // is the caller; see `CjsWebgpuBufferAL`.\n //\n // The handle is opaque and the `GPUBuffer` stays in DEVICE_BUFFERS, matching\n // how geometries and binding sets are held here.\n\n /**\n * Creates a buffer whose contents the caller rewrites.\n *\n * @param {object} options `{ label, size, usage }` - usage is a raw\n * `GPUBufferUsage` mask; COPY_DST is added because writes arrive through\n * `WriteDeviceBuffer`.\n * @returns {object} An opaque handle carrying `size` and `Destroy`.\n */\n CreateDeviceBuffer({ label = \"device-buffer\", size, usage })\n {\n const device = this.GetDevice();\n\n if (!Number.isInteger(size) || size <= 0) fail(\"a device buffer needs a positive integer size\");\n if (!Number.isInteger(usage) || usage <= 0) fail(\"a device buffer needs a usage mask\");\n\n // WebGPU requires a multiple of 4, and writeBuffer requires the same of\n // every write. Rounding up here means the shadow copy and the GPU buffer\n // always agree on length.\n const aligned = alignedBufferSize(size);\n const buffer = device.createBuffer({ label, size: aligned, usage: usage | this._bufferUsage.COPY_DST });\n\n const handle = {\n size: aligned,\n requestedSize: size,\n Destroy: () =>\n {\n const record = DEVICE_BUFFERS.get(handle);\n if (!record) return false;\n DEVICE_BUFFERS.delete(handle);\n record.buffer.destroy();\n return true;\n }\n };\n\n DEVICE_BUFFERS.set(handle, { buffer, size: aligned, generation: this.GetGeneration() });\n\n return handle;\n }\n\n /**\n * Uploads bytes into a device buffer.\n *\n * @param {object} handle A `CreateDeviceBuffer` handle.\n * @param {ArrayBufferView} bytes The bytes to write.\n * @param {number} [offset] Byte offset into the buffer.\n * @returns {object} The handle.\n */\n WriteDeviceBuffer(handle, bytes, offset = 0)\n {\n const record = DEVICE_BUFFERS.get(handle);\n\n if (!record) fail(\"that is not a live device buffer\");\n if (!ArrayBuffer.isView(bytes)) fail(\"device buffer data must be an ArrayBufferView\");\n if (offset % 4 !== 0) fail(\"a device buffer write must start on a four-byte boundary\");\n if (bytes.byteLength % 4 !== 0) fail(\"a device buffer write must be a whole number of four-byte words\");\n if (offset + bytes.byteLength > record.size) fail(\"that write runs past the end of the device buffer\");\n\n this.GetDevice().queue.writeBuffer(record.buffer, offset, bytes);\n\n return handle;\n }\n\n /**\n * The `GPUBuffer` behind a handle, for binding it to a draw.\n *\n * @param {object} handle A `CreateDeviceBuffer` handle.\n * @returns {GPUBuffer} The buffer.\n */\n GetDeviceBuffer(handle)\n {\n const record = DEVICE_BUFFERS.get(handle);\n\n if (!record) fail(\"that is not a live device buffer\");\n\n return record.buffer;\n }\n\n /**\n * Validates and uploads exact-size updates to a binding set's owned uniform\n * buffers.\n */\n UpdateBindingSet(bindingSet, uniformData)\n {\n const record = assertBindingSet(this, bindingSet);\n const updates = resourceEntries(uniformData, \"binding-set uniform update\");\n if (!updates.length) fail(\"binding-set uniform update requires at least one entry\");\n for (const [ identity, data ] of updates)\n {\n const uniform = record.uniforms.get(identity);\n if (!uniform) fail(`binding set has no owned uniform ${identity}`);\n if (!ArrayBuffer.isView(data)) fail(`${identity} uniform data must be an ArrayBufferView`);\n if (data.byteLength !== uniform.size)\n {\n fail(`${identity} uniform data must be exactly ${uniform.size} bytes`);\n }\n }\n const device = this.GetDevice();\n for (const [ identity, data ] of updates)\n {\n device.queue.writeBuffer(record.uniforms.get(identity).buffer, 0, data);\n }\n return bindingSet;\n }\n\n /**\n * Destroys a binding set's owned uniform buffers without releasing external\n * resources.\n */\n DestroyBindingSet(bindingSet)\n {\n const record = BINDING_SETS.get(bindingSet);\n if (!record || record.owner !== this) fail(\"binding set belongs to another device\");\n if (record.destroyed) return;\n record.destroyed = true;\n for (const buffer of record.buffers)\n {\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\n }\n }\n\n /**\n * Validates and snapshots one generation-bound indexed or non-indexed draw.\n */\n CreateDraw(livePipeline, options = {})\n {\n const record = assertLive(this, livePipeline);\n let geometryRecord = null;\n let vertexBuffers;\n if (options.geometry != null)\n {\n if (options.vertexBuffers != null || options.indexBuffer != null)\n {\n fail(\"draw geometry cannot be combined with raw vertexBuffers or indexBuffer\");\n }\n geometryRecord = assertGeometry(this, options.geometry);\n const pipelineVertexLayouts = canonicalVertexLayouts(\n record.pipelineRecipe.vertex.buffers,\n \"live pipeline vertex buffers\"\n );\n if (!samePlain(pipelineVertexLayouts, geometryRecord.vertexBufferLayouts))\n {\n fail(\"draw geometry vertex layouts do not match the live pipeline\");\n }\n vertexBuffers = geometryRecord.vertexBuffers.map(({ slot, buffer, offset, size }) => ({\n slot,\n buffer,\n offset,\n size\n }));\n }\n else\n {\n vertexBuffers = (Array.isArray(options.vertexBuffers) ? options.vertexBuffers : []).map((entry) =>\n {\n if (!Number.isInteger(entry?.slot) || entry.slot < 0 || !entry.buffer) fail(\"draw has an invalid vertex buffer\");\n if (Object.hasOwn(entry, \"offset\") && (!Number.isSafeInteger(entry.offset) || entry.offset < 0)) fail(\"draw has an invalid vertex-buffer offset\");\n if (Object.hasOwn(entry, \"size\") && (!Number.isSafeInteger(entry.size) || entry.size < 0)) fail(\"draw has an invalid vertex-buffer size\");\n return { ...entry };\n });\n }\n const vertexSlots = new Set();\n for (const entry of vertexBuffers)\n {\n if (vertexSlots.has(entry.slot)) fail(`draw duplicates vertex-buffer slot ${entry.slot}`);\n vertexSlots.add(entry.slot);\n }\n vertexBuffers.sort((left, right) => left.slot - right.slot);\n\n const drawCall = options.draw;\n if (!drawCall || typeof drawCall !== \"object\") fail(\"draw call is required\");\n const hasIndexCount = Object.hasOwn(drawCall, \"indexCount\");\n const hasVertexCount = Object.hasOwn(drawCall, \"vertexCount\");\n if (hasIndexCount === hasVertexCount) fail(\"draw requires exactly one of indexCount or vertexCount\");\n const indexed = hasIndexCount;\n const count = indexed ? drawCall.indexCount : drawCall.vertexCount;\n if (!Number.isSafeInteger(count) || count < 0 || count > MAX_GPU_SIZE_32)\n {\n fail(`draw ${indexed ? \"indexCount\" : \"vertexCount\"} must be a GPUSize32 value`);\n }\n const uintValue = (key, fallback) =>\n {\n const value = Object.hasOwn(drawCall, key) ? drawCall[key] : fallback;\n if (!Number.isSafeInteger(value) || value < 0 || value > MAX_GPU_SIZE_32)\n {\n fail(`draw ${key} must be a GPUSize32 value`);\n }\n return value;\n };\n const normalizedDraw = indexed\n ? {\n indexCount: count,\n instanceCount: uintValue(\"instanceCount\", 1),\n firstIndex: uintValue(\"firstIndex\", 0),\n baseVertex: Object.hasOwn(drawCall, \"baseVertex\") ? drawCall.baseVertex : 0,\n firstInstance: uintValue(\"firstInstance\", 0)\n }\n : {\n vertexCount: count,\n instanceCount: uintValue(\"instanceCount\", 1),\n firstVertex: uintValue(\"firstVertex\", 0),\n firstInstance: uintValue(\"firstInstance\", 0)\n };\n if (indexed && (!Number.isSafeInteger(normalizedDraw.baseVertex)\n || normalizedDraw.baseVertex < MIN_GPU_SIGNED_OFFSET_32\n || normalizedDraw.baseVertex > MAX_GPU_SIGNED_OFFSET_32))\n {\n fail(\"draw baseVertex must be a GPUSignedOffset32 value\");\n }\n const suppliedIndexBuffer = geometryRecord?.indexBuffer || options.indexBuffer;\n if (!indexed && suppliedIndexBuffer) fail(\"non-indexed draw cannot include an index buffer\");\n if (indexed && (!suppliedIndexBuffer?.buffer || !suppliedIndexBuffer.format)) fail(\"indexed draw requires an index buffer and format\");\n const indexBuffer = indexed ? { ...suppliedIndexBuffer } : null;\n if (indexBuffer && Object.hasOwn(indexBuffer, \"offset\") && (!Number.isSafeInteger(indexBuffer.offset) || indexBuffer.offset < 0)) fail(\"draw has an invalid index-buffer offset\");\n if (indexBuffer && Object.hasOwn(indexBuffer, \"size\") && (!Number.isSafeInteger(indexBuffer.size) || indexBuffer.size < 0)) fail(\"draw has an invalid index-buffer size\");\n if (geometryRecord)\n {\n if (indexed && normalizedDraw.firstIndex + normalizedDraw.indexCount > geometryRecord.indexBuffer.count)\n {\n fail(\"indexed draw exceeds geometry index capacity\");\n }\n if (!indexed)\n {\n for (const entry of geometryRecord.vertexBuffers.filter((candidate) => candidate.stepMode === \"vertex\"))\n {\n if (normalizedDraw.firstVertex + normalizedDraw.vertexCount > entry.capacity)\n {\n fail(`draw exceeds geometry vertex capacity at slot ${entry.slot}`);\n }\n }\n }\n for (const entry of geometryRecord.vertexBuffers.filter((candidate) => candidate.stepMode === \"instance\"))\n {\n if (normalizedDraw.firstInstance + normalizedDraw.instanceCount > entry.capacity)\n {\n fail(`draw exceeds geometry instance capacity at slot ${entry.slot}`);\n }\n }\n }\n\n const hasBindingSet = options.bindingSet != null;\n const hasResources = options.resources != null;\n if (hasBindingSet === hasResources)\n {\n fail(\"draw requires exactly one of bindingSet or resources\");\n }\n let bindingSetRecord = null;\n const adapterResources = new Set();\n let bindGroups;\n if (hasBindingSet)\n {\n bindingSetRecord = assertBindingSet(this, options.bindingSet, livePipeline);\n bindGroups = bindingSetRecord.bindGroups;\n }\n else\n {\n const resourceGroups = record.descriptor.groups.map((group) => ({\n group: group.group,\n entries: group.entries.map((entry) =>\n {\n const resource = findResource(options.resources, entry.identity);\n if (resource == null) fail(`draw is missing resource ${entry.identity}`);\n const resolved = resolveBindingResource(this, entry, resource);\n if (resolved.adapterRecord) adapterResources.add(resolved.adapterRecord);\n return { binding: entry.binding, resource: resolved.resource };\n })\n }));\n const device = this.GetDevice();\n bindGroups = resourceGroups.map((group) => device.createBindGroup({\n label: `${record.descriptor.key || \"pipeline\"}.group${group.group}.resources`,\n layout: record.bindGroupLayouts[group.group],\n entries: group.entries\n }));\n }\n\n const draw = {\n key: record.descriptor.key,\n generation: record.generation,\n livePipeline,\n bindGroups: bindGroups,\n dynamicOffsets: resolveDynamicOffsets(record, options.dynamicOffsets, this.GetDevice()),\n vertexBuffers: vertexBuffers,\n indexed,\n indexBuffer,\n draw: normalizedDraw\n };\n DRAWS.set(draw, {\n owner: this,\n generation: record.generation,\n record,\n bindingSetRecord,\n geometryRecord,\n adapterResources: Array.from(adapterResources),\n draw\n });\n return draw;\n }\n\n /**\n * Encodes one validated draw into a render pass.\n *\n * An optional `state` is a CjsWebgpuEncodeState the CALLER owns for the\n * lifetime of one render pass. When supplied, a set whose value is already\n * bound is skipped - Carbon's DX11 path does the same redundancy compare on\n * its shader program and its three state caches. Omitting it sets\n * everything, which is always correct and is what an unrelated caller gets.\n *\n * Deciding WHICH batches may share is not this method's business; that is\n * the dispatcher's grouping. This only honours a decision already made.\n */\n EncodeDraw(pass, draw, state = null)\n {\n const wrapper = DRAWS.get(draw);\n if (!wrapper || wrapper.owner !== this) fail(\"draw belongs to another device\");\n this._AssertGeneration(wrapper.generation);\n if (wrapper.bindingSetRecord?.destroyed) fail(\"draw binding set is destroyed\");\n assertAdapterResources(wrapper.bindingSetRecord?.adapterResources, \"draw binding set\");\n assertAdapterResources(wrapper.adapterResources, \"draw\");\n if (wrapper.geometryRecord?.destroyed) fail(\"draw geometry is destroyed\");\n if (!pass || typeof pass.setPipeline !== \"function\") fail(\"a GPURenderPassEncoder is required\");\n if (state !== null && !(state instanceof CjsWebgpuEncodeState))\n {\n throw new TypeError(\"CjsWebgpuDevice.EncodeDraw state must be a CjsWebgpuEncodeState or null.\");\n }\n const encodeState = state === null ? null : state.Require(pass);\n\n if (!encodeState || encodeState.NeedsPipeline(draw.livePipeline.pipeline))\n {\n pass.setPipeline(draw.livePipeline.pipeline);\n }\n draw.bindGroups.forEach((bindGroup, group) =>\n {\n const dynamicOffsets = draw.dynamicOffsets?.[group] ?? null;\n // A dynamic group is re-set every draw even when the bind group object is\n // unchanged, because the OFFSETS are what differ between two objects\n // sharing one ring buffer. Eliding it would draw them all at the same\n // slot.\n if (dynamicOffsets)\n {\n encodeState?.NeedsBindGroup(group, bindGroup);\n pass.setBindGroup(group, bindGroup, dynamicOffsets);\n }\n else if (!encodeState || encodeState.NeedsBindGroup(group, bindGroup))\n {\n pass.setBindGroup(group, bindGroup);\n }\n });\n if (!encodeState || encodeState.NeedsVertexBuffers(draw.vertexBuffers))\n {\n for (const entry of draw.vertexBuffers)\n {\n if (entry.size === undefined) pass.setVertexBuffer(entry.slot, entry.buffer, entry.offset ?? 0);\n else pass.setVertexBuffer(entry.slot, entry.buffer, entry.offset ?? 0, entry.size);\n }\n }\n if (draw.indexed)\n {\n if (!encodeState || encodeState.NeedsIndexBuffer(draw.indexBuffer))\n {\n if (draw.indexBuffer.size === undefined)\n {\n pass.setIndexBuffer(draw.indexBuffer.buffer, draw.indexBuffer.format, draw.indexBuffer.offset ?? 0);\n }\n else\n {\n pass.setIndexBuffer(draw.indexBuffer.buffer, draw.indexBuffer.format, draw.indexBuffer.offset ?? 0, draw.indexBuffer.size);\n }\n }\n pass.drawIndexed(\n draw.draw.indexCount,\n draw.draw.instanceCount,\n draw.draw.firstIndex,\n draw.draw.baseVertex,\n draw.draw.firstInstance\n );\n }\n else\n {\n pass.draw(\n draw.draw.vertexCount,\n draw.draw.instanceCount,\n draw.draw.firstVertex,\n draw.draw.firstInstance\n );\n }\n }\n\n /**\n * Submits command buffers to the ready device queue.\n */\n Submit(commandBuffers)\n {\n this.GetDevice().queue.submit(commandBuffers);\n }\n\n /**\n * Acquires or accepts a replacement adapter/device and advances the device\n * generation.\n */\n async Recreate(options = {})\n {\n if (this._state === \"destroyed\") fail(\"cannot recreate a destroyed device\");\n const requestSerial = ++this._recreateSerial;\n const lifecycleVersion = this._lifecycleVersion;\n const previous = this._device;\n const gpu = options.gpu || this._gpu;\n if (!gpu || typeof gpu.requestAdapter !== \"function\") fail(\"recreation requires the original GPU provider\");\n const adapterOptions = Object.hasOwn(options, \"adapterOptions\") ? options.adapterOptions : this._adapterOptions;\n const deviceDescriptor = Object.hasOwn(options, \"deviceDescriptor\") ? options.deviceDescriptor : this._deviceDescriptor;\n const adapter = options.adapter || await gpu.requestAdapter(adapterOptions);\n if (!adapter) fail(\"requestAdapter returned null during recreation\");\n const device = options.device || await adapter.requestDevice(deviceDescriptor);\n if (this._state === \"destroyed\" || this._lifecycleVersion !== lifecycleVersion || this._recreateSerial !== requestSerial)\n {\n if (device !== previous && device !== this._device && typeof device?.destroy === \"function\") device.destroy();\n fail(\"recreation was superseded by another lifecycle change\");\n }\n this._gpu = gpu;\n this._adapter = adapter;\n this._device = device;\n this._adapterOptions = adapterOptions;\n this._deviceDescriptor = deviceDescriptor;\n this._generation += 1;\n this._samplerCache = new Map();\n // A pipeline built for a device that is gone is not repairable.\n this._preparedCache.Clear();\n this._renderPipelineCache.Clear();\n this._state = \"ready\";\n this._lostInfo = null;\n this._WatchDevice(device, this._generation);\n if (previous && previous !== device && typeof previous.destroy === \"function\") previous.destroy();\n return this;\n }\n\n /**\n * Transitions the boundary to destroyed, invalidates its generation, and\n * destroys the native device.\n */\n Destroy()\n {\n if (this._state === \"destroyed\") return;\n const device = this._device;\n this._lifecycleVersion += 1;\n this._recreateSerial += 1;\n this._state = \"destroyed\";\n this._generation += 1;\n this._samplerCache.clear();\n this._preparedCache.Clear();\n this._renderPipelineCache.Clear();\n this._device = null;\n if (typeof device?.destroy === \"function\") device.destroy();\n }\n\n /**\n * Throws unless the boundary has a ready native device.\n */\n _AssertReady()\n {\n if (this._state !== \"ready\" || !this._device) fail(`device is ${this._state}`);\n }\n\n /**\n * Throws unless an object generation matches the current ready device.\n */\n _AssertGeneration(generation)\n {\n this._AssertReady();\n if (generation !== this._generation) fail(`object belongs to stale device generation ${generation}`);\n }\n\n /**\n * Queues a validation-sensitive operation after all previously queued\n * operations settle.\n */\n _SerializeValidation(operation)\n {\n const run = this._validationTail.then(operation, operation);\n this._validationTail = run.then(() => undefined, () => undefined);\n return run;\n }\n\n /**\n * Tracks loss for one device generation and accepts only a still-current\n * loss event.\n */\n _WatchDevice(device, generation)\n {\n if (!device?.lost || typeof device.lost.then !== \"function\") return;\n device.lost.then((info) =>\n {\n if (this._device !== device || this._generation !== generation || this._state !== \"ready\") return;\n this._state = \"lost\";\n this._lostInfo = info || null;\n this._samplerCache.clear();\n this._preparedCache.Clear();\n this._renderPipelineCache.Clear();\n this._onLost?.(this._lostInfo, generation);\n }).catch(() => undefined);\n }\n}\n"],"names":["PREPARED_PIPELINES","WeakMap","LIVE_PIPELINES","BINDING_SETS","GEOMETRIES","TEXTURES","SAMPLERS","RESOURCE_BUNDLES","DRAWS","DEVICE_BUFFERS","MAX_GPU_SIZE_32","MIN_GPU_SIGNED_OFFSET_32","MAX_GPU_SIGNED_OFFSET_32","VERTEX_FORMAT_BYTES","Map","TEXTURE_VIEW_DIMENSIONS","Set","SAMPLER_ADDRESS_MODES","SAMPLER_FILTER_MODES","SAMPLER_COMPARE_FUNCTIONS","SELECTED_SAMPLER_PAYLOAD_KEYS","SELECTED_SAMPLER_REQUIRED_KEYS","Object","freeze","RGBA8_TEXTURE_PAYLOAD_KEYS","fail","message","Error","asPipelineJson","pipeline","ToJSON","normalizeStageName","value","String","bindingIdentity","binding","resourceKind","Number","isInteger","registerSpace","registerIndex","identity","undefined","scopeIdentity","visibility","Array","isArray","from","map","length","assertPlainObject","label","prototype","getPrototypeOf","getOwnPropertySymbols","frozenRecord","entries","result","key","defineProperty","configurable","enumerable","writable","snapshotPlain","entry","samePlain","left","right","is","every","index","leftKeys","keys","sort","rightKeys","assertKeys","allowed","has","binaryView","ArrayBuffer","isView","Uint8Array","buffer","byteOffset","byteLength","slice","normalizeVertexLayout","isSafeInteger","arrayStride","stepMode","attributes","locations","attribute","attributeLabel","shaderLocation","add","offset","byteSize","get","format","alignment","Math","min","canonicalVertexLayouts","values","layouts","shaderLocations","layout","normalizeGeometry","options","vertexBuffers","slot","data","indexBuffer","elementSize","alignedBufferSize","ceil","validateGeometryLimits","plan","device","limits","exceeds","name","isFinite","maxVertexBuffers","attributeCount","reduce","total","maxVertexAttributes","maxVertexBufferArrayStride","maxBufferSize","normalizeTexture","width","height","PlanTextureUpload","layers","hasOwn","viewDimension","mipLevelCount","bytesPerRow","writes","blockBytes","expectedBytes","rowsPerImage","formatName","validateTextureLimits","limit","maxTextureDimension2D","layerLimit","maxTextureArrayLayers","normalizeSampler","enumValue","fallback","addressModeU","addressModeV","addressModeW","magFilter","minFilter","mipmapFilter","numberValue","input","fround","lodMinClamp","lodMaxClamp","maxAnisotropy","compare","semantic","descriptor","cacheKey","JSON","stringify","isComparison","isFiltering","normalizeResourceBundle","trim","definitions","category","kind","push","normalizeResourceRealizationOptions","adapterKey","normalizeRgba8TextureRealizationOptions","textureKey","bundleLabel","normalizeSamplerRealizationOptions","samplerKey","mapRgba8TexturePayload","payloadType","sourceFormat","containerOnly","isDecoded","rgbaDecodeSupported","pixelFormat","strideBytes","activeRowBytes","origin","colorSpace","alphaMode","texture","textures","mapSamplerPayload","_payloadType","normalized","sampler","samplers","assertRealizationResource","resource","CjsResource","cloneDiagnostics","messages","type","lineNum","linePos","visibilityFlags","shaderStage","names","flags","VERTEX","FRAGMENT","bindingLayout","sourceTruth","Boolean","dynamic","hasDynamicOffset","filter","normalizePipeline","stages","shaderModules","vertex","stageName","fragment","shader","wgsl","entryPoint","groups","bindGroups","group","slots","identities","baseScopes","normalizedGroups","groupIndex","bindings","baseIdentity","set","scopes","some","scope","stageSnapshot","findResource","resources","resourceEntries","validateRecipe","recipe","buffers","targets","primitive","assertPrepared","owner","prepared","record","_AssertGeneration","generation","assertLive","livePipeline","assertBindingSet","bindingSet","destroyed","assertAdapterResources","adapterResources","assertGeometry","geometry","assertTexture","assertSampler","resolveBindingResource","textureRecord","multisampled","sampleType","view","adapterRecord","samplerRecord","compatible","resolveDynamicOffsets","offsets","supplied","perGroup","consumed","anyDynamic","first","second","minUniformBufferOffsetAlignment","minStorageBufferOffsetAlignment","records","popValidationScope","state","open","popErrorScope","CjsWebgpuDevice","Request","gpu","hasOwnProperty","call","globalThis","navigator","adapter","requestAdapter","adapterOptions","requestDevice","deviceDescriptor","constructor","createShaderModule","GPUShaderStage","_gpu","_adapter","_device","_adapterOptions","_deviceDescriptor","_shaderStage","_bufferUsage","bufferUsage","GPUBufferUsage","_textureUsage","textureUsage","GPUTextureUsage","_samplerCache","_preparedCache","CjsWebgpuPipelineCache","_renderPipelineCache","_resourceRealizations","_onLost","onLost","_generation","_state","_lostInfo","_validationTail","Promise","resolve","_recreateSerial","_lifecycleVersion","_WatchDevice","GetAdapter","GetDevice","_AssertReady","GetBufferUsage","GetTextureUsage","GetGeneration","GetLostInfo","IsLost","IsReady","PreparePipeline","prepareOptions","CanonicalKey","Resolve","_SerializeValidation","pushErrorScope","modules","module","code","bindGroupLayouts","createBindGroupLayout","pipelineLayout","createPipelineLayout","validationPromise","compilationPromise","all","getCompilationInfo","compilation","validationError","diagnostics","stage","errors","warnings","warningsAsErrors","kinds","join","error","catch","CreateRenderPipeline","pipelineOrPrepared","pipelineRecipe","RenderPipelineKey","pipelineDescriptor","depthStencil","multisample","pipelinePromise","createRenderPipelineAsync","createRenderPipeline","gpuPipeline","CreateGeometry","usage","INDEX","COPY_DST","createBuffer","queue","writeBuffer","ownedBuffers","validation","memory","popScope","upload","size","bytes","capacity","count","memoryPromise","memoryError","vertexBufferLayouts","minimumCapacity","capacities","vertexBufferCount","vertexCapacity","instanceCapacity","indexed","indexFormat","indexCount","Destroy","DestroyGeometry","destroy","CreateTexture","TEXTURE_BINDING","createTexture","writeTexture","AssertFormatFeature","gpuTexture","depthOrArrayLayers","sampleCount","dimension","copyWidth","copyHeight","write","mipLevel","level","x","y","z","layer","createView","isSRGB","DestroyTexture","CreateSampler","createSampler","cached","nativeSampler","DestroySampler","CreateResourceBundle","tasks","definition","promise","results","allSettled","task","fulfilled","flatMap","status","failure","find","generationError","reason","categoryEntries","geometries","bundle","DestroyResourceBundle","firstError","RealizeRgba8Texture","GetPayload","RealizeResource","RealizeSampler","operations","existing","_RealizeResource","remove","delete","then","stale","assertOwned","isUsable","IsCurrent","displaced","GetAdapterResource","MarkPreparing","candidate","committed","SetAdapterResource","MarkPrepared","current","DestroyAdapterResource","MarkLoaded","CreateBindingSet","uniformInputs","uniformData","externalInputs","uniformPlans","externalPlans","minBindingSize","UNIFORM","uniforms","createBindGroup","Update","UpdateBindingSet","DestroyBindingSet","CreateDeviceBuffer","aligned","handle","requestedSize","WriteDeviceBuffer","GetDeviceBuffer","updates","uniform","CreateDraw","geometryRecord","pipelineVertexLayouts","vertexSlots","drawCall","draw","hasIndexCount","hasVertexCount","vertexCount","uintValue","normalizedDraw","instanceCount","firstIndex","baseVertex","firstInstance","firstVertex","suppliedIndexBuffer","hasBindingSet","hasResources","bindingSetRecord","resourceGroups","resolved","dynamicOffsets","EncodeDraw","pass","wrapper","setPipeline","CjsWebgpuEncodeState","TypeError","encodeState","Require","NeedsPipeline","forEach","bindGroup","NeedsBindGroup","setBindGroup","NeedsVertexBuffers","setVertexBuffer","NeedsIndexBuffer","setIndexBuffer","drawIndexed","Submit","commandBuffers","submit","Recreate","requestSerial","lifecycleVersion","previous","Clear","clear","operation","run","lost","info"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsWebgpuDevice.js","sources":["../../../../src/trinityal/webgpu/CjsWebgpuDevice.js"],"sourcesContent":["import { HostBitmap } from \"#imageio\";\r\nimport { CjsImageFormat } from \"#resource/format/CjsImageFormat\";\r\nimport { CjsSchema } from \"#schema\";\r\nimport { PixelFormat } from \"#consts/render-context\";\r\nimport { CjsResource } from \"#resource/CjsResource\";\r\nimport { CanonicalKey, CjsWebgpuPipelineCache, RenderPipelineKey } from \"./core/CjsWebgpuPipelineCache.js\";\r\nimport { AssertFormatFeature, PlanTextureUpload } from \"./core/textureLayout.js\";\r\nimport { CjsWebgpuEncodeState } from \"./core/CjsWebgpuEncodeState.js\";\r\n\r\nconst PREPARED_PIPELINES = new WeakMap();\r\nconst LIVE_PIPELINES = new WeakMap();\r\nconst BINDING_SETS = new WeakMap();\r\nconst GEOMETRIES = new WeakMap();\r\nconst TEXTURES = new WeakMap();\r\nconst SAMPLERS = new WeakMap();\r\nconst RESOURCE_BUNDLES = new WeakMap();\r\nconst DRAWS = new WeakMap();\r\nconst DEVICE_BUFFERS = new WeakMap();\r\nconst MAX_GPU_SIZE_32 = 0xFFFFFFFF;\r\nconst MIN_GPU_SIGNED_OFFSET_32 = -0x80000000;\r\nconst MAX_GPU_SIGNED_OFFSET_32 = 0x7FFFFFFF;\r\nconst VERTEX_FORMAT_BYTES = new Map([\r\n [ \"uint8\", 1 ], [ \"sint8\", 1 ], [ \"unorm8\", 1 ], [ \"snorm8\", 1 ],\r\n [ \"uint8x2\", 2 ], [ \"uint8x4\", 4 ],\r\n [ \"sint8x2\", 2 ], [ \"sint8x4\", 4 ],\r\n [ \"unorm8x2\", 2 ], [ \"unorm8x4\", 4 ], [ \"unorm8x4-bgra\", 4 ],\r\n [ \"snorm8x2\", 2 ], [ \"snorm8x4\", 4 ],\r\n [ \"uint16\", 2 ], [ \"sint16\", 2 ], [ \"unorm16\", 2 ], [ \"snorm16\", 2 ], [ \"float16\", 2 ],\r\n [ \"uint16x2\", 4 ], [ \"uint16x4\", 8 ],\r\n [ \"sint16x2\", 4 ], [ \"sint16x4\", 8 ],\r\n [ \"unorm16x2\", 4 ], [ \"unorm16x4\", 8 ],\r\n [ \"snorm16x2\", 4 ], [ \"snorm16x4\", 8 ],\r\n [ \"float16x2\", 4 ], [ \"float16x4\", 8 ],\r\n [ \"float32\", 4 ], [ \"float32x2\", 8 ], [ \"float32x3\", 12 ], [ \"float32x4\", 16 ],\r\n [ \"uint32\", 4 ], [ \"uint32x2\", 8 ], [ \"uint32x3\", 12 ], [ \"uint32x4\", 16 ],\r\n [ \"sint32\", 4 ], [ \"sint32x2\", 8 ], [ \"sint32x3\", 12 ], [ \"sint32x4\", 16 ],\r\n [ \"unorm10-10-10-2\", 4 ]\r\n]);\r\nconst TEXTURE_VIEW_DIMENSIONS = new Set([ \"2d\", \"2d-array\", \"cube\", \"cube-array\" ]);\r\nconst TEXTURE_FORMATS = new Map([\r\n [ \"rgba8unorm\", Object.freeze({ bytesPerPixel: 4, isSRGB: false }) ],\r\n [ \"rgba8unorm-srgb\", Object.freeze({ bytesPerPixel: 4, isSRGB: true }) ]\r\n]);\r\nconst SAMPLER_ADDRESS_MODES = new Set([ \"clamp-to-edge\", \"repeat\", \"mirror-repeat\" ]);\r\nconst SAMPLER_FILTER_MODES = new Set([ \"nearest\", \"linear\" ]);\r\nconst SAMPLER_COMPARE_FUNCTIONS = new Set([\r\n \"never\", \"less\", \"equal\", \"less-equal\", \"greater\", \"not-equal\", \"greater-equal\", \"always\"\r\n]);\r\nconst SELECTED_SAMPLER_PAYLOAD_KEYS = new Set([\r\n \"payloadType\", \"label\", \"addressModeU\", \"addressModeV\", \"addressModeW\",\r\n \"magFilter\", \"minFilter\", \"mipmapFilter\", \"lodMinClamp\", \"lodMaxClamp\",\r\n \"compare\", \"maxAnisotropy\"\r\n]);\r\nconst SELECTED_SAMPLER_REQUIRED_KEYS = Object.freeze([\r\n \"addressModeU\", \"addressModeV\", \"addressModeW\", \"magFilter\", \"minFilter\",\r\n \"mipmapFilter\", \"lodMinClamp\", \"lodMaxClamp\", \"maxAnisotropy\"\r\n]);\r\nconst RGBA8_TEXTURE_PAYLOAD_KEYS = new Set([\r\n \"payloadType\", \"sourceFormat\", \"width\", \"height\", \"pixelFormat\", \"data\",\r\n \"strideBytes\", \"origin\", \"colorSpace\", \"alphaMode\", \"containerOnly\",\r\n \"isDecoded\", \"rgbaDecodeSupported\"\r\n]);\r\n\r\nfunction fail(message)\r\n{\r\n throw new Error(`CjsWebgpuDevice: ${message}`);\r\n}\r\n\r\nfunction asPipelineJson(pipeline)\r\n{\r\n if (pipeline && typeof pipeline.ToJSON === \"function\") return pipeline.ToJSON();\r\n if (!pipeline || typeof pipeline !== \"object\") fail(\"pipeline must be a CjsWebgpuPipeline or plain descriptor\");\r\n return pipeline;\r\n}\r\n\r\nfunction normalizeStageName(value)\r\n{\r\n if (value === \"pixel\" || value === \"fragment\") return \"fragment\";\r\n if (value === \"vertex\") return \"vertex\";\r\n return String(value || \"\");\r\n}\r\n\r\nfunction bindingIdentity(binding)\r\n{\r\n if (!binding?.resourceKind || !Number.isInteger(binding.registerSpace) || !Number.isInteger(binding.registerIndex))\r\n {\r\n fail(\"canonical binding has an invalid D3D identity\");\r\n }\r\n const identity = `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\r\n if (binding.identity !== undefined && binding.identity !== identity)\r\n {\r\n fail(`canonical binding has inconsistent D3D identity ${binding.identity}`);\r\n }\r\n if (binding.scopeIdentity !== undefined\r\n && (typeof binding.scopeIdentity !== \"string\" || !binding.scopeIdentity))\r\n {\r\n fail(`canonical binding has invalid scope identity ${binding.scopeIdentity || \"<empty>\"}`);\r\n }\r\n const scopeIdentity = binding.scopeIdentity === undefined ? identity : binding.scopeIdentity;\r\n const visibility = Array.isArray(binding.visibility)\r\n ? Array.from(new Set(binding.visibility.map(normalizeStageName)))\r\n : [];\r\n if (typeof scopeIdentity !== \"string\"\r\n || (scopeIdentity !== identity\r\n && (visibility.length !== 1 || scopeIdentity !== `${identity}@${visibility[0]}`)))\r\n {\r\n fail(`canonical binding has invalid scope identity ${scopeIdentity || \"<empty>\"}`);\r\n }\r\n return scopeIdentity;\r\n}\r\n\r\n\r\nfunction assertPlainObject(value, label)\r\n{\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) fail(`${label} must be a plain object`);\r\n const prototype = Object.getPrototypeOf(value);\r\n if (prototype !== Object.prototype && prototype !== null) fail(`${label} must be a plain object`);\r\n if (Object.getOwnPropertySymbols(value).length) fail(`${label} cannot have symbol keys`);\r\n}\r\n\r\nfunction frozenRecord(entries)\r\n{\r\n const result = {};\r\n for (const [ key, value ] of entries)\r\n {\r\n Object.defineProperty(result, key, {\r\n configurable: false,\r\n enumerable: true,\r\n writable: false,\r\n value\r\n });\r\n }\r\n return result;\r\n}\r\n\r\nfunction snapshotPlain(value)\r\n{\r\n if (!value || typeof value !== \"object\") return value;\r\n if (Array.isArray(value)) return value.map(snapshotPlain);\r\n const result = {};\r\n for (const [ key, entry ] of Object.entries(value)) result[key] = snapshotPlain(entry);\r\n return result;\r\n}\r\n\r\nfunction samePlain(left, right)\r\n{\r\n if (Object.is(left, right)) return true;\r\n if (!left || !right || typeof left !== \"object\" || typeof right !== \"object\") return false;\r\n if (Array.isArray(left) || Array.isArray(right))\r\n {\r\n return Array.isArray(left) && Array.isArray(right) && left.length === right.length\r\n && left.every((entry, index) => samePlain(entry, right[index]));\r\n }\r\n const leftKeys = Object.keys(left).sort();\r\n const rightKeys = Object.keys(right).sort();\r\n return leftKeys.length === rightKeys.length\r\n && leftKeys.every((key, index) => key === rightKeys[index] && samePlain(left[key], right[key]));\r\n}\r\n\r\nfunction assertKeys(value, allowed, label)\r\n{\r\n for (const key of Object.keys(value))\r\n {\r\n if (!allowed.has(key)) fail(`${label} has unsupported ${key}`);\r\n }\r\n}\r\n\r\nfunction binaryView(value, label)\r\n{\r\n if (ArrayBuffer.isView(value))\r\n {\r\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength).slice();\r\n }\r\n if (value instanceof ArrayBuffer) return new Uint8Array(value).slice();\r\n fail(`${label} data must be an ArrayBuffer or ArrayBufferView`);\r\n}\r\n\r\nfunction normalizeVertexLayout(value, label)\r\n{\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) fail(`${label} layout must be an object`);\r\n assertKeys(value, new Set([ \"arrayStride\", \"stepMode\", \"attributes\" ]), `${label} layout`);\r\n if (!Number.isSafeInteger(value.arrayStride) || value.arrayStride < 4 || value.arrayStride % 4 !== 0)\r\n {\r\n fail(`${label} arrayStride must be a positive multiple of 4`);\r\n }\r\n if (value.stepMode !== undefined && value.stepMode !== \"vertex\" && value.stepMode !== \"instance\")\r\n {\r\n fail(`${label} stepMode must be vertex or instance`);\r\n }\r\n if (!Array.isArray(value.attributes) || !value.attributes.length) fail(`${label} attributes must be a non-empty array`);\r\n const locations = new Set();\r\n const attributes = value.attributes.map((attribute, index) =>\r\n {\r\n const attributeLabel = `${label} attribute ${index}`;\r\n if (!attribute || typeof attribute !== \"object\" || Array.isArray(attribute)) fail(`${attributeLabel} must be an object`);\r\n assertKeys(attribute, new Set([ \"shaderLocation\", \"offset\", \"format\" ]), attributeLabel);\r\n if (!Number.isSafeInteger(attribute.shaderLocation) || attribute.shaderLocation < 0\r\n || attribute.shaderLocation > MAX_GPU_SIZE_32)\r\n {\r\n fail(`${attributeLabel} shaderLocation must be nonnegative`);\r\n }\r\n if (locations.has(attribute.shaderLocation)) fail(`${label} duplicates shader location ${attribute.shaderLocation}`);\r\n locations.add(attribute.shaderLocation);\r\n if (!Number.isSafeInteger(attribute.offset) || attribute.offset < 0)\r\n {\r\n fail(`${attributeLabel} offset must be nonnegative`);\r\n }\r\n const byteSize = VERTEX_FORMAT_BYTES.get(attribute.format);\r\n if (!byteSize) fail(`${attributeLabel} has unsupported GPUVertexFormat ${String(attribute.format || \"<empty>\")}`);\r\n const alignment = Math.min(4, byteSize);\r\n if (attribute.offset % alignment !== 0)\r\n {\r\n fail(`${attributeLabel} offset must be aligned to ${alignment} bytes for ${attribute.format}`);\r\n }\r\n if (attribute.offset + byteSize > value.arrayStride)\r\n {\r\n fail(`${attributeLabel} exceeds arrayStride`);\r\n }\r\n return {\r\n shaderLocation: attribute.shaderLocation,\r\n offset: attribute.offset,\r\n format: attribute.format\r\n };\r\n }).sort((left, right) => left.shaderLocation - right.shaderLocation);\r\n return snapshotPlain({\r\n arrayStride: value.arrayStride,\r\n stepMode: value.stepMode || \"vertex\",\r\n attributes\r\n });\r\n}\r\n\r\nfunction canonicalVertexLayouts(values, label)\r\n{\r\n if (!Array.isArray(values)) fail(`${label} must be an array`);\r\n const layouts = values.map((value, index) => normalizeVertexLayout(value, `${label} slot ${index}`));\r\n const shaderLocations = new Set();\r\n for (const layout of layouts)\r\n {\r\n for (const attribute of layout.attributes)\r\n {\r\n if (shaderLocations.has(attribute.shaderLocation))\r\n {\r\n fail(`${label} duplicates shader location ${attribute.shaderLocation}`);\r\n }\r\n shaderLocations.add(attribute.shaderLocation);\r\n }\r\n }\r\n return layouts;\r\n}\r\n\r\nfunction normalizeGeometry(options)\r\n{\r\n if (!options || typeof options !== \"object\" || Array.isArray(options)) fail(\"geometry options must be an object\");\r\n assertKeys(options, new Set([ \"label\", \"vertexBuffers\", \"indexBuffer\" ]), \"geometry\");\r\n if (options.label !== undefined && (typeof options.label !== \"string\" || !options.label))\r\n {\r\n fail(\"geometry label must be a non-empty string\");\r\n }\r\n if (!Array.isArray(options.vertexBuffers) || !options.vertexBuffers.length)\r\n {\r\n fail(\"geometry vertexBuffers must be a non-empty array\");\r\n }\r\n const vertexBuffers = options.vertexBuffers.map((entry, index) =>\r\n {\r\n const label = `geometry vertex buffer ${index}`;\r\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) fail(`${label} must be an object`);\r\n assertKeys(entry, new Set([ \"slot\", \"label\", \"data\", \"layout\" ]), label);\r\n if (!Number.isInteger(entry.slot) || entry.slot < 0) fail(`${label} slot must be nonnegative`);\r\n if (entry.label !== undefined && (typeof entry.label !== \"string\" || !entry.label))\r\n {\r\n fail(`${label} label must be a non-empty string`);\r\n }\r\n const data = binaryView(entry.data, label);\r\n if (!data.byteLength) fail(`${label} data must not be empty`);\r\n const layout = normalizeVertexLayout(entry.layout, label);\r\n if (data.byteLength % layout.arrayStride !== 0)\r\n {\r\n fail(`${label} byte length must be a multiple of arrayStride`);\r\n }\r\n return { slot: entry.slot, label: entry.label || null, data, layout };\r\n }).sort((left, right) => left.slot - right.slot);\r\n for (let index = 0; index < vertexBuffers.length; index += 1)\r\n {\r\n if (vertexBuffers[index].slot !== index) fail(\"geometry vertex-buffer slots must be unique and contiguous from 0\");\r\n }\r\n const shaderLocations = new Set();\r\n for (const entry of vertexBuffers)\r\n {\r\n for (const attribute of entry.layout.attributes)\r\n {\r\n if (shaderLocations.has(attribute.shaderLocation))\r\n {\r\n fail(`geometry duplicates shader location ${attribute.shaderLocation} across vertex buffers`);\r\n }\r\n shaderLocations.add(attribute.shaderLocation);\r\n }\r\n }\r\n\r\n let indexBuffer = null;\r\n if (options.indexBuffer != null)\r\n {\r\n const entry = options.indexBuffer;\r\n if (typeof entry !== \"object\" || Array.isArray(entry)) fail(\"geometry index buffer must be an object\");\r\n assertKeys(entry, new Set([ \"label\", \"data\", \"format\" ]), \"geometry index buffer\");\r\n if (entry.label !== undefined && (typeof entry.label !== \"string\" || !entry.label))\r\n {\r\n fail(\"geometry index-buffer label must be a non-empty string\");\r\n }\r\n if (entry.format !== \"uint16\" && entry.format !== \"uint32\")\r\n {\r\n fail(\"geometry index-buffer format must be uint16 or uint32\");\r\n }\r\n const data = binaryView(entry.data, \"geometry index buffer\");\r\n const elementSize = entry.format === \"uint16\" ? 2 : 4;\r\n if (!data.byteLength || data.byteLength % elementSize !== 0)\r\n {\r\n fail(`geometry ${entry.format} index-buffer data has an invalid byte length`);\r\n }\r\n indexBuffer = { label: entry.label || null, data, format: entry.format };\r\n }\r\n return {\r\n label: options.label || \"geometry\",\r\n vertexBuffers,\r\n indexBuffer\r\n };\r\n}\r\n\r\nfunction alignedBufferSize(byteLength)\r\n{\r\n return Math.ceil(byteLength / 4) * 4;\r\n}\r\n\r\nfunction validateGeometryLimits(plan, device)\r\n{\r\n const limits = device?.limits || {};\r\n const exceeds = (name, value) => Number.isFinite(limits[name]) && value > limits[name];\r\n if (exceeds(\"maxVertexBuffers\", plan.vertexBuffers.length))\r\n {\r\n fail(`geometry exceeds device maxVertexBuffers ${limits.maxVertexBuffers}`);\r\n }\r\n const attributeCount = plan.vertexBuffers.reduce((total, entry) => total + entry.layout.attributes.length, 0);\r\n if (exceeds(\"maxVertexAttributes\", attributeCount))\r\n {\r\n fail(`geometry exceeds device maxVertexAttributes ${limits.maxVertexAttributes}`);\r\n }\r\n for (const entry of plan.vertexBuffers)\r\n {\r\n if (exceeds(\"maxVertexBufferArrayStride\", entry.layout.arrayStride))\r\n {\r\n fail(`geometry vertex buffer ${entry.slot} exceeds device maxVertexBufferArrayStride ${limits.maxVertexBufferArrayStride}`);\r\n }\r\n if (Number.isFinite(limits.maxVertexAttributes))\r\n {\r\n for (const attribute of entry.layout.attributes)\r\n {\r\n if (attribute.shaderLocation >= limits.maxVertexAttributes)\r\n {\r\n fail(`geometry shader location ${attribute.shaderLocation} exceeds the device vertex-attribute range`);\r\n }\r\n }\r\n }\r\n if (exceeds(\"maxBufferSize\", alignedBufferSize(entry.data.byteLength)))\r\n {\r\n fail(`geometry vertex buffer ${entry.slot} exceeds device maxBufferSize ${limits.maxBufferSize}`);\r\n }\r\n }\r\n if (plan.indexBuffer && exceeds(\"maxBufferSize\", alignedBufferSize(plan.indexBuffer.data.byteLength)))\r\n {\r\n fail(`geometry index buffer exceeds device maxBufferSize ${limits.maxBufferSize}`);\r\n }\r\n}\r\n\r\nfunction normalizeTexture(options)\r\n{\r\n if (!options || typeof options !== \"object\" || Array.isArray(options)) fail(\"texture options must be an object\");\r\n assertKeys(\r\n options,\r\n new Set([\r\n \"label\", \"width\", \"height\", \"layers\", \"viewDimension\", \"format\",\r\n \"bytesPerRow\", \"mipLevelCount\", \"data\"\r\n ]),\r\n \"texture\"\r\n );\r\n if (options.label !== undefined && (typeof options.label !== \"string\" || !options.label))\r\n {\r\n fail(\"texture label must be a non-empty string\");\r\n }\r\n if (!Number.isSafeInteger(options.width) || options.width < 1 || options.width > MAX_GPU_SIZE_32)\r\n {\r\n fail(\"texture width must be a positive GPUSize32 value\");\r\n }\r\n if (!Number.isSafeInteger(options.height) || options.height < 1 || options.height > MAX_GPU_SIZE_32)\r\n {\r\n fail(\"texture height must be a positive GPUSize32 value\");\r\n }\r\n // A 1-layer array view is legal and distinct from a plain 2D view: a shader\r\n // declaring texture_2d_array<f32> needs the array view whatever the layer\r\n // count, so the view dimension stays explicit rather than inferred.\r\n const plan = PlanTextureUpload({\r\n format: options.format,\r\n width: options.width,\r\n height: options.height,\r\n layers: Object.hasOwn(options, \"layers\") && options.layers !== undefined ? options.layers : undefined,\r\n viewDimension: Object.hasOwn(options, \"viewDimension\") && options.viewDimension !== undefined\r\n ? options.viewDimension\r\n : undefined,\r\n mipLevelCount: Object.hasOwn(options, \"mipLevelCount\") && options.mipLevelCount !== undefined\r\n ? options.mipLevelCount\r\n : undefined\r\n });\r\n\r\n // `bytesPerRow` remains accepted for a single-level image, where a caller may\r\n // legitimately hand over padded rows. It is checked against the tight stride\r\n // the format implies rather than trusted, and it has no meaning once a mip\r\n // chain is involved because each level has its own stride.\r\n let bytesPerRow = plan.writes[0].bytesPerRow;\r\n if (Object.hasOwn(options, \"bytesPerRow\") && options.bytesPerRow !== undefined)\r\n {\r\n if (plan.mipLevelCount > 1)\r\n {\r\n fail(\"texture bytesPerRow cannot be supplied with a mip chain; each level has its own stride\");\r\n }\r\n if (!Number.isSafeInteger(options.bytesPerRow) || options.bytesPerRow < 1\r\n || options.bytesPerRow > MAX_GPU_SIZE_32)\r\n {\r\n fail(\"texture bytesPerRow must be a positive GPUSize32 value\");\r\n }\r\n if (options.bytesPerRow < bytesPerRow || options.bytesPerRow % plan.format.blockBytes !== 0)\r\n {\r\n fail(`texture bytesPerRow must contain ${bytesPerRow} active bytes and align to the block size`);\r\n }\r\n bytesPerRow = options.bytesPerRow;\r\n }\r\n\r\n const expectedBytes = plan.mipLevelCount > 1\r\n ? plan.byteLength\r\n : bytesPerRow * plan.writes[0].rowsPerImage * plan.layers;\r\n if (!Number.isSafeInteger(expectedBytes)) fail(\"texture byte length exceeds the supported JavaScript range\");\r\n const data = binaryView(options.data, \"texture\");\r\n if (data.byteLength !== expectedBytes)\r\n {\r\n fail(`texture data must be exactly ${expectedBytes} bytes`);\r\n }\r\n\r\n return {\r\n label: options.label || \"texture\",\r\n width: plan.width,\r\n height: plan.height,\r\n layers: plan.layers,\r\n viewDimension: plan.viewDimension,\r\n mipLevelCount: plan.mipLevelCount,\r\n formatName: plan.formatName,\r\n format: plan.format,\r\n plan,\r\n bytesPerRow,\r\n data\r\n };\r\n}\r\n\r\nfunction validateTextureLimits(plan, device)\r\n{\r\n const limit = device?.limits?.maxTextureDimension2D;\r\n if (Number.isFinite(limit) && (plan.width > limit || plan.height > limit))\r\n {\r\n fail(`texture dimensions exceed device maxTextureDimension2D ${limit}`);\r\n }\r\n const layerLimit = device?.limits?.maxTextureArrayLayers;\r\n if (Number.isFinite(layerLimit) && plan.layers > layerLimit)\r\n {\r\n fail(`texture layers exceed device maxTextureArrayLayers ${layerLimit}`);\r\n }\r\n}\r\n\r\nfunction normalizeSampler(options)\r\n{\r\n if (!options || typeof options !== \"object\" || Array.isArray(options)) fail(\"sampler options must be an object\");\r\n const prototype = Object.getPrototypeOf(options);\r\n if (prototype !== Object.prototype && prototype !== null) fail(\"sampler options must be a plain object\");\r\n assertKeys(options, new Set([\r\n \"label\", \"addressModeU\", \"addressModeV\", \"addressModeW\", \"magFilter\", \"minFilter\",\r\n \"mipmapFilter\", \"lodMinClamp\", \"lodMaxClamp\", \"compare\", \"maxAnisotropy\"\r\n ]), \"sampler\");\r\n if (options.label !== undefined && (typeof options.label !== \"string\" || !options.label))\r\n {\r\n fail(\"sampler label must be a non-empty string\");\r\n }\r\n const enumValue = (name, allowed, fallback) =>\r\n {\r\n const value = Object.hasOwn(options, name) && options[name] !== undefined ? options[name] : fallback;\r\n if (!allowed.has(value)) fail(`sampler ${name} has unsupported ${String(value)}`);\r\n return value;\r\n };\r\n const addressModeU = enumValue(\"addressModeU\", SAMPLER_ADDRESS_MODES, \"clamp-to-edge\");\r\n const addressModeV = enumValue(\"addressModeV\", SAMPLER_ADDRESS_MODES, \"clamp-to-edge\");\r\n const addressModeW = enumValue(\"addressModeW\", SAMPLER_ADDRESS_MODES, \"clamp-to-edge\");\r\n const magFilter = enumValue(\"magFilter\", SAMPLER_FILTER_MODES, \"nearest\");\r\n const minFilter = enumValue(\"minFilter\", SAMPLER_FILTER_MODES, \"nearest\");\r\n const mipmapFilter = enumValue(\"mipmapFilter\", SAMPLER_FILTER_MODES, \"nearest\");\r\n const numberValue = (name, fallback) =>\r\n {\r\n const input = Object.hasOwn(options, name) && options[name] !== undefined ? options[name] : fallback;\r\n if (typeof input !== \"number\" || !Number.isFinite(input)) fail(`sampler ${name} must be finite`);\r\n const value = Math.fround(input);\r\n if (!Number.isFinite(value)) fail(`sampler ${name} must fit a finite float32 value`);\r\n return value === 0 ? 0 : value;\r\n };\r\n const lodMinClamp = numberValue(\"lodMinClamp\", 0);\r\n const lodMaxClamp = numberValue(\"lodMaxClamp\", 32);\r\n if (lodMinClamp < 0) fail(\"sampler lodMinClamp must be nonnegative\");\r\n if (lodMaxClamp < lodMinClamp) fail(\"sampler lodMaxClamp must be at least lodMinClamp\");\r\n const maxAnisotropy = Object.hasOwn(options, \"maxAnisotropy\") && options.maxAnisotropy !== undefined\r\n ? options.maxAnisotropy\r\n : 1;\r\n if (!Number.isInteger(maxAnisotropy) || maxAnisotropy < 1 || maxAnisotropy > 0xFFFF)\r\n {\r\n fail(\"sampler maxAnisotropy must be an integer from 1 through 65535\");\r\n }\r\n if (maxAnisotropy > 1\r\n && (magFilter !== \"linear\" || minFilter !== \"linear\" || mipmapFilter !== \"linear\"))\r\n {\r\n fail(\"sampler anisotropy requires linear magFilter, minFilter, and mipmapFilter\");\r\n }\r\n let compare;\r\n if (Object.hasOwn(options, \"compare\") && options.compare !== undefined)\r\n {\r\n compare = options.compare;\r\n if (!SAMPLER_COMPARE_FUNCTIONS.has(compare))\r\n {\r\n fail(`sampler compare has unsupported ${String(compare)}`);\r\n }\r\n }\r\n const label = options.label || \"sampler\";\r\n const semantic = {\r\n addressModeU,\r\n addressModeV,\r\n addressModeW,\r\n magFilter,\r\n minFilter,\r\n mipmapFilter,\r\n lodMinClamp,\r\n lodMaxClamp,\r\n ...(compare === undefined ? {} : { compare }),\r\n maxAnisotropy\r\n };\r\n return {\r\n label,\r\n descriptor: snapshotPlain({ label, ...semantic }),\r\n semantic: snapshotPlain(semantic),\r\n cacheKey: JSON.stringify(semantic),\r\n isComparison: compare !== undefined,\r\n isFiltering: magFilter === \"linear\" || minFilter === \"linear\" || mipmapFilter === \"linear\"\r\n };\r\n}\r\n\r\nfunction normalizeResourceBundle(options)\r\n{\r\n assertPlainObject(options, \"resource bundle options\");\r\n assertKeys(options, new Set([ \"label\", \"geometries\", \"textures\", \"samplers\" ]), \"resource bundle\");\r\n if (options.label !== undefined && (typeof options.label !== \"string\" || options.label.trim() === \"\"))\r\n {\r\n fail(\"resource bundle label must be a non-empty string\");\r\n }\r\n const label = options.label || \"resource bundle\";\r\n const definitions = [];\r\n for (const [ category, kind ] of [\r\n [ \"geometries\", \"geometry\" ],\r\n [ \"textures\", \"texture\" ],\r\n [ \"samplers\", \"sampler\" ]\r\n ])\r\n {\r\n const values = Object.hasOwn(options, category) && options[category] !== undefined\r\n ? options[category]\r\n : {};\r\n assertPlainObject(values, `resource bundle ${category}`);\r\n for (const [ key, value ] of Object.entries(values))\r\n {\r\n if (key.trim() === \"\") fail(`resource bundle ${category} keys must be non-empty`);\r\n assertPlainObject(value, `resource bundle ${category}.${key}`);\r\n definitions.push({\r\n category,\r\n kind,\r\n key,\r\n options: value.label === undefined\r\n ? { ...value, label: `${label}.${kind}.${key}` }\r\n : value\r\n });\r\n }\r\n }\r\n if (!definitions.length) fail(\"resource bundle must contain at least one geometry, texture, or sampler\");\r\n return { label, definitions: definitions };\r\n}\r\n\r\nfunction normalizeResourceRealizationOptions(options)\r\n{\r\n assertPlainObject(options, \"resource realization options\");\r\n assertKeys(options, new Set([ \"adapterKey\" ]), \"resource realization\");\r\n const adapterKey = options.adapterKey ?? \"webgpu\";\r\n if (typeof adapterKey !== \"string\" || adapterKey.trim() === \"\")\r\n {\r\n fail(\"resource realization adapterKey must be a non-empty string\");\r\n }\r\n return { adapterKey };\r\n}\r\n\r\nfunction normalizeRgba8TextureRealizationOptions(options)\r\n{\r\n assertPlainObject(options, \"RGBA8 texture realization options\");\r\n assertKeys(options, new Set([ \"textureKey\", \"bundleLabel\", \"adapterKey\" ]), \"RGBA8 texture realization\");\r\n const textureKey = options.textureKey;\r\n const bundleLabel = options.bundleLabel ?? \"prepared RGBA8 texture\";\r\n const adapterKey = options.adapterKey ?? \"webgpu\";\r\n if (typeof textureKey !== \"string\" || textureKey.trim() === \"\")\r\n {\r\n fail(\"RGBA8 texture realization textureKey must be a non-empty string\");\r\n }\r\n if (typeof bundleLabel !== \"string\" || bundleLabel.trim() === \"\")\r\n {\r\n fail(\"RGBA8 texture realization bundleLabel must be a non-empty string\");\r\n }\r\n if (typeof adapterKey !== \"string\" || adapterKey.trim() === \"\")\r\n {\r\n fail(\"RGBA8 texture realization adapterKey must be a non-empty string\");\r\n }\r\n return { name: \"RGBA8 texture realization\", textureKey, bundleLabel, adapterKey };\r\n}\r\n\r\nfunction normalizeSamplerRealizationOptions(options)\r\n{\r\n assertPlainObject(options, \"sampler realization options\");\r\n assertKeys(options, new Set([ \"samplerKey\", \"bundleLabel\", \"adapterKey\" ]), \"sampler realization\");\r\n const samplerKey = options.samplerKey;\r\n const bundleLabel = options.bundleLabel ?? \"prepared WebGPU sampler\";\r\n const adapterKey = options.adapterKey ?? \"webgpu\";\r\n if (typeof samplerKey !== \"string\" || samplerKey.trim() === \"\")\r\n {\r\n fail(\"sampler realization samplerKey must be a non-empty string\");\r\n }\r\n if (typeof bundleLabel !== \"string\" || bundleLabel.trim() === \"\")\r\n {\r\n fail(\"sampler realization bundleLabel must be a non-empty string\");\r\n }\r\n if (typeof adapterKey !== \"string\" || adapterKey.trim() === \"\")\r\n {\r\n fail(\"sampler realization adapterKey must be a non-empty string\");\r\n }\r\n return { name: \"sampler realization\", samplerKey, bundleLabel, adapterKey };\r\n}\r\n\r\nfunction mapRgba8TexturePayload(value, plan)\r\n{\r\n const label = `${plan.name} payload`;\r\n assertPlainObject(value, label);\r\n assertKeys(value, RGBA8_TEXTURE_PAYLOAD_KEYS, label);\r\n if (value.payloadType !== \"rgba\") fail(`${label} payloadType must be rgba`);\r\n if (typeof value.sourceFormat !== \"string\" || value.sourceFormat.trim() === \"\")\r\n {\r\n fail(`${label} sourceFormat must be a non-empty string`);\r\n }\r\n if (value.containerOnly !== false) fail(`${label} containerOnly must be false`);\r\n if (value.isDecoded !== true) fail(`${label} isDecoded must be true`);\r\n if (Object.hasOwn(value, \"rgbaDecodeSupported\") && value.rgbaDecodeSupported !== true)\r\n {\r\n fail(`${label} rgbaDecodeSupported must be true when provided`);\r\n }\r\n if (!Number.isSafeInteger(value.width) || value.width < 1 || value.width > MAX_GPU_SIZE_32)\r\n {\r\n fail(`${label} width must be a positive GPUSize32 value`);\r\n }\r\n if (!Number.isSafeInteger(value.height) || value.height < 1 || value.height > MAX_GPU_SIZE_32)\r\n {\r\n fail(`${label} height must be a positive GPUSize32 value`);\r\n }\r\n if (value.pixelFormat !== \"rgba8unorm\") fail(`${label} pixelFormat must be rgba8unorm`);\r\n if (!(value.data instanceof Uint8Array)) fail(`${label} data must be a Uint8Array`);\r\n if (!Number.isSafeInteger(value.strideBytes) || value.strideBytes < 1\r\n || value.strideBytes > MAX_GPU_SIZE_32)\r\n {\r\n fail(`${label} strideBytes must be a positive GPUSize32 value`);\r\n }\r\n const activeRowBytes = value.width * 4;\r\n if (value.strideBytes < activeRowBytes || value.strideBytes % 4 !== 0)\r\n {\r\n fail(`${label} strideBytes must contain ${activeRowBytes} active bytes and align to the RGBA8 texel size`);\r\n }\r\n const expectedBytes = value.strideBytes * value.height;\r\n if (!Number.isSafeInteger(expectedBytes)) fail(`${label} byte length exceeds the supported JavaScript range`);\r\n if (value.data.byteLength !== expectedBytes)\r\n {\r\n fail(`${label} data must be exactly ${expectedBytes} bytes`);\r\n }\r\n if (value.origin !== \"top-left\") fail(`${label} origin must be top-left`);\r\n if (value.colorSpace !== \"srgb\" && value.colorSpace !== \"linear\")\r\n {\r\n fail(`${label} colorSpace must be srgb or linear`);\r\n }\r\n if (value.alphaMode !== \"straight\" && value.alphaMode !== \"opaque\")\r\n {\r\n fail(`${label} alphaMode must be straight or opaque`);\r\n }\r\n\r\n const texture = {\r\n width: value.width,\r\n height: value.height,\r\n format: value.colorSpace === \"srgb\" ? \"rgba8unorm-srgb\" : \"rgba8unorm\",\r\n bytesPerRow: value.strideBytes,\r\n data: value.data\r\n };\r\n return {\r\n label: plan.bundleLabel,\r\n textures: frozenRecord([ [ plan.textureKey, texture ] ])\r\n };\r\n}\r\n\r\n/**\r\n * The RGBA8 texture record for a texture resource's HostBitmap.\r\n *\r\n * A texture resource holds Carbon's `ImageIO::HostBitmap` (TriTextureRes.cpp:606),\r\n * not a plain payload. This path uploads one RGBA8 level, so the top mip is\r\n * converted - block formats decoded - on a COPY: the resource keeps its own\r\n * bitmap for other backends and for rebuilds.\r\n *\r\n * Colour space follows the format, as Carbon's does: an `_SRGB` format uploads\r\n * as `rgba8unorm-srgb`, anything else as `rgba8unorm`.\r\n *\r\n * @param {HostBitmap} bitmap The resource's bitmap.\r\n * @param {object} plan The realization plan.\r\n * @returns {object} The bundle input.\r\n */\r\nfunction mapRgba8TextureBitmap(bitmap, plan)\r\n{\r\n const label = `${plan.name} bitmap`;\r\n if (!bitmap.IsValid()) fail(`${label} is not valid`);\r\n\r\n const srgb = isSrgbCarbonFormat(bitmap.GetFormat());\r\n const copy = new HostBitmap();\r\n if (!copy.Create(bitmap.GetWidth(), bitmap.GetHeight(), 1, bitmap.GetFormat())) fail(`${label} could not be copied`);\r\n copy.GetMipRawData(0).set(bitmap.GetMipRawData(0).subarray(0, bitmap.GetMipSize(0)));\r\n\r\n const requested = srgb ? PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM_SRGB : PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM;\r\n // Carbon's ConvertFormat reads R8G8 as luminance and alpha; a packed pair is\r\n // two channels, so it expands to (R, G, 0, 255) here instead.\r\n if (bitmap.GetFormat() === PixelFormat.PIXEL_FORMAT_R8G8_UNORM) expandRg8(copy);\r\n else if (!CjsImageFormat.convertImage(copy, requested)) fail(`${label} cannot be converted to RGBA8`);\r\n\r\n const texture = {\r\n width: copy.GetWidth(),\r\n height: copy.GetHeight(),\r\n format: srgb ? \"rgba8unorm-srgb\" : \"rgba8unorm\",\r\n bytesPerRow: copy.GetMipPitch(0),\r\n data: copy.GetMipRawData(0)\r\n };\r\n return {\r\n label: plan.bundleLabel,\r\n textures: frozenRecord([ [ plan.textureKey, texture ] ])\r\n };\r\n}\r\n\r\n/** Expand an RG8 bitmap's top mip in place to RGBA8 as (R, G, 0, 255). */\r\nfunction expandRg8(bitmap)\r\n{\r\n const width = bitmap.GetWidth();\r\n const height = bitmap.GetHeight();\r\n const source = bitmap.GetMipRawData(0).slice();\r\n const pitch = bitmap.GetMipPitch(0);\r\n\r\n bitmap.Create(width, height, 1, PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM);\r\n const target = bitmap.GetMipRawData(0);\r\n const targetPitch = bitmap.GetMipPitch(0);\r\n\r\n for (let y = 0; y < height; y++)\r\n {\r\n for (let x = 0; x < width; x++)\r\n {\r\n target[y * targetPitch + x * 4] = source[y * pitch + x * 2];\r\n target[y * targetPitch + x * 4 + 1] = source[y * pitch + x * 2 + 1];\r\n target[y * targetPitch + x * 4 + 3] = 255;\r\n }\r\n }\r\n}\r\n\r\n/** Whether a Carbon pixel format is one of the `_SRGB` variants. */\r\nfunction isSrgbCarbonFormat(format)\r\n{\r\n return Object.entries(PixelFormat).some(([ name, value ]) => value === format && name.endsWith(\"_SRGB\"));\r\n}\r\n\r\nfunction mapSamplerPayload(value, plan)\r\n{\r\n assertPlainObject(value, `${plan.name} payload`);\r\n assertKeys(value, SELECTED_SAMPLER_PAYLOAD_KEYS, `${plan.name} payload`);\r\n if (value.payloadType !== \"webgpu-sampler\")\r\n {\r\n fail(`${plan.name} payload payloadType must be webgpu-sampler`);\r\n }\r\n for (const key of SELECTED_SAMPLER_REQUIRED_KEYS)\r\n {\r\n if (!Object.hasOwn(value, key) || value[key] === undefined)\r\n {\r\n fail(`${plan.name} payload must provide ${key}`);\r\n }\r\n }\r\n const { payloadType: _payloadType, ...descriptor } = value;\r\n const normalized = normalizeSampler(descriptor);\r\n const sampler = {\r\n label: normalized.label,\r\n ...normalized.semantic\r\n };\r\n return {\r\n label: plan.bundleLabel,\r\n samplers: frozenRecord([ [ plan.samplerKey, sampler ] ])\r\n };\r\n}\r\n\r\nfunction assertRealizationResource(resource)\r\n{\r\n if (!(resource instanceof CjsResource))\r\n {\r\n fail(\"resource realization requires a CjsResource\");\r\n }\r\n return resource;\r\n}\r\n\r\nfunction cloneDiagnostics(messages)\r\n{\r\n return (messages || []).map((message) => ({\r\n type: String(message.type || \"info\"),\r\n message: String(message.message || \"\"),\r\n lineNum: Number.isInteger(message.lineNum) ? message.lineNum : null,\r\n linePos: Number.isInteger(message.linePos) ? message.linePos : null,\r\n offset: Number.isInteger(message.offset) ? message.offset : null,\r\n length: Number.isInteger(message.length) ? message.length : null\r\n }));\r\n}\r\n\r\nfunction visibilityFlags(visibility, shaderStage)\r\n{\r\n const names = Array.isArray(visibility) ? Array.from(new Set(visibility.map(normalizeStageName))) : [];\r\n if (!names.length) fail(\"canonical binding has no shader visibility\");\r\n let flags = 0;\r\n for (const name of names)\r\n {\r\n if (name === \"vertex\") flags |= shaderStage.VERTEX;\r\n else if (name === \"fragment\") flags |= shaderStage.FRAGMENT;\r\n else fail(`canonical binding has unsupported ${name || \"empty\"} visibility`);\r\n }\r\n return flags;\r\n}\r\n\r\nfunction bindingLayout(binding)\r\n{\r\n if (binding?.sourceTruth !== \"wgsl-layout\") fail(\"all live bindings must come from a canonical WGSL layout\");\r\n // A dynamic binding must be marked in BOTH places or WebGPU rejects the bind\r\n // group: `dynamic` is the package's word for it and `hasDynamicOffset` is the\r\n // layout's, and they are written by different producers. Disagreement here\r\n // surfaces much later as a bind-group validation error that names neither.\r\n if (Boolean(binding.dynamic) !== Boolean(binding.layout?.buffer?.hasDynamicOffset))\r\n {\r\n fail(`${bindingIdentity(binding)} disagrees with its layout about being dynamic`);\r\n }\r\n const layout = binding.layout;\r\n if (!layout || typeof layout !== \"object\") fail(`${bindingIdentity(binding)} has no WebGPU layout`);\r\n const keys = [ \"buffer\", \"sampler\", \"texture\", \"storageTexture\", \"externalTexture\" ]\r\n .filter((key) => layout[key] != null);\r\n if (keys.length !== 1) fail(`${bindingIdentity(binding)} must have exactly one WebGPU layout kind`);\r\n return { [keys[0]]: snapshotPlain(layout[keys[0]]) };\r\n}\r\n\r\nfunction normalizePipeline(pipeline, shaderStage)\r\n{\r\n const value = asPipelineJson(pipeline);\r\n const stages = Array.isArray(value.shaderModules) ? value.shaderModules : [];\r\n const vertex = stages.filter((entry) => normalizeStageName(entry?.stageName) === \"vertex\");\r\n const fragment = stages.filter((entry) => normalizeStageName(entry?.stageName) === \"fragment\");\r\n if (stages.length !== 2 || vertex.length !== 1 || fragment.length !== 1)\r\n {\r\n fail(\"render pipelines require exactly one vertex and one pixel shader module\");\r\n }\r\n for (const shader of [ vertex[0], fragment[0] ])\r\n {\r\n if (typeof shader.wgsl !== \"string\" || !shader.wgsl) fail(`${shader.stageName} shader has no WGSL`);\r\n if (typeof shader.entryPoint !== \"string\" || !shader.entryPoint) fail(`${shader.stageName} shader has no entry point`);\r\n }\r\n\r\n const groups = Array.isArray(value.bindGroups) ? value.bindGroups.slice() : [];\r\n groups.sort((left, right) => left.group - right.group);\r\n const slots = new Set();\r\n const identities = new Set();\r\n const baseScopes = new Map();\r\n const normalizedGroups = groups.map((group, groupIndex) =>\r\n {\r\n if (group?.group !== groupIndex) fail(\"canonical bind groups must be contiguous from group 0\");\r\n const bindings = Array.isArray(group.bindings) ? group.bindings.slice() : [];\r\n bindings.sort((left, right) => left.binding - right.binding);\r\n return {\r\n group: group.group,\r\n entries: bindings.map((binding) =>\r\n {\r\n if (binding?.group !== group.group || !Number.isInteger(binding.binding) || binding.binding < 0)\r\n {\r\n fail(`group ${group.group} has an invalid binding slot`);\r\n }\r\n const slot = `${group.group}:${binding.binding}`;\r\n if (slots.has(slot)) fail(`canonical layout duplicates binding slot ${slot}`);\r\n slots.add(slot);\r\n const identity = bindingIdentity(binding);\r\n if (identities.has(identity)) fail(`canonical layout duplicates ${identity}`);\r\n identities.add(identity);\r\n const baseIdentity = `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\r\n if (!baseScopes.has(baseIdentity)) baseScopes.set(baseIdentity, new Set());\r\n const scopes = baseScopes.get(baseIdentity);\r\n if ((identity === baseIdentity && Array.from(scopes).some((scope) => scope !== baseIdentity))\r\n || (identity !== baseIdentity && scopes.has(baseIdentity)))\r\n {\r\n fail(`canonical layout mixes shared and stage-scoped forms for ${baseIdentity}`);\r\n }\r\n scopes.add(identity);\r\n return {\r\n binding: binding.binding,\r\n identity,\r\n descriptor: {\r\n binding: binding.binding,\r\n visibility: visibilityFlags(binding.visibility, shaderStage),\r\n ...bindingLayout(binding)\r\n }\r\n };\r\n })\r\n };\r\n });\r\n\r\n const stageSnapshot = (shader) => ({\r\n key: String(shader.key || \"\"),\r\n stageName: String(shader.stageName || \"\"),\r\n wgsl: shader.wgsl,\r\n entryPoint: shader.entryPoint\r\n });\r\n return {\r\n key: String(value.key || \"\"),\r\n vertex: stageSnapshot(vertex[0]),\r\n fragment: stageSnapshot(fragment[0]),\r\n groups: normalizedGroups\r\n };\r\n}\r\n\r\nfunction findResource(resources, identity)\r\n{\r\n if (resources instanceof Map) return resources.get(identity);\r\n if (resources && typeof resources === \"object\" && Object.hasOwn(resources, identity)) return resources[identity];\r\n return undefined;\r\n}\r\n\r\nfunction resourceEntries(resources, label)\r\n{\r\n if (resources == null) return [];\r\n if (resources instanceof Map) return Array.from(resources.entries());\r\n if (typeof resources === \"object\") return Object.entries(resources);\r\n fail(`${label} must be a Map or plain object`);\r\n}\r\n\r\nfunction validateRecipe(recipe)\r\n{\r\n if (!recipe || typeof recipe !== \"object\") fail(\"an explicit render-pipeline recipe is required\");\r\n if (!recipe.vertex || !Array.isArray(recipe.vertex.buffers)) fail(\"recipe.vertex.buffers must be an array\");\r\n if (!recipe.fragment || !Array.isArray(recipe.fragment.targets) || !recipe.fragment.targets.length)\r\n {\r\n fail(\"recipe.fragment.targets must be a non-empty array\");\r\n }\r\n if (!recipe.primitive || typeof recipe.primitive !== \"object\") fail(\"recipe.primitive is required\");\r\n if (Object.hasOwn(recipe, \"layout\") || Object.hasOwn(recipe.vertex, \"module\") || Object.hasOwn(recipe.vertex, \"entryPoint\")\r\n || Object.hasOwn(recipe.fragment, \"module\") || Object.hasOwn(recipe.fragment, \"entryPoint\"))\r\n {\r\n fail(\"recipe cannot replace package shader modules, entry points, or canonical layout\");\r\n }\r\n return snapshotPlain(recipe);\r\n}\r\n\r\nfunction assertPrepared(owner, prepared)\r\n{\r\n const record = PREPARED_PIPELINES.get(prepared);\r\n if (!record || record.owner !== owner) fail(\"prepared pipeline belongs to another device\");\r\n owner._AssertGeneration(record.generation);\r\n return record;\r\n}\r\n\r\nfunction assertLive(owner, livePipeline)\r\n{\r\n const record = LIVE_PIPELINES.get(livePipeline);\r\n if (!record || record.owner !== owner) fail(\"live pipeline belongs to another device\");\r\n owner._AssertGeneration(record.generation);\r\n return record;\r\n}\r\n\r\nfunction assertBindingSet(owner, bindingSet, livePipeline = null)\r\n{\r\n const record = BINDING_SETS.get(bindingSet);\r\n if (!record || record.owner !== owner) fail(\"binding set belongs to another device\");\r\n owner._AssertGeneration(record.generation);\r\n if (record.destroyed) fail(\"binding set is destroyed\");\r\n if (livePipeline && record.livePipeline !== livePipeline) fail(\"binding set belongs to another live pipeline\");\r\n assertAdapterResources(record.adapterResources, \"binding set\");\r\n return record;\r\n}\r\n\r\nfunction assertGeometry(owner, geometry)\r\n{\r\n const record = GEOMETRIES.get(geometry);\r\n if (!record || record.owner !== owner) fail(\"geometry belongs to another device\");\r\n owner._AssertGeneration(record.generation);\r\n if (record.destroyed) fail(\"geometry is destroyed\");\r\n return record;\r\n}\r\n\r\nfunction assertTexture(owner, texture)\r\n{\r\n const record = TEXTURES.get(texture);\r\n if (!record || record.owner !== owner) fail(\"texture belongs to another device\");\r\n owner._AssertGeneration(record.generation);\r\n if (record.destroyed) fail(\"texture is destroyed\");\r\n return record;\r\n}\r\n\r\nfunction assertSampler(owner, sampler)\r\n{\r\n const record = SAMPLERS.get(sampler);\r\n if (!record || record.owner !== owner) fail(\"sampler belongs to another device\");\r\n owner._AssertGeneration(record.generation);\r\n if (record.destroyed) fail(\"sampler is destroyed\");\r\n return record;\r\n}\r\n\r\nfunction resolveBindingResource(owner, entry, resource)\r\n{\r\n const textureRecord = TEXTURES.get(resource);\r\n if (textureRecord)\r\n {\r\n assertTexture(owner, resource);\r\n const layout = entry.descriptor.texture;\r\n if (!layout) fail(`${entry.identity} cannot bind an engine texture`);\r\n const viewDimension = layout.viewDimension ?? \"2d\";\r\n const multisampled = layout.multisampled ?? false;\r\n const sampleType = layout.sampleType ?? \"float\";\r\n // Every dimension the texture adapter can create must be bindable, or a\r\n // cube map is creatable and then unusable. Multisampled textures are still\r\n // out: those are attachments, and the render target owns them.\r\n // A float texture binds to either float slot; \"unfilterable-float\" is a\r\n // slot only ever loaded from, which a 32-bit float texture needs.\r\n if (!TEXTURE_VIEW_DIMENSIONS.has(viewDimension) || multisampled\r\n || (sampleType !== \"float\" && sampleType !== \"unfilterable-float\"))\r\n {\r\n fail(`${entry.identity} requires a ${multisampled ? \"multisampled \" : \"\"}${sampleType} ${viewDimension} texture,`\r\n + \" which this adapter does not realize\");\r\n }\r\n // The view's dimension is fixed at creation, so a layout asking for the\r\n // other one cannot be satisfied by reinterpreting it.\r\n if ((textureRecord.viewDimension ?? \"2d\") !== viewDimension)\r\n {\r\n fail(`${entry.identity} requires a ${viewDimension} texture view,`\r\n + ` but the bound texture provides ${textureRecord.viewDimension ?? \"2d\"}`);\r\n }\r\n return { resource: textureRecord.view, adapterRecord: textureRecord };\r\n }\r\n const samplerRecord = SAMPLERS.get(resource);\r\n if (samplerRecord)\r\n {\r\n assertSampler(owner, resource);\r\n const layout = entry.descriptor.sampler;\r\n if (!layout) fail(`${entry.identity} cannot bind an engine sampler`);\r\n const type = layout.type ?? \"filtering\";\r\n const compatible = type === \"filtering\"\r\n ? !samplerRecord.isComparison\r\n : type === \"non-filtering\"\r\n ? !samplerRecord.isComparison && !samplerRecord.isFiltering\r\n : type === \"comparison\" && samplerRecord.isComparison;\r\n if (!compatible) fail(`${entry.identity} is incompatible with the ${type} sampler layout`);\r\n return { resource: samplerRecord.sampler, adapterRecord: samplerRecord };\r\n }\r\n if (entry.descriptor.buffer && (!resource || typeof resource !== \"object\" || !resource.buffer))\r\n {\r\n fail(`${entry.identity} requires a GPUBufferBinding resource`);\r\n }\r\n return { resource, adapterRecord: null };\r\n}\r\n\r\n// A dynamic binding is bound once and re-aimed per draw, which is what lets\r\n// many objects share one ring buffer instead of taking a buffer each. WebGPU\r\n// takes the offsets as a flat array per bind group, ordered by BINDING NUMBER\r\n// within the group - not by the order a caller happens to list them - so the\r\n// order is derived from the layout here rather than trusted from the caller.\r\nfunction resolveDynamicOffsets(record, offsets, device)\r\n{\r\n const supplied = offsets == null ? null : new Map(resourceEntries(offsets, \"draw dynamicOffsets\"));\r\n const perGroup = [];\r\n const consumed = new Set();\r\n let anyDynamic = false;\r\n\r\n for (const group of record.descriptor.groups)\r\n {\r\n const dynamic = group.entries\r\n .filter((entry) => entry.descriptor.buffer?.hasDynamicOffset === true)\r\n .sort((first, second) => first.binding - second.binding);\r\n\r\n if (!dynamic.length)\r\n {\r\n perGroup[group.group] = null;\r\n continue;\r\n }\r\n\r\n anyDynamic = true;\r\n const values = [];\r\n\r\n for (const entry of dynamic)\r\n {\r\n // Defaulting a missing offset to zero would aim every object at the first\r\n // slot of the ring and render them all identically, which looks like a\r\n // scene bug rather than a missing argument.\r\n const value = supplied?.get(entry.identity);\r\n if (value == null) fail(`draw is missing a dynamic offset for ${entry.identity}`);\r\n if (!Number.isSafeInteger(value) || value < 0 || value > MAX_GPU_SIZE_32)\r\n {\r\n fail(`dynamic offset for ${entry.identity} must be a GPUSize32 value`);\r\n }\r\n\r\n const alignment = entry.descriptor.buffer.type === \"uniform\"\r\n ? device?.limits?.minUniformBufferOffsetAlignment ?? 256\r\n : device?.limits?.minStorageBufferOffsetAlignment ?? 256;\r\n if (value % alignment !== 0)\r\n {\r\n fail(`dynamic offset for ${entry.identity} must be a multiple of ${alignment}`);\r\n }\r\n\r\n consumed.add(entry.identity);\r\n values.push(value);\r\n }\r\n\r\n perGroup[group.group] = values;\r\n }\r\n\r\n if (supplied)\r\n {\r\n for (const identity of supplied.keys())\r\n {\r\n if (!consumed.has(identity)) fail(`draw supplies a dynamic offset for ${identity}, which is not a dynamic binding`);\r\n }\r\n }\r\n\r\n return anyDynamic ? perGroup : null;\r\n}\r\n\r\nfunction assertAdapterResources(records, label)\r\n{\r\n for (const record of records || [])\r\n {\r\n if (record.destroyed) fail(`${label} ${record.kind} is destroyed`);\r\n }\r\n}\r\n\r\nasync function popValidationScope(device, state)\r\n{\r\n if (!state.open) return null;\r\n state.open = false;\r\n return device.popErrorScope();\r\n}\r\n\r\n/**\r\n * Engine-owned WebGPU device boundary. It realizes already-selected Carbon WebGPU\r\n * descriptors; format/capability policy remains with the caller.\r\n */\r\nexport class CjsWebgpuDevice\r\n{\r\n /**\r\n * Requests or accepts a WebGPU adapter and device, then returns a ready\r\n * engine boundary.\r\n */\r\n static async Request(options = {})\r\n {\r\n const gpu = Object.prototype.hasOwnProperty.call(options, \"gpu\")\r\n ? options.gpu\r\n : globalThis.navigator?.gpu;\r\n let adapter = options.adapter ?? null;\r\n let device = options.device ?? null;\r\n\r\n if (!device)\r\n {\r\n if (!adapter)\r\n {\r\n if (!gpu || typeof gpu.requestAdapter !== \"function\") fail(\"WebGPU is unavailable\");\r\n adapter = await gpu.requestAdapter(options.adapterOptions);\r\n if (!adapter) fail(\"requestAdapter returned null\");\r\n }\r\n if (typeof adapter.requestDevice !== \"function\") fail(\"the GPUAdapter cannot request a device\");\r\n device = await adapter.requestDevice(options.deviceDescriptor);\r\n }\r\n return new CjsWebgpuDevice({ ...options, gpu, adapter, device });\r\n }\r\n\r\n /**\r\n * Creates a ready engine boundary around an already-acquired GPU device.\r\n */\r\n constructor(options = {})\r\n {\r\n if (!options.device || typeof options.device.createShaderModule !== \"function\") fail(\"a GPUDevice is required\");\r\n const shaderStage = options.shaderStage || globalThis.GPUShaderStage;\r\n if (!shaderStage || !Number.isInteger(shaderStage.VERTEX) || !Number.isInteger(shaderStage.FRAGMENT))\r\n {\r\n fail(\"GPUShaderStage constants are required\");\r\n }\r\n this._gpu = options.gpu || null;\r\n this._adapter = options.adapter || null;\r\n this._device = options.device;\r\n this._adapterOptions = options.adapterOptions;\r\n this._deviceDescriptor = options.deviceDescriptor;\r\n this._shaderStage = shaderStage;\r\n this._bufferUsage = options.bufferUsage || globalThis.GPUBufferUsage || null;\r\n this._textureUsage = options.textureUsage || globalThis.GPUTextureUsage || null;\r\n this._samplerCache = new Map();\r\n this._preparedCache = new CjsWebgpuPipelineCache();\r\n this._renderPipelineCache = new CjsWebgpuPipelineCache();\r\n this._resourceRealizations = new WeakMap();\r\n this._onLost = typeof options.onLost === \"function\" ? options.onLost : null;\r\n this._generation = 1;\r\n this._state = \"ready\";\r\n this._lostInfo = null;\r\n this._validationTail = Promise.resolve();\r\n this._recreateSerial = 0;\r\n this._lifecycleVersion = 0;\r\n this._WatchDevice(this._device, this._generation);\r\n }\r\n\r\n /**\r\n * Returns the adapter associated with the boundary, when known.\r\n */\r\n GetAdapter()\r\n {\r\n return this._adapter;\r\n }\r\n\r\n /**\r\n * Returns the ready native GPU device.\r\n */\r\n GetDevice()\r\n {\r\n this._AssertReady();\r\n return this._device;\r\n }\r\n\r\n /**\r\n * The `GPUBufferUsage` table this device builds masks from.\r\n *\r\n * It is injectable (`options.bufferUsage`) so a test can drive buffer\r\n * creation without a real WebGPU global.\r\n *\r\n * @returns {object} The usage flags.\r\n */\r\n GetBufferUsage()\r\n {\r\n return this._bufferUsage;\r\n }\r\n\r\n /**\r\n * The `GPUTextureUsage` flags this device creates textures with; injectable\r\n * for the same reason as the buffer usage.\r\n *\r\n * @returns {object|null} The usage flags.\r\n */\r\n GetTextureUsage()\r\n {\r\n return this._textureUsage;\r\n }\r\n\r\n /**\r\n * Returns the generation used to reject objects from earlier device\r\n * lifecycles.\r\n */\r\n GetGeneration()\r\n {\r\n return this._generation;\r\n }\r\n\r\n /**\r\n * Returns the most recently accepted device-loss record, if any.\r\n */\r\n GetLostInfo()\r\n {\r\n return this._lostInfo;\r\n }\r\n\r\n /**\r\n * Reports whether the boundary is currently in the lost state.\r\n */\r\n IsLost()\r\n {\r\n return this._state === \"lost\";\r\n }\r\n\r\n /**\r\n * Reports whether the boundary currently has a usable device.\r\n */\r\n IsReady()\r\n {\r\n return this._state === \"ready\";\r\n }\r\n\r\n /**\r\n * Compiles a Carbon WebGPU render descriptor and realizes its generation-bound\r\n * canonical pipeline layout.\r\n */\r\n async PreparePipeline(pipeline, options = {})\r\n {\r\n const descriptor = normalizePipeline(pipeline, this._shaderStage);\r\n const prepareOptions = snapshotPlain(options);\r\n // Stage A identity is the caller's to supply: shader source is too large to\r\n // serialize into a key on every call, and the composed path already has one\r\n // from the runtime resource layer. Without it this prepares uncached, which is never\r\n // wrong. The rest of the options join the key because `warningsAsErrors`\r\n // decides whether a warning throws, so the same program under a stricter\r\n // policy is not the same answer.\r\n const identity = prepareOptions.identity ?? null;\r\n const key = identity === null || identity === undefined\r\n ? null\r\n : `prepared|${CanonicalKey(identity)}|${CanonicalKey(prepareOptions)}`;\r\n\r\n return this._preparedCache.Resolve(key, this._generation, () => this._SerializeValidation(async () =>\r\n {\r\n const device = this.GetDevice();\r\n const generation = this._generation;\r\n const scope = { open: typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\" };\r\n if (scope.open) device.pushErrorScope(\"validation\");\r\n try\r\n {\r\n const modules = {};\r\n for (const stageName of [ \"vertex\", \"fragment\" ])\r\n {\r\n const shader = descriptor[stageName];\r\n const module = device.createShaderModule({\r\n label: `${descriptor.key || \"pipeline\"}.${stageName}`,\r\n code: shader.wgsl\r\n });\r\n modules[stageName] = { module, entryPoint: shader.entryPoint };\r\n }\r\n this._AssertGeneration(generation);\r\n const bindGroupLayouts = descriptor.groups.map((group) => device.createBindGroupLayout({\r\n label: `${descriptor.key || \"pipeline\"}.group${group.group}`,\r\n entries: group.entries.map((entry) => entry.descriptor)\r\n }));\r\n const pipelineLayout = device.createPipelineLayout({\r\n label: `${descriptor.key || \"pipeline\"}.layout`,\r\n bindGroupLayouts\r\n });\r\n const validationPromise = popValidationScope(device, scope);\r\n const compilationPromise = Promise.all([ \"vertex\", \"fragment\" ].map(async (stageName) =>\r\n {\r\n const module = modules[stageName].module;\r\n const messages = typeof module.getCompilationInfo === \"function\"\r\n ? cloneDiagnostics((await module.getCompilationInfo()).messages)\r\n : [];\r\n return { stageName, messages };\r\n }));\r\n const [ compilation, validationError ] = await Promise.all([ compilationPromise, validationPromise ]);\r\n if (validationError) fail(`pipeline preparation validation failed: ${validationError.message || validationError}`);\r\n const diagnostics = [];\r\n for (const { stageName, messages } of compilation)\r\n {\r\n diagnostics.push(...messages.map((message) => ({ stage: stageName, ...message })));\r\n const errors = messages.filter((message) => message.type === \"error\");\r\n const warnings = messages.filter((message) => message.type === \"warning\");\r\n if (errors.length || (prepareOptions.warningsAsErrors && warnings.length))\r\n {\r\n const kinds = errors.length ? errors : warnings;\r\n fail(`${stageName} WGSL diagnostics: ${kinds.map((entry) => entry.message).join(\" | \")}`);\r\n }\r\n }\r\n this._AssertGeneration(generation);\r\n const prepared = {\r\n key: descriptor.key,\r\n generation,\r\n diagnostics: diagnostics,\r\n bindGroupLayouts: bindGroupLayouts.slice(),\r\n pipelineLayout\r\n };\r\n PREPARED_PIPELINES.set(prepared, {\r\n owner: this,\r\n generation,\r\n descriptor,\r\n modules,\r\n bindGroupLayouts,\r\n pipelineLayout,\r\n identity\r\n });\r\n return prepared;\r\n }\r\n catch (error)\r\n {\r\n await popValidationScope(device, scope).catch(() => null);\r\n throw error;\r\n }\r\n }));\r\n }\r\n\r\n /**\r\n * Realizes a generation-bound native render pipeline from a Carbon WebGPU\r\n * descriptor or prepared pipeline.\r\n */\r\n async CreateRenderPipeline(pipelineOrPrepared, recipe)\r\n {\r\n const pipelineRecipe = validateRecipe(recipe);\r\n const prepared = PREPARED_PIPELINES.has(pipelineOrPrepared)\r\n ? pipelineOrPrepared\r\n : await this.PreparePipeline(pipelineOrPrepared, pipelineRecipe.prepareOptions || {});\r\n\r\n // Stage B: the program's identity plus the recipe's POD block. The recipe\r\n // is small enough to serialize exactly, so unlike Carbon's Metal cache -\r\n // which keys on a hash and never rechecks, so a collision silently returns\r\n // the wrong pipeline - two different pipelines cannot collide here.\r\n const record = assertPrepared(this, prepared);\r\n const cacheKey = RenderPipelineKey(record.identity, pipelineRecipe);\r\n\r\n return this._renderPipelineCache.Resolve(cacheKey, this._generation, () => this._SerializeValidation(async () =>\r\n {\r\n const device = this.GetDevice();\r\n const scope = { open: typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\" };\r\n if (scope.open) device.pushErrorScope(\"validation\");\r\n try\r\n {\r\n const pipelineDescriptor = {\r\n label: pipelineRecipe.label || record.descriptor.key || \"Carbon WebGPU render pipeline\",\r\n layout: record.pipelineLayout,\r\n vertex: {\r\n ...pipelineRecipe.vertex,\r\n module: record.modules.vertex.module,\r\n entryPoint: record.modules.vertex.entryPoint\r\n },\r\n fragment: {\r\n ...pipelineRecipe.fragment,\r\n module: record.modules.fragment.module,\r\n entryPoint: record.modules.fragment.entryPoint\r\n },\r\n primitive: pipelineRecipe.primitive,\r\n ...(pipelineRecipe.depthStencil ? { depthStencil: pipelineRecipe.depthStencil } : {}),\r\n ...(pipelineRecipe.multisample ? { multisample: pipelineRecipe.multisample } : {})\r\n };\r\n const pipelinePromise = typeof device.createRenderPipelineAsync === \"function\"\r\n ? device.createRenderPipelineAsync(pipelineDescriptor)\r\n : Promise.resolve(device.createRenderPipeline(pipelineDescriptor));\r\n const validationPromise = popValidationScope(device, scope);\r\n const [ gpuPipeline, validationError ] = await Promise.all([ pipelinePromise, validationPromise ]);\r\n if (validationError) fail(`render-pipeline validation failed: ${validationError.message || validationError}`);\r\n this._AssertGeneration(record.generation);\r\n const livePipeline = {\r\n key: record.descriptor.key,\r\n generation: record.generation,\r\n prepared,\r\n pipeline: gpuPipeline\r\n };\r\n LIVE_PIPELINES.set(livePipeline, { ...record, livePipeline, pipeline: gpuPipeline, pipelineRecipe });\r\n return livePipeline;\r\n }\r\n catch (error)\r\n {\r\n await popValidationScope(device, scope).catch(() => null);\r\n throw error;\r\n }\r\n }));\r\n }\r\n\r\n /**\r\n * Upload an explicit CPU geometry payload into device-owned vertex/index\r\n * buffers. The returned handle is opaque apart from its immutable\r\n * caller-provided vertex layouts and lifecycle metadata; TriGeometryRes\r\n * ownership remains outside the backend.\r\n */\r\n async CreateGeometry(options = {})\r\n {\r\n this._AssertReady();\r\n const plan = normalizeGeometry(options);\r\n const usage = this._bufferUsage;\r\n if (!usage || !Number.isInteger(usage.VERTEX) || !Number.isInteger(usage.INDEX)\r\n || !Number.isInteger(usage.COPY_DST))\r\n {\r\n fail(\"GPUBufferUsage VERTEX, INDEX, and COPY_DST constants are required to create geometry\");\r\n }\r\n return this._SerializeValidation(async () =>\r\n {\r\n const device = this.GetDevice();\r\n if (typeof device.createBuffer !== \"function\" || typeof device.queue?.writeBuffer !== \"function\")\r\n {\r\n fail(\"GPUDevice buffer creation and queue.writeBuffer are required to create geometry\");\r\n }\r\n validateGeometryLimits(plan, device);\r\n const generation = this._generation;\r\n const ownedBuffers = [];\r\n const scopes = { validation: false, memory: false };\r\n if (typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\")\r\n {\r\n device.pushErrorScope(\"out-of-memory\");\r\n scopes.memory = true;\r\n device.pushErrorScope(\"validation\");\r\n scopes.validation = true;\r\n }\r\n const popScope = async (name) =>\r\n {\r\n if (!scopes[name]) return null;\r\n scopes[name] = false;\r\n return device.popErrorScope();\r\n };\r\n const upload = (label, data, kind) =>\r\n {\r\n const size = alignedBufferSize(data.byteLength);\r\n const buffer = device.createBuffer({\r\n label,\r\n size,\r\n usage: usage[kind] | usage.COPY_DST\r\n });\r\n ownedBuffers.push(buffer);\r\n let bytes = data;\r\n if (size !== data.byteLength)\r\n {\r\n bytes = new Uint8Array(size);\r\n bytes.set(data);\r\n }\r\n device.queue.writeBuffer(buffer, 0, bytes);\r\n return buffer;\r\n };\r\n\r\n try\r\n {\r\n const vertexBuffers = plan.vertexBuffers.map((entry) => ({\r\n slot: entry.slot,\r\n buffer: upload(entry.label || `${plan.label}.vertex${entry.slot}`, entry.data, \"VERTEX\"),\r\n offset: 0,\r\n size: entry.data.byteLength,\r\n capacity: entry.data.byteLength / entry.layout.arrayStride,\r\n stepMode: entry.layout.stepMode\r\n }));\r\n const indexBuffer = plan.indexBuffer\r\n ? {\r\n buffer: upload(plan.indexBuffer.label || `${plan.label}.index`, plan.indexBuffer.data, \"INDEX\"),\r\n format: plan.indexBuffer.format,\r\n offset: 0,\r\n size: plan.indexBuffer.data.byteLength,\r\n count: plan.indexBuffer.data.byteLength / (plan.indexBuffer.format === \"uint16\" ? 2 : 4)\r\n }\r\n : null;\r\n const validationPromise = popScope(\"validation\");\r\n const memoryPromise = popScope(\"memory\");\r\n const [ validationError, memoryError ] = await Promise.all([ validationPromise, memoryPromise ]);\r\n if (memoryError)\r\n {\r\n fail(`geometry allocation failed: ${memoryError.message || memoryError}`);\r\n }\r\n if (validationError)\r\n {\r\n fail(`geometry validation failed: ${validationError.message || validationError}`);\r\n }\r\n this._AssertGeneration(generation);\r\n const vertexBufferLayouts = plan.vertexBuffers.map((entry) => entry.layout);\r\n const minimumCapacity = (stepMode) =>\r\n {\r\n const capacities = vertexBuffers.filter((entry) => entry.stepMode === stepMode).map((entry) => entry.capacity);\r\n return capacities.length ? Math.min(...capacities) : null;\r\n };\r\n let geometry;\r\n geometry = {\r\n label: plan.label,\r\n generation,\r\n vertexBufferCount: vertexBuffers.length,\r\n vertexBufferLayouts,\r\n vertexCapacity: minimumCapacity(\"vertex\"),\r\n instanceCapacity: minimumCapacity(\"instance\"),\r\n indexed: indexBuffer !== null,\r\n indexFormat: indexBuffer?.format || null,\r\n indexCount: indexBuffer?.count || 0,\r\n Destroy: () => this.DestroyGeometry(geometry)\r\n };\r\n GEOMETRIES.set(geometry, {\r\n owner: this,\r\n generation,\r\n vertexBuffers: vertexBuffers,\r\n vertexBufferLayouts,\r\n indexBuffer,\r\n ownedBuffers: ownedBuffers.slice(),\r\n destroyed: false\r\n });\r\n return geometry;\r\n }\r\n catch (error)\r\n {\r\n const validationPromise = popScope(\"validation\").catch(() => null);\r\n const memoryPromise = popScope(\"memory\").catch(() => null);\r\n await Promise.all([ validationPromise, memoryPromise ]);\r\n for (const buffer of ownedBuffers)\r\n {\r\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\r\n }\r\n throw error;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Destroys the device buffers owned by a geometry handle.\r\n */\r\n DestroyGeometry(geometry)\r\n {\r\n const record = GEOMETRIES.get(geometry);\r\n if (!record || record.owner !== this) fail(\"geometry belongs to another device\");\r\n if (record.destroyed) return;\r\n record.destroyed = true;\r\n for (const buffer of record.ownedBuffers)\r\n {\r\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Upload one explicit, single-mip, uncompressed 2D CPU texture payload.\r\n * Sampler state and resource-path policy remain separate from this handle.\r\n */\r\n async CreateTexture(options = {})\r\n {\r\n this._AssertReady();\r\n const plan = normalizeTexture(options);\r\n const usage = this._textureUsage;\r\n if (!usage || !Number.isInteger(usage.TEXTURE_BINDING) || !Number.isInteger(usage.COPY_DST))\r\n {\r\n fail(\"GPUTextureUsage TEXTURE_BINDING and COPY_DST constants are required to create textures\");\r\n }\r\n return this._SerializeValidation(async () =>\r\n {\r\n const device = this.GetDevice();\r\n if (typeof device.createTexture !== \"function\" || typeof device.queue?.writeTexture !== \"function\")\r\n {\r\n fail(\"GPUDevice texture creation and queue.writeTexture are required to create textures\");\r\n }\r\n // Told before anything is created, so a device without BC support gets\r\n // the feature name rather than an unsupported-format error from inside\r\n // createTexture.\r\n AssertFormatFeature(plan, device);\r\n validateTextureLimits(plan, device);\r\n const generation = this._generation;\r\n const scopes = { validation: false, memory: false };\r\n if (typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\")\r\n {\r\n device.pushErrorScope(\"out-of-memory\");\r\n scopes.memory = true;\r\n device.pushErrorScope(\"validation\");\r\n scopes.validation = true;\r\n }\r\n const popScope = async (name) =>\r\n {\r\n if (!scopes[name]) return null;\r\n scopes[name] = false;\r\n return device.popErrorScope();\r\n };\r\n let gpuTexture = null;\r\n try\r\n {\r\n gpuTexture = device.createTexture({\r\n label: plan.label,\r\n size: { width: plan.width, height: plan.height, depthOrArrayLayers: plan.layers },\r\n mipLevelCount: plan.mipLevelCount,\r\n sampleCount: 1,\r\n // A WebGPU array texture is a 2d texture with more layers, not a 3d\r\n // one; only the view dimension changes. A cube is the same again: six\r\n // layers and a cube VIEW.\r\n dimension: \"2d\",\r\n format: plan.formatName,\r\n usage: usage.TEXTURE_BINDING | usage.COPY_DST\r\n });\r\n if (plan.mipLevelCount === 1)\r\n {\r\n // One level means every layer is a contiguous slab of the same\r\n // stride, so one write still covers them all.\r\n device.queue.writeTexture(\r\n { texture: gpuTexture },\r\n plan.data,\r\n { offset: 0, bytesPerRow: plan.bytesPerRow, rowsPerImage: plan.plan.writes[0].rowsPerImage },\r\n {\r\n width: plan.plan.writes[0].copyWidth,\r\n height: plan.plan.writes[0].copyHeight,\r\n depthOrArrayLayers: plan.layers\r\n }\r\n );\r\n }\r\n else\r\n {\r\n // A mip chain is stored layer-major, so one level across layers is\r\n // not contiguous and each (layer, level) is written on its own.\r\n // rowsPerImage counts BLOCK rows, which is what makes a compressed\r\n // upload differ from an uncompressed one.\r\n for (const write of plan.plan.writes)\r\n {\r\n device.queue.writeTexture(\r\n { texture: gpuTexture, mipLevel: write.level, origin: { x: 0, y: 0, z: write.layer } },\r\n plan.data,\r\n { offset: write.offset, bytesPerRow: write.bytesPerRow, rowsPerImage: write.rowsPerImage },\r\n { width: write.copyWidth, height: write.copyHeight, depthOrArrayLayers: 1 }\r\n );\r\n }\r\n }\r\n if (typeof gpuTexture?.createView !== \"function\") fail(\"created texture cannot create a view\");\r\n const view = gpuTexture.createView({ label: `${plan.label}.view`, dimension: plan.viewDimension });\r\n const validationPromise = popScope(\"validation\");\r\n const memoryPromise = popScope(\"memory\");\r\n const [ validationError, memoryError ] = await Promise.all([ validationPromise, memoryPromise ]);\r\n if (memoryError)\r\n {\r\n fail(`texture allocation failed: ${memoryError.message || memoryError}`);\r\n }\r\n if (validationError)\r\n {\r\n fail(`texture validation failed: ${validationError.message || validationError}`);\r\n }\r\n this._AssertGeneration(generation);\r\n let texture;\r\n texture = {\r\n label: plan.label,\r\n generation,\r\n width: plan.width,\r\n height: plan.height,\r\n depthOrArrayLayers: plan.layers,\r\n mipLevelCount: plan.mipLevelCount,\r\n sampleCount: 1,\r\n dimension: \"2d\",\r\n viewDimension: plan.viewDimension,\r\n format: plan.formatName,\r\n isSRGB: plan.format.isSRGB,\r\n Destroy: () => this.DestroyTexture(texture)\r\n };\r\n TEXTURES.set(texture, {\r\n kind: \"texture\",\r\n owner: this,\r\n generation,\r\n texture: gpuTexture,\r\n view,\r\n viewDimension: plan.viewDimension,\r\n destroyed: false\r\n });\r\n return texture;\r\n }\r\n catch (error)\r\n {\r\n const validationPromise = popScope(\"validation\").catch(() => null);\r\n const memoryPromise = popScope(\"memory\").catch(() => null);\r\n await Promise.all([ validationPromise, memoryPromise ]);\r\n if (typeof gpuTexture?.destroy === \"function\") gpuTexture.destroy();\r\n throw error;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Destroys the native texture owned by a texture handle.\r\n */\r\n DestroyTexture(texture)\r\n {\r\n const record = TEXTURES.get(texture);\r\n if (!record || record.owner !== this) fail(\"texture belongs to another device\");\r\n if (record.destroyed) return;\r\n record.destroyed = true;\r\n if (typeof record.texture?.destroy === \"function\") record.texture.destroy();\r\n }\r\n\r\n /**\r\n * Normalize one explicit sampler descriptor and reuse its immutable native\r\n * GPUSampler within this device generation. Each call receives an\r\n * independently releasable opaque handle.\r\n */\r\n async CreateSampler(options = {})\r\n {\r\n this._AssertReady();\r\n const plan = normalizeSampler(options);\r\n return this._SerializeValidation(async () =>\r\n {\r\n const device = this.GetDevice();\r\n if (typeof device.createSampler !== \"function\") fail(\"GPUDevice sampler creation is required to create samplers\");\r\n const generation = this._generation;\r\n let cached = this._samplerCache.get(plan.cacheKey);\r\n if (!cached)\r\n {\r\n const scope = {\r\n open: typeof device.pushErrorScope === \"function\" && typeof device.popErrorScope === \"function\"\r\n };\r\n if (scope.open) device.pushErrorScope(\"validation\");\r\n const popScope = async () =>\r\n {\r\n if (!scope.open) return null;\r\n scope.open = false;\r\n return device.popErrorScope();\r\n };\r\n try\r\n {\r\n const nativeSampler = device.createSampler(plan.descriptor);\r\n const validationError = await popScope();\r\n if (validationError)\r\n {\r\n fail(`sampler validation failed: ${validationError.message || validationError}`);\r\n }\r\n this._AssertGeneration(generation);\r\n cached = { generation, sampler: nativeSampler };\r\n this._samplerCache.set(plan.cacheKey, cached);\r\n }\r\n catch (error)\r\n {\r\n await popScope().catch(() => null);\r\n throw error;\r\n }\r\n }\r\n else\r\n {\r\n this._AssertGeneration(cached.generation);\r\n }\r\n\r\n let sampler;\r\n sampler = {\r\n label: plan.label,\r\n generation,\r\n ...plan.semantic,\r\n isComparison: plan.isComparison,\r\n isFiltering: plan.isFiltering,\r\n Destroy: () => this.DestroySampler(sampler)\r\n };\r\n SAMPLERS.set(sampler, {\r\n kind: \"sampler\",\r\n owner: this,\r\n generation,\r\n sampler: cached.sampler,\r\n isComparison: plan.isComparison,\r\n isFiltering: plan.isFiltering,\r\n destroyed: false\r\n });\r\n return sampler;\r\n });\r\n }\r\n\r\n /**\r\n * Releases one logical sampler handle without destroying its shared native\r\n * sampler.\r\n */\r\n DestroySampler(sampler)\r\n {\r\n const record = SAMPLERS.get(sampler);\r\n if (!record || record.owner !== this) fail(\"sampler belongs to another device\");\r\n record.destroyed = true;\r\n }\r\n\r\n /**\r\n * Atomically realize one keyed collection of already-prepared plain GPU\r\n * payloads. Child handles remain private until every queued creation has\r\n * settled successfully, and the returned bundle owns their cleanup.\r\n */\r\n async CreateResourceBundle(options = {})\r\n {\r\n this._AssertReady();\r\n const plan = normalizeResourceBundle(options);\r\n const generation = this._generation;\r\n const tasks = plan.definitions.map((definition) =>\r\n {\r\n let promise;\r\n if (definition.kind === \"geometry\") promise = this.CreateGeometry(definition.options);\r\n else if (definition.kind === \"texture\") promise = this.CreateTexture(definition.options);\r\n else promise = this.CreateSampler(definition.options);\r\n return { definition, promise };\r\n });\r\n const results = await Promise.allSettled(tasks.map((task) => task.promise));\r\n const fulfilled = results.flatMap((result, index) => result.status === \"fulfilled\"\r\n ? [ { definition: tasks[index].definition, resource: result.value } ]\r\n : []);\r\n const failure = results.find((result) => result.status === \"rejected\");\r\n let generationError = null;\r\n try\r\n {\r\n this._AssertGeneration(generation);\r\n }\r\n catch (error)\r\n {\r\n generationError = error;\r\n }\r\n if (failure || generationError)\r\n {\r\n for (let index = fulfilled.length - 1; index >= 0; index -= 1)\r\n {\r\n fulfilled[index].resource.Destroy();\r\n }\r\n throw failure?.reason || generationError;\r\n }\r\n\r\n const categoryEntries = {\r\n geometries: [],\r\n textures: [],\r\n samplers: []\r\n };\r\n for (const entry of fulfilled)\r\n {\r\n categoryEntries[entry.definition.category].push([ entry.definition.key, entry.resource ]);\r\n }\r\n const geometries = frozenRecord(categoryEntries.geometries);\r\n const textures = frozenRecord(categoryEntries.textures);\r\n const samplers = frozenRecord(categoryEntries.samplers);\r\n let bundle;\r\n bundle = {\r\n label: plan.label,\r\n generation,\r\n geometries,\r\n textures,\r\n samplers,\r\n Destroy: () => this.DestroyResourceBundle(bundle)\r\n };\r\n RESOURCE_BUNDLES.set(bundle, {\r\n owner: this,\r\n generation,\r\n resources: fulfilled.map((entry) => entry.resource),\r\n destroyed: false\r\n });\r\n return bundle;\r\n }\r\n\r\n /**\r\n * Destroys a resource bundle's child handles in reverse creation order.\r\n */\r\n DestroyResourceBundle(bundle)\r\n {\r\n const record = RESOURCE_BUNDLES.get(bundle);\r\n if (!record || record.owner !== this) fail(\"resource bundle belongs to another device\");\r\n if (record.destroyed) return;\r\n record.destroyed = true;\r\n let firstError = null;\r\n for (let index = record.resources.length - 1; index >= 0; index -= 1)\r\n {\r\n try\r\n {\r\n record.resources[index].Destroy();\r\n }\r\n catch (error)\r\n {\r\n firstError ||= error;\r\n }\r\n }\r\n if (firstError)\r\n {\r\n record.destroyed = false;\r\n throw firstError;\r\n }\r\n }\r\n\r\n /**\r\n * Realize the already-published RGBA8 CPU payload attached to one resource.\r\n * Mapping remains synchronous and GPU-free; allocation and guarded adapter\r\n * publication are delegated to {@link CjsWebgpuDevice#_RealizeResource}.\r\n * Concurrent calls for the same resource and adapter key share one operation.\r\n *\r\n * @param {CjsResource} resource Current loaded resource exposing `GetPayload()`.\r\n * @param {object} options Texture key, bundle label, and adapter slot.\r\n * @param {string} options.textureKey Binding/resource identity for the texture.\r\n * @param {string} [options.bundleLabel=\"prepared RGBA8 texture\"] Diagnostic bundle label.\r\n * @param {string} [options.adapterKey=\"webgpu\"] Resource adapter slot.\r\n * @returns {Promise<object>} Engine-owned prepared resource bundle.\r\n */\r\n RealizeRgba8Texture(resource, options = {})\r\n {\r\n assertRealizationResource(resource);\r\n const plan = normalizeRgba8TextureRealizationOptions(options);\r\n const payload = resource.GetPayload();\r\n const bitmap = CjsSchema.cast(payload, HostBitmap);\r\n const input = bitmap ? mapRgba8TextureBitmap(bitmap, plan) : mapRgba8TexturePayload(payload, plan);\r\n return this.RealizeResource(resource, input, { adapterKey: plan.adapterKey });\r\n }\r\n\r\n /**\r\n * Realize already-selected WebGPU sampler state from a published CPU payload.\r\n * Selection and texture pairing remain caller policy; this method only maps,\r\n * allocates, and commits the selected sampler under the requested adapter key.\r\n *\r\n * @param {CjsResource} resource Current loaded resource exposing `GetPayload()`.\r\n * @param {object} options Sampler key, bundle label, and adapter slot.\r\n * @param {string} options.samplerKey Binding/resource identity for the sampler.\r\n * @param {string} [options.bundleLabel=\"prepared WebGPU sampler\"] Diagnostic bundle label.\r\n * @param {string} [options.adapterKey=\"webgpu\"] Resource adapter slot.\r\n * @returns {Promise<object>} Engine-owned prepared resource bundle.\r\n */\r\n RealizeSampler(resource, options = {})\r\n {\r\n assertRealizationResource(resource);\r\n const plan = normalizeSamplerRealizationOptions(options);\r\n const input = mapSamplerPayload(resource.GetPayload(), plan);\r\n return this.RealizeResource(resource, input, { adapterKey: plan.adapterKey });\r\n }\r\n\r\n /**\r\n * Realize one already-published CPU resource as an engine-owned WebGPU bundle.\r\n *\r\n * The in-flight boundary is this device session plus resource handle and\r\n * adapter key. Candidate allocation completes before a synchronous current-\r\n * target check and adapter commit. A stale or failed candidate is destroyed;\r\n * a current failure restores any usable prior adapter and otherwise returns\r\n * the resource to `LOADED` without discarding its CPU payload.\r\n *\r\n * @param {CjsResource} resource Current loaded resource receiving the adapter.\r\n * @param {object} value Plain geometry/texture/sampler bundle input. When omitted, the resource payload is used.\r\n * @param {object} [options={}] Adapter publication options.\r\n * @param {string} [options.adapterKey=\"webgpu\"] Resource adapter slot.\r\n * @returns {Promise<object>} Engine-owned prepared resource bundle.\r\n */\r\n RealizeResource(resource, value, options = {})\r\n {\r\n assertRealizationResource(resource);\r\n const plan = normalizeResourceRealizationOptions(options);\r\n let operations = this._resourceRealizations.get(resource);\r\n if (!operations)\r\n {\r\n operations = new Map();\r\n this._resourceRealizations.set(resource, operations);\r\n }\r\n const existing = operations.get(plan.adapterKey);\r\n if (existing) return existing;\r\n\r\n const input = value === undefined ? resource.GetPayload() : value;\r\n const promise = this._RealizeResource(resource, input, plan);\r\n operations.set(plan.adapterKey, promise);\r\n const remove = () =>\r\n {\r\n if (operations.get(plan.adapterKey) === promise) operations.delete(plan.adapterKey);\r\n };\r\n promise.then(remove, remove);\r\n return promise;\r\n }\r\n\r\n /**\r\n * Allocates, publishes, and rolls back one guarded resource realization.\r\n */\r\n async _RealizeResource(resource, value, plan)\r\n {\r\n const stale = () =>\r\n {\r\n const error = new Error(`CjsWebgpuDevice: resource realization target ${plan.adapterKey} is stale`);\r\n error.code = \"CJS_WEBGPU_STALE_RESOURCE_REALIZATION\";\r\n error.adapterKey = plan.adapterKey;\r\n return error;\r\n };\r\n const assertOwned = (bundle, label) =>\r\n {\r\n if (bundle === undefined || bundle === null) return null;\r\n const record = RESOURCE_BUNDLES.get(bundle);\r\n if (!record || record.owner !== this)\r\n {\r\n fail(`${label} adapter slot ${plan.adapterKey} is not an engine-owned resource bundle`);\r\n }\r\n return record;\r\n };\r\n const isUsable = (bundle) =>\r\n {\r\n const record = bundle ? RESOURCE_BUNDLES.get(bundle) : null;\r\n return Boolean(record\r\n && record.owner === this\r\n && record.generation === this._generation\r\n && record.destroyed !== true);\r\n };\r\n\r\n if (!resource.IsCurrent()) throw stale();\r\n let displaced = resource.GetAdapterResource(plan.adapterKey);\r\n assertOwned(displaced, \"existing\");\r\n resource.MarkPreparing();\r\n if (!resource.IsCurrent()) throw stale();\r\n\r\n let candidate = null;\r\n let committed = false;\r\n try\r\n {\r\n candidate = await this.CreateResourceBundle(value);\r\n if (!resource.IsCurrent()) throw stale();\r\n\r\n displaced = resource.GetAdapterResource(plan.adapterKey);\r\n assertOwned(displaced, \"current\");\r\n resource.SetAdapterResource(plan.adapterKey, candidate);\r\n if (resource.GetAdapterResource(plan.adapterKey) !== candidate)\r\n {\r\n fail(`resource realization adapter slot ${plan.adapterKey} did not publish the candidate bundle`);\r\n }\r\n resource.MarkPrepared();\r\n if (!resource.IsCurrent()) throw stale();\r\n committed = true;\r\n if (displaced && displaced !== candidate) displaced.Destroy();\r\n return candidate;\r\n }\r\n catch (error)\r\n {\r\n if (!committed)\r\n {\r\n try\r\n {\r\n if (resource.IsCurrent())\r\n {\r\n const current = resource.GetAdapterResource(plan.adapterKey);\r\n if (current === candidate)\r\n {\r\n if (displaced !== undefined && displaced !== null)\r\n {\r\n resource.SetAdapterResource(plan.adapterKey, displaced);\r\n }\r\n else\r\n {\r\n resource.DestroyAdapterResource(plan.adapterKey);\r\n }\r\n }\r\n if (isUsable(resource.GetAdapterResource(plan.adapterKey))) resource.MarkPrepared();\r\n else resource.MarkLoaded();\r\n }\r\n }\r\n catch\r\n {\r\n // Preserve the realization error. The candidate is still destroyed\r\n // below, and a detached resource must not receive further mutation.\r\n }\r\n try\r\n {\r\n candidate?.Destroy();\r\n }\r\n catch\r\n {\r\n // Preserve the realization error after best-effort candidate cleanup.\r\n }\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Creates generation-bound bind groups and owned uniform buffers for a live\r\n * pipeline.\r\n */\r\n CreateBindingSet(livePipeline, options = {})\r\n {\r\n const record = assertLive(this, livePipeline);\r\n const usage = this._bufferUsage;\r\n const device = this.GetDevice();\r\n\r\n const uniformInputs = new Map(resourceEntries(options.uniformData, \"binding-set uniformData\"));\r\n const externalInputs = new Map(resourceEntries(options.resources, \"binding-set resources\"));\r\n const uniformPlans = new Map();\r\n const externalPlans = new Map();\r\n for (const group of record.descriptor.groups)\r\n {\r\n for (const entry of group.entries)\r\n {\r\n const buffer = entry.descriptor.buffer;\r\n if (buffer?.type === \"uniform\")\r\n {\r\n // A dynamic binding is bound ONCE and re-aimed per draw through the\r\n // offsets handed to setBindGroup, which is what lets many objects\r\n // share one ring buffer instead of one buffer each. The binding's\r\n // size is then the WINDOW, not the buffer, so it is taken from the\r\n // layout's minBindingSize rather than from the data's length.\r\n const size = buffer.minBindingSize;\r\n if (!Number.isInteger(size) || size < 1 || size % 4 !== 0)\r\n {\r\n fail(`${entry.identity} has an invalid uniform binding size`);\r\n }\r\n const data = uniformInputs.get(entry.identity);\r\n if (data == null) fail(`binding set is missing uniform data ${entry.identity}`);\r\n if (!ArrayBuffer.isView(data)) fail(`${entry.identity} uniform data must be an ArrayBufferView`);\r\n if (data.byteLength < size || data.byteLength % 4 !== 0)\r\n {\r\n fail(`${entry.identity} uniform data must be a 4-byte-aligned view of at least ${size} bytes`);\r\n }\r\n uniformPlans.set(entry.identity, {\r\n entry,\r\n data,\r\n size: data.byteLength,\r\n minBindingSize: size,\r\n dynamic: buffer.hasDynamicOffset === true,\r\n group: group.group\r\n });\r\n }\r\n else\r\n {\r\n const resource = externalInputs.get(entry.identity);\r\n if (resource == null) fail(`binding set is missing caller resource ${entry.identity}`);\r\n externalPlans.set(entry.identity, { entry, ...resolveBindingResource(this, entry, resource) });\r\n }\r\n }\r\n }\r\n for (const identity of uniformInputs.keys())\r\n {\r\n if (!uniformPlans.has(identity)) fail(`binding set has unexpected uniform data ${identity}`);\r\n }\r\n for (const identity of externalInputs.keys())\r\n {\r\n if (!externalPlans.has(identity)) fail(`binding set has unexpected caller resource ${identity}`);\r\n }\r\n if (uniformPlans.size\r\n && (!usage || !Number.isInteger(usage.UNIFORM) || !Number.isInteger(usage.COPY_DST)))\r\n {\r\n fail(\"GPUBufferUsage constants are required to create binding sets\");\r\n }\r\n if (uniformPlans.size\r\n && (typeof device.createBuffer !== \"function\" || typeof device.queue?.writeBuffer !== \"function\"))\r\n {\r\n fail(\"GPUDevice buffer creation and queue.writeBuffer are required to create binding sets\");\r\n }\r\n\r\n const buffers = [];\r\n try\r\n {\r\n const resources = new Map();\r\n const uniforms = new Map();\r\n const adapterResources = new Set();\r\n for (const [ identity, plan ] of uniformPlans)\r\n {\r\n const buffer = device.createBuffer({\r\n label: `${record.descriptor.key || \"pipeline\"}.${identity}`,\r\n size: plan.size,\r\n usage: usage.UNIFORM | usage.COPY_DST\r\n });\r\n buffers.push(buffer);\r\n device.queue.writeBuffer(buffer, 0, plan.data);\r\n // A dynamic binding's resource must describe the window the shader\r\n // sees, not the whole buffer; WebGPU adds the per-draw offset to this\r\n // one and validates that the window still fits.\r\n resources.set(identity, plan.dynamic\r\n ? { buffer, offset: 0, size: plan.minBindingSize }\r\n : { buffer });\r\n uniforms.set(identity, { buffer, size: plan.size, dynamic: plan.dynamic });\r\n }\r\n for (const [ identity, plan ] of externalPlans)\r\n {\r\n resources.set(identity, plan.resource);\r\n if (plan.adapterRecord) adapterResources.add(plan.adapterRecord);\r\n }\r\n\r\n const bindGroups = record.descriptor.groups.map((group) => device.createBindGroup({\r\n label: `${record.descriptor.key || \"pipeline\"}.group${group.group}.bindingSet`,\r\n layout: record.bindGroupLayouts[group.group],\r\n entries: group.entries.map((entry) => ({\r\n binding: entry.binding,\r\n resource: resources.get(entry.identity)\r\n }))\r\n }));\r\n let bindingSet;\r\n bindingSet = {\r\n key: record.descriptor.key,\r\n generation: record.generation,\r\n Update: (uniformData) =>\r\n {\r\n this.UpdateBindingSet(bindingSet, uniformData);\r\n return bindingSet;\r\n },\r\n Destroy: () => this.DestroyBindingSet(bindingSet)\r\n };\r\n BINDING_SETS.set(bindingSet, {\r\n owner: this,\r\n generation: record.generation,\r\n livePipeline,\r\n bindGroups: bindGroups,\r\n buffers: buffers.slice(),\r\n uniforms,\r\n adapterResources: Array.from(adapterResources),\r\n destroyed: false\r\n });\r\n return bindingSet;\r\n }\r\n catch (error)\r\n {\r\n for (const buffer of buffers)\r\n {\r\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n // A buffer Trinity owns and rewrites, as opposed to the geometry buffers\r\n // above, which this device uploads once and caches. Carbon's `Tr2BufferAL`\r\n // is the caller; see `CjsWebgpuBufferAL`.\r\n //\r\n // The handle is opaque and the `GPUBuffer` stays in DEVICE_BUFFERS, matching\r\n // how geometries and binding sets are held here.\r\n\r\n /**\r\n * Creates a buffer whose contents the caller rewrites.\r\n *\r\n * @param {object} options `{ label, size, usage }` - usage is a raw\r\n * `GPUBufferUsage` mask; COPY_DST is added because writes arrive through\r\n * `WriteDeviceBuffer`.\r\n * @returns {object} An opaque handle carrying `size` and `Destroy`.\r\n */\r\n CreateDeviceBuffer({ label = \"device-buffer\", size, usage })\r\n {\r\n const device = this.GetDevice();\r\n\r\n if (!Number.isInteger(size) || size <= 0) fail(\"a device buffer needs a positive integer size\");\r\n if (!Number.isInteger(usage) || usage <= 0) fail(\"a device buffer needs a usage mask\");\r\n\r\n // WebGPU requires a multiple of 4, and writeBuffer requires the same of\r\n // every write. Rounding up here means the shadow copy and the GPU buffer\r\n // always agree on length.\r\n const aligned = alignedBufferSize(size);\r\n const buffer = device.createBuffer({ label, size: aligned, usage: usage | this._bufferUsage.COPY_DST });\r\n\r\n const handle = {\r\n size: aligned,\r\n requestedSize: size,\r\n Destroy: () =>\r\n {\r\n const record = DEVICE_BUFFERS.get(handle);\r\n if (!record) return false;\r\n DEVICE_BUFFERS.delete(handle);\r\n record.buffer.destroy();\r\n return true;\r\n }\r\n };\r\n\r\n DEVICE_BUFFERS.set(handle, { buffer, size: aligned, generation: this.GetGeneration() });\r\n\r\n return handle;\r\n }\r\n\r\n /**\r\n * Uploads bytes into a device buffer.\r\n *\r\n * @param {object} handle A `CreateDeviceBuffer` handle.\r\n * @param {ArrayBufferView} bytes The bytes to write.\r\n * @param {number} [offset] Byte offset into the buffer.\r\n * @returns {object} The handle.\r\n */\r\n WriteDeviceBuffer(handle, bytes, offset = 0)\r\n {\r\n const record = DEVICE_BUFFERS.get(handle);\r\n\r\n if (!record) fail(\"that is not a live device buffer\");\r\n if (!ArrayBuffer.isView(bytes)) fail(\"device buffer data must be an ArrayBufferView\");\r\n if (offset % 4 !== 0) fail(\"a device buffer write must start on a four-byte boundary\");\r\n if (bytes.byteLength % 4 !== 0) fail(\"a device buffer write must be a whole number of four-byte words\");\r\n if (offset + bytes.byteLength > record.size) fail(\"that write runs past the end of the device buffer\");\r\n\r\n this.GetDevice().queue.writeBuffer(record.buffer, offset, bytes);\r\n\r\n return handle;\r\n }\r\n\r\n /**\r\n * The `GPUBuffer` behind a handle, for binding it to a draw.\r\n *\r\n * @param {object} handle A `CreateDeviceBuffer` handle.\r\n * @returns {GPUBuffer} The buffer.\r\n */\r\n GetDeviceBuffer(handle)\r\n {\r\n const record = DEVICE_BUFFERS.get(handle);\r\n\r\n if (!record) fail(\"that is not a live device buffer\");\r\n\r\n return record.buffer;\r\n }\r\n\r\n /**\r\n * Validates and uploads exact-size updates to a binding set's owned uniform\r\n * buffers.\r\n */\r\n UpdateBindingSet(bindingSet, uniformData)\r\n {\r\n const record = assertBindingSet(this, bindingSet);\r\n const updates = resourceEntries(uniformData, \"binding-set uniform update\");\r\n if (!updates.length) fail(\"binding-set uniform update requires at least one entry\");\r\n for (const [ identity, data ] of updates)\r\n {\r\n const uniform = record.uniforms.get(identity);\r\n if (!uniform) fail(`binding set has no owned uniform ${identity}`);\r\n if (!ArrayBuffer.isView(data)) fail(`${identity} uniform data must be an ArrayBufferView`);\r\n if (data.byteLength !== uniform.size)\r\n {\r\n fail(`${identity} uniform data must be exactly ${uniform.size} bytes`);\r\n }\r\n }\r\n const device = this.GetDevice();\r\n for (const [ identity, data ] of updates)\r\n {\r\n device.queue.writeBuffer(record.uniforms.get(identity).buffer, 0, data);\r\n }\r\n return bindingSet;\r\n }\r\n\r\n /**\r\n * Destroys a binding set's owned uniform buffers without releasing external\r\n * resources.\r\n */\r\n DestroyBindingSet(bindingSet)\r\n {\r\n const record = BINDING_SETS.get(bindingSet);\r\n if (!record || record.owner !== this) fail(\"binding set belongs to another device\");\r\n if (record.destroyed) return;\r\n record.destroyed = true;\r\n for (const buffer of record.buffers)\r\n {\r\n if (typeof buffer?.destroy === \"function\") buffer.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Validates and snapshots one generation-bound indexed or non-indexed draw.\r\n */\r\n CreateDraw(livePipeline, options = {})\r\n {\r\n const record = assertLive(this, livePipeline);\r\n let geometryRecord = null;\r\n let vertexBuffers;\r\n if (options.geometry != null)\r\n {\r\n if (options.vertexBuffers != null || options.indexBuffer != null)\r\n {\r\n fail(\"draw geometry cannot be combined with raw vertexBuffers or indexBuffer\");\r\n }\r\n geometryRecord = assertGeometry(this, options.geometry);\r\n const pipelineVertexLayouts = canonicalVertexLayouts(\r\n record.pipelineRecipe.vertex.buffers,\r\n \"live pipeline vertex buffers\"\r\n );\r\n if (!samePlain(pipelineVertexLayouts, geometryRecord.vertexBufferLayouts))\r\n {\r\n fail(\"draw geometry vertex layouts do not match the live pipeline\");\r\n }\r\n vertexBuffers = geometryRecord.vertexBuffers.map(({ slot, buffer, offset, size }) => ({\r\n slot,\r\n buffer,\r\n offset,\r\n size\r\n }));\r\n }\r\n else\r\n {\r\n vertexBuffers = (Array.isArray(options.vertexBuffers) ? options.vertexBuffers : []).map((entry) =>\r\n {\r\n if (!Number.isInteger(entry?.slot) || entry.slot < 0 || !entry.buffer) fail(\"draw has an invalid vertex buffer\");\r\n if (Object.hasOwn(entry, \"offset\") && (!Number.isSafeInteger(entry.offset) || entry.offset < 0)) fail(\"draw has an invalid vertex-buffer offset\");\r\n if (Object.hasOwn(entry, \"size\") && (!Number.isSafeInteger(entry.size) || entry.size < 0)) fail(\"draw has an invalid vertex-buffer size\");\r\n return { ...entry };\r\n });\r\n }\r\n const vertexSlots = new Set();\r\n for (const entry of vertexBuffers)\r\n {\r\n if (vertexSlots.has(entry.slot)) fail(`draw duplicates vertex-buffer slot ${entry.slot}`);\r\n vertexSlots.add(entry.slot);\r\n }\r\n vertexBuffers.sort((left, right) => left.slot - right.slot);\r\n\r\n const drawCall = options.draw;\r\n if (!drawCall || typeof drawCall !== \"object\") fail(\"draw call is required\");\r\n const hasIndexCount = Object.hasOwn(drawCall, \"indexCount\");\r\n const hasVertexCount = Object.hasOwn(drawCall, \"vertexCount\");\r\n if (hasIndexCount === hasVertexCount) fail(\"draw requires exactly one of indexCount or vertexCount\");\r\n const indexed = hasIndexCount;\r\n const count = indexed ? drawCall.indexCount : drawCall.vertexCount;\r\n if (!Number.isSafeInteger(count) || count < 0 || count > MAX_GPU_SIZE_32)\r\n {\r\n fail(`draw ${indexed ? \"indexCount\" : \"vertexCount\"} must be a GPUSize32 value`);\r\n }\r\n const uintValue = (key, fallback) =>\r\n {\r\n const value = Object.hasOwn(drawCall, key) ? drawCall[key] : fallback;\r\n if (!Number.isSafeInteger(value) || value < 0 || value > MAX_GPU_SIZE_32)\r\n {\r\n fail(`draw ${key} must be a GPUSize32 value`);\r\n }\r\n return value;\r\n };\r\n const normalizedDraw = indexed\r\n ? {\r\n indexCount: count,\r\n instanceCount: uintValue(\"instanceCount\", 1),\r\n firstIndex: uintValue(\"firstIndex\", 0),\r\n baseVertex: Object.hasOwn(drawCall, \"baseVertex\") ? drawCall.baseVertex : 0,\r\n firstInstance: uintValue(\"firstInstance\", 0)\r\n }\r\n : {\r\n vertexCount: count,\r\n instanceCount: uintValue(\"instanceCount\", 1),\r\n firstVertex: uintValue(\"firstVertex\", 0),\r\n firstInstance: uintValue(\"firstInstance\", 0)\r\n };\r\n if (indexed && (!Number.isSafeInteger(normalizedDraw.baseVertex)\r\n || normalizedDraw.baseVertex < MIN_GPU_SIGNED_OFFSET_32\r\n || normalizedDraw.baseVertex > MAX_GPU_SIGNED_OFFSET_32))\r\n {\r\n fail(\"draw baseVertex must be a GPUSignedOffset32 value\");\r\n }\r\n const suppliedIndexBuffer = geometryRecord?.indexBuffer || options.indexBuffer;\r\n if (!indexed && suppliedIndexBuffer) fail(\"non-indexed draw cannot include an index buffer\");\r\n if (indexed && (!suppliedIndexBuffer?.buffer || !suppliedIndexBuffer.format)) fail(\"indexed draw requires an index buffer and format\");\r\n const indexBuffer = indexed ? { ...suppliedIndexBuffer } : null;\r\n if (indexBuffer && Object.hasOwn(indexBuffer, \"offset\") && (!Number.isSafeInteger(indexBuffer.offset) || indexBuffer.offset < 0)) fail(\"draw has an invalid index-buffer offset\");\r\n if (indexBuffer && Object.hasOwn(indexBuffer, \"size\") && (!Number.isSafeInteger(indexBuffer.size) || indexBuffer.size < 0)) fail(\"draw has an invalid index-buffer size\");\r\n if (geometryRecord)\r\n {\r\n if (indexed && normalizedDraw.firstIndex + normalizedDraw.indexCount > geometryRecord.indexBuffer.count)\r\n {\r\n fail(\"indexed draw exceeds geometry index capacity\");\r\n }\r\n if (!indexed)\r\n {\r\n for (const entry of geometryRecord.vertexBuffers.filter((candidate) => candidate.stepMode === \"vertex\"))\r\n {\r\n if (normalizedDraw.firstVertex + normalizedDraw.vertexCount > entry.capacity)\r\n {\r\n fail(`draw exceeds geometry vertex capacity at slot ${entry.slot}`);\r\n }\r\n }\r\n }\r\n for (const entry of geometryRecord.vertexBuffers.filter((candidate) => candidate.stepMode === \"instance\"))\r\n {\r\n if (normalizedDraw.firstInstance + normalizedDraw.instanceCount > entry.capacity)\r\n {\r\n fail(`draw exceeds geometry instance capacity at slot ${entry.slot}`);\r\n }\r\n }\r\n }\r\n\r\n const hasBindingSet = options.bindingSet != null;\r\n const hasResources = options.resources != null;\r\n if (hasBindingSet === hasResources)\r\n {\r\n fail(\"draw requires exactly one of bindingSet or resources\");\r\n }\r\n let bindingSetRecord = null;\r\n const adapterResources = new Set();\r\n let bindGroups;\r\n if (hasBindingSet)\r\n {\r\n bindingSetRecord = assertBindingSet(this, options.bindingSet, livePipeline);\r\n bindGroups = bindingSetRecord.bindGroups;\r\n }\r\n else\r\n {\r\n const resourceGroups = record.descriptor.groups.map((group) => ({\r\n group: group.group,\r\n entries: group.entries.map((entry) =>\r\n {\r\n const resource = findResource(options.resources, entry.identity);\r\n if (resource == null) fail(`draw is missing resource ${entry.identity}`);\r\n const resolved = resolveBindingResource(this, entry, resource);\r\n if (resolved.adapterRecord) adapterResources.add(resolved.adapterRecord);\r\n return { binding: entry.binding, resource: resolved.resource };\r\n })\r\n }));\r\n const device = this.GetDevice();\r\n bindGroups = resourceGroups.map((group) => device.createBindGroup({\r\n label: `${record.descriptor.key || \"pipeline\"}.group${group.group}.resources`,\r\n layout: record.bindGroupLayouts[group.group],\r\n entries: group.entries\r\n }));\r\n }\r\n\r\n const draw = {\r\n key: record.descriptor.key,\r\n generation: record.generation,\r\n livePipeline,\r\n bindGroups: bindGroups,\r\n dynamicOffsets: resolveDynamicOffsets(record, options.dynamicOffsets, this.GetDevice()),\r\n vertexBuffers: vertexBuffers,\r\n indexed,\r\n indexBuffer,\r\n draw: normalizedDraw\r\n };\r\n DRAWS.set(draw, {\r\n owner: this,\r\n generation: record.generation,\r\n record,\r\n bindingSetRecord,\r\n geometryRecord,\r\n adapterResources: Array.from(adapterResources),\r\n draw\r\n });\r\n return draw;\r\n }\r\n\r\n /**\r\n * Encodes one validated draw into a render pass.\r\n *\r\n * An optional `state` is a CjsWebgpuEncodeState the CALLER owns for the\r\n * lifetime of one render pass. When supplied, a set whose value is already\r\n * bound is skipped - Carbon's DX11 path does the same redundancy compare on\r\n * its shader program and its three state caches. Omitting it sets\r\n * everything, which is always correct and is what an unrelated caller gets.\r\n *\r\n * Deciding WHICH batches may share is not this method's business; that is\r\n * the dispatcher's grouping. This only honours a decision already made.\r\n */\r\n EncodeDraw(pass, draw, state = null)\r\n {\r\n const wrapper = DRAWS.get(draw);\r\n if (!wrapper || wrapper.owner !== this) fail(\"draw belongs to another device\");\r\n this._AssertGeneration(wrapper.generation);\r\n if (wrapper.bindingSetRecord?.destroyed) fail(\"draw binding set is destroyed\");\r\n assertAdapterResources(wrapper.bindingSetRecord?.adapterResources, \"draw binding set\");\r\n assertAdapterResources(wrapper.adapterResources, \"draw\");\r\n if (wrapper.geometryRecord?.destroyed) fail(\"draw geometry is destroyed\");\r\n if (!pass || typeof pass.setPipeline !== \"function\") fail(\"a GPURenderPassEncoder is required\");\r\n if (state !== null && !(state instanceof CjsWebgpuEncodeState))\r\n {\r\n throw new TypeError(\"CjsWebgpuDevice.EncodeDraw state must be a CjsWebgpuEncodeState or null.\");\r\n }\r\n const encodeState = state === null ? null : state.Require(pass);\r\n\r\n if (!encodeState || encodeState.NeedsPipeline(draw.livePipeline.pipeline))\r\n {\r\n pass.setPipeline(draw.livePipeline.pipeline);\r\n }\r\n draw.bindGroups.forEach((bindGroup, group) =>\r\n {\r\n const dynamicOffsets = draw.dynamicOffsets?.[group] ?? null;\r\n // A dynamic group is re-set every draw even when the bind group object is\r\n // unchanged, because the OFFSETS are what differ between two objects\r\n // sharing one ring buffer. Eliding it would draw them all at the same\r\n // slot.\r\n if (dynamicOffsets)\r\n {\r\n encodeState?.NeedsBindGroup(group, bindGroup);\r\n pass.setBindGroup(group, bindGroup, dynamicOffsets);\r\n }\r\n else if (!encodeState || encodeState.NeedsBindGroup(group, bindGroup))\r\n {\r\n pass.setBindGroup(group, bindGroup);\r\n }\r\n });\r\n if (!encodeState || encodeState.NeedsVertexBuffers(draw.vertexBuffers))\r\n {\r\n for (const entry of draw.vertexBuffers)\r\n {\r\n if (entry.size === undefined) pass.setVertexBuffer(entry.slot, entry.buffer, entry.offset ?? 0);\r\n else pass.setVertexBuffer(entry.slot, entry.buffer, entry.offset ?? 0, entry.size);\r\n }\r\n }\r\n if (draw.indexed)\r\n {\r\n if (!encodeState || encodeState.NeedsIndexBuffer(draw.indexBuffer))\r\n {\r\n if (draw.indexBuffer.size === undefined)\r\n {\r\n pass.setIndexBuffer(draw.indexBuffer.buffer, draw.indexBuffer.format, draw.indexBuffer.offset ?? 0);\r\n }\r\n else\r\n {\r\n pass.setIndexBuffer(draw.indexBuffer.buffer, draw.indexBuffer.format, draw.indexBuffer.offset ?? 0, draw.indexBuffer.size);\r\n }\r\n }\r\n pass.drawIndexed(\r\n draw.draw.indexCount,\r\n draw.draw.instanceCount,\r\n draw.draw.firstIndex,\r\n draw.draw.baseVertex,\r\n draw.draw.firstInstance\r\n );\r\n }\r\n else\r\n {\r\n pass.draw(\r\n draw.draw.vertexCount,\r\n draw.draw.instanceCount,\r\n draw.draw.firstVertex,\r\n draw.draw.firstInstance\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Submits command buffers to the ready device queue.\r\n */\r\n Submit(commandBuffers)\r\n {\r\n this.GetDevice().queue.submit(commandBuffers);\r\n }\r\n\r\n /**\r\n * Acquires or accepts a replacement adapter/device and advances the device\r\n * generation.\r\n */\r\n async Recreate(options = {})\r\n {\r\n if (this._state === \"destroyed\") fail(\"cannot recreate a destroyed device\");\r\n const requestSerial = ++this._recreateSerial;\r\n const lifecycleVersion = this._lifecycleVersion;\r\n const previous = this._device;\r\n const gpu = options.gpu || this._gpu;\r\n if (!gpu || typeof gpu.requestAdapter !== \"function\") fail(\"recreation requires the original GPU provider\");\r\n const adapterOptions = Object.hasOwn(options, \"adapterOptions\") ? options.adapterOptions : this._adapterOptions;\r\n const deviceDescriptor = Object.hasOwn(options, \"deviceDescriptor\") ? options.deviceDescriptor : this._deviceDescriptor;\r\n const adapter = options.adapter || await gpu.requestAdapter(adapterOptions);\r\n if (!adapter) fail(\"requestAdapter returned null during recreation\");\r\n const device = options.device || await adapter.requestDevice(deviceDescriptor);\r\n if (this._state === \"destroyed\" || this._lifecycleVersion !== lifecycleVersion || this._recreateSerial !== requestSerial)\r\n {\r\n if (device !== previous && device !== this._device && typeof device?.destroy === \"function\") device.destroy();\r\n fail(\"recreation was superseded by another lifecycle change\");\r\n }\r\n this._gpu = gpu;\r\n this._adapter = adapter;\r\n this._device = device;\r\n this._adapterOptions = adapterOptions;\r\n this._deviceDescriptor = deviceDescriptor;\r\n this._generation += 1;\r\n this._samplerCache = new Map();\r\n // A pipeline built for a device that is gone is not repairable.\r\n this._preparedCache.Clear();\r\n this._renderPipelineCache.Clear();\r\n this._state = \"ready\";\r\n this._lostInfo = null;\r\n this._WatchDevice(device, this._generation);\r\n if (previous && previous !== device && typeof previous.destroy === \"function\") previous.destroy();\r\n return this;\r\n }\r\n\r\n /**\r\n * Transitions the boundary to destroyed, invalidates its generation, and\r\n * destroys the native device.\r\n */\r\n Destroy()\r\n {\r\n if (this._state === \"destroyed\") return;\r\n const device = this._device;\r\n this._lifecycleVersion += 1;\r\n this._recreateSerial += 1;\r\n this._state = \"destroyed\";\r\n this._generation += 1;\r\n this._samplerCache.clear();\r\n this._preparedCache.Clear();\r\n this._renderPipelineCache.Clear();\r\n this._device = null;\r\n if (typeof device?.destroy === \"function\") device.destroy();\r\n }\r\n\r\n /**\r\n * Throws unless the boundary has a ready native device.\r\n */\r\n _AssertReady()\r\n {\r\n if (this._state !== \"ready\" || !this._device) fail(`device is ${this._state}`);\r\n }\r\n\r\n /**\r\n * Throws unless an object generation matches the current ready device.\r\n */\r\n _AssertGeneration(generation)\r\n {\r\n this._AssertReady();\r\n if (generation !== this._generation) fail(`object belongs to stale device generation ${generation}`);\r\n }\r\n\r\n /**\r\n * Queues a validation-sensitive operation after all previously queued\r\n * operations settle.\r\n */\r\n _SerializeValidation(operation)\r\n {\r\n const run = this._validationTail.then(operation, operation);\r\n this._validationTail = run.then(() => undefined, () => undefined);\r\n return run;\r\n }\r\n\r\n /**\r\n * Tracks loss for one device generation and accepts only a still-current\r\n * loss event.\r\n */\r\n _WatchDevice(device, generation)\r\n {\r\n if (!device?.lost || typeof device.lost.then !== \"function\") return;\r\n device.lost.then((info) =>\r\n {\r\n if (this._device !== device || this._generation !== generation || this._state !== \"ready\") return;\r\n this._state = \"lost\";\r\n this._lostInfo = info || null;\r\n this._samplerCache.clear();\r\n this._preparedCache.Clear();\r\n this._renderPipelineCache.Clear();\r\n this._onLost?.(this._lostInfo, generation);\r\n }).catch(() => undefined);\r\n }\r\n}\r\n"],"names":["PREPARED_PIPELINES","WeakMap","LIVE_PIPELINES","BINDING_SETS","GEOMETRIES","TEXTURES","SAMPLERS","RESOURCE_BUNDLES","DRAWS","DEVICE_BUFFERS","MAX_GPU_SIZE_32","MIN_GPU_SIGNED_OFFSET_32","MAX_GPU_SIGNED_OFFSET_32","VERTEX_FORMAT_BYTES","Map","TEXTURE_VIEW_DIMENSIONS","Set","SAMPLER_ADDRESS_MODES","SAMPLER_FILTER_MODES","SAMPLER_COMPARE_FUNCTIONS","SELECTED_SAMPLER_PAYLOAD_KEYS","SELECTED_SAMPLER_REQUIRED_KEYS","Object","freeze","RGBA8_TEXTURE_PAYLOAD_KEYS","fail","message","Error","asPipelineJson","pipeline","ToJSON","normalizeStageName","value","String","bindingIdentity","binding","resourceKind","Number","isInteger","registerSpace","registerIndex","identity","undefined","scopeIdentity","visibility","Array","isArray","from","map","length","assertPlainObject","label","prototype","getPrototypeOf","getOwnPropertySymbols","frozenRecord","entries","result","key","defineProperty","configurable","enumerable","writable","snapshotPlain","entry","samePlain","left","right","is","every","index","leftKeys","keys","sort","rightKeys","assertKeys","allowed","has","binaryView","ArrayBuffer","isView","Uint8Array","buffer","byteOffset","byteLength","slice","normalizeVertexLayout","isSafeInteger","arrayStride","stepMode","attributes","locations","attribute","attributeLabel","shaderLocation","add","offset","byteSize","get","format","alignment","Math","min","canonicalVertexLayouts","values","layouts","shaderLocations","layout","normalizeGeometry","options","vertexBuffers","slot","data","indexBuffer","elementSize","alignedBufferSize","ceil","validateGeometryLimits","plan","device","limits","exceeds","name","isFinite","maxVertexBuffers","attributeCount","reduce","total","maxVertexAttributes","maxVertexBufferArrayStride","maxBufferSize","normalizeTexture","width","height","PlanTextureUpload","layers","hasOwn","viewDimension","mipLevelCount","bytesPerRow","writes","blockBytes","expectedBytes","rowsPerImage","formatName","validateTextureLimits","limit","maxTextureDimension2D","layerLimit","maxTextureArrayLayers","normalizeSampler","enumValue","fallback","addressModeU","addressModeV","addressModeW","magFilter","minFilter","mipmapFilter","numberValue","input","fround","lodMinClamp","lodMaxClamp","maxAnisotropy","compare","semantic","descriptor","cacheKey","JSON","stringify","isComparison","isFiltering","normalizeResourceBundle","trim","definitions","category","kind","push","normalizeResourceRealizationOptions","adapterKey","normalizeRgba8TextureRealizationOptions","textureKey","bundleLabel","normalizeSamplerRealizationOptions","samplerKey","mapRgba8TexturePayload","payloadType","sourceFormat","containerOnly","isDecoded","rgbaDecodeSupported","pixelFormat","strideBytes","activeRowBytes","origin","colorSpace","alphaMode","texture","textures","mapRgba8TextureBitmap","bitmap","IsValid","srgb","isSrgbCarbonFormat","GetFormat","copy","HostBitmap","Create","GetWidth","GetHeight","GetMipRawData","set","subarray","GetMipSize","requested","PixelFormat","PIXEL_FORMAT_R8G8B8A8_UNORM_SRGB","PIXEL_FORMAT_R8G8B8A8_UNORM","PIXEL_FORMAT_R8G8_UNORM","expandRg8","CjsImageFormat","convertImage","GetMipPitch","source","pitch","target","targetPitch","y","x","some","endsWith","mapSamplerPayload","_payloadType","normalized","sampler","samplers","assertRealizationResource","resource","CjsResource","cloneDiagnostics","messages","type","lineNum","linePos","visibilityFlags","shaderStage","names","flags","VERTEX","FRAGMENT","bindingLayout","sourceTruth","Boolean","dynamic","hasDynamicOffset","filter","normalizePipeline","stages","shaderModules","vertex","stageName","fragment","shader","wgsl","entryPoint","groups","bindGroups","group","slots","identities","baseScopes","normalizedGroups","groupIndex","bindings","baseIdentity","scopes","scope","stageSnapshot","findResource","resources","resourceEntries","validateRecipe","recipe","buffers","targets","primitive","assertPrepared","owner","prepared","record","_AssertGeneration","generation","assertLive","livePipeline","assertBindingSet","bindingSet","destroyed","assertAdapterResources","adapterResources","assertGeometry","geometry","assertTexture","assertSampler","resolveBindingResource","textureRecord","multisampled","sampleType","view","adapterRecord","samplerRecord","compatible","resolveDynamicOffsets","offsets","supplied","perGroup","consumed","anyDynamic","first","second","minUniformBufferOffsetAlignment","minStorageBufferOffsetAlignment","records","popValidationScope","state","open","popErrorScope","CjsWebgpuDevice","Request","gpu","hasOwnProperty","call","globalThis","navigator","adapter","requestAdapter","adapterOptions","requestDevice","deviceDescriptor","constructor","createShaderModule","GPUShaderStage","_gpu","_adapter","_device","_adapterOptions","_deviceDescriptor","_shaderStage","_bufferUsage","bufferUsage","GPUBufferUsage","_textureUsage","textureUsage","GPUTextureUsage","_samplerCache","_preparedCache","CjsWebgpuPipelineCache","_renderPipelineCache","_resourceRealizations","_onLost","onLost","_generation","_state","_lostInfo","_validationTail","Promise","resolve","_recreateSerial","_lifecycleVersion","_WatchDevice","GetAdapter","GetDevice","_AssertReady","GetBufferUsage","GetTextureUsage","GetGeneration","GetLostInfo","IsLost","IsReady","PreparePipeline","prepareOptions","CanonicalKey","Resolve","_SerializeValidation","pushErrorScope","modules","module","code","bindGroupLayouts","createBindGroupLayout","pipelineLayout","createPipelineLayout","validationPromise","compilationPromise","all","getCompilationInfo","compilation","validationError","diagnostics","stage","errors","warnings","warningsAsErrors","kinds","join","error","catch","CreateRenderPipeline","pipelineOrPrepared","pipelineRecipe","RenderPipelineKey","pipelineDescriptor","depthStencil","multisample","pipelinePromise","createRenderPipelineAsync","createRenderPipeline","gpuPipeline","CreateGeometry","usage","INDEX","COPY_DST","createBuffer","queue","writeBuffer","ownedBuffers","validation","memory","popScope","upload","size","bytes","capacity","count","memoryPromise","memoryError","vertexBufferLayouts","minimumCapacity","capacities","vertexBufferCount","vertexCapacity","instanceCapacity","indexed","indexFormat","indexCount","Destroy","DestroyGeometry","destroy","CreateTexture","TEXTURE_BINDING","createTexture","writeTexture","AssertFormatFeature","gpuTexture","depthOrArrayLayers","sampleCount","dimension","copyWidth","copyHeight","write","mipLevel","level","z","layer","createView","isSRGB","DestroyTexture","CreateSampler","createSampler","cached","nativeSampler","DestroySampler","CreateResourceBundle","tasks","definition","promise","results","allSettled","task","fulfilled","flatMap","status","failure","find","generationError","reason","categoryEntries","geometries","bundle","DestroyResourceBundle","firstError","RealizeRgba8Texture","payload","GetPayload","CjsSchema","cast","RealizeResource","RealizeSampler","operations","existing","_RealizeResource","remove","delete","then","stale","assertOwned","isUsable","IsCurrent","displaced","GetAdapterResource","MarkPreparing","candidate","committed","SetAdapterResource","MarkPrepared","current","DestroyAdapterResource","MarkLoaded","CreateBindingSet","uniformInputs","uniformData","externalInputs","uniformPlans","externalPlans","minBindingSize","UNIFORM","uniforms","createBindGroup","Update","UpdateBindingSet","DestroyBindingSet","CreateDeviceBuffer","aligned","handle","requestedSize","WriteDeviceBuffer","GetDeviceBuffer","updates","uniform","CreateDraw","geometryRecord","pipelineVertexLayouts","vertexSlots","drawCall","draw","hasIndexCount","hasVertexCount","vertexCount","uintValue","normalizedDraw","instanceCount","firstIndex","baseVertex","firstInstance","firstVertex","suppliedIndexBuffer","hasBindingSet","hasResources","bindingSetRecord","resourceGroups","resolved","dynamicOffsets","EncodeDraw","pass","wrapper","setPipeline","CjsWebgpuEncodeState","TypeError","encodeState","Require","NeedsPipeline","forEach","bindGroup","NeedsBindGroup","setBindGroup","NeedsVertexBuffers","setVertexBuffer","NeedsIndexBuffer","setIndexBuffer","drawIndexed","Submit","commandBuffers","submit","Recreate","requestSerial","lifecycleVersion","previous","Clear","clear","operation","run","lost","info"],"mappings":"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"}
|