@shopify/react-native-skia 2.10.0 → 2.10.2
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/android/CMakeLists.txt +7 -41
- package/android/build.gradle +33 -0
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
- package/cpp/api/JsiNativeBuffer.h +14 -20
- package/cpp/api/JsiSkAnimatedImage.h +13 -16
- package/cpp/api/JsiSkAnimatedImageFactory.h +9 -7
- package/cpp/api/JsiSkApi.h +94 -90
- package/cpp/api/JsiSkCanvas.h +108 -251
- package/cpp/api/JsiSkColorFilterFactory.h +45 -63
- package/cpp/api/JsiSkContourMeasure.h +19 -29
- package/cpp/api/JsiSkContourMeasureIter.h +6 -6
- package/cpp/api/JsiSkConverters.h +410 -0
- package/cpp/api/JsiSkDataFactory.h +9 -15
- package/cpp/api/JsiSkFont.h +99 -180
- package/cpp/api/JsiSkFontMgr.h +19 -21
- package/cpp/api/JsiSkFontMgrFactory.h +4 -5
- package/cpp/api/JsiSkImage.h +66 -66
- package/cpp/api/JsiSkImageFactory.h +66 -63
- package/cpp/api/JsiSkImageFilterFactory.h +354 -608
- package/cpp/api/JsiSkImageInfo.h +10 -13
- package/cpp/api/JsiSkMaskFilterFactory.h +8 -11
- package/cpp/api/JsiSkMatrix.h +36 -73
- package/cpp/api/JsiSkNativeObjects.h +64 -96
- package/cpp/api/JsiSkPaint.h +73 -131
- package/cpp/api/JsiSkParagraph.h +36 -53
- package/cpp/api/JsiSkParagraphBuilder.h +36 -64
- package/cpp/api/JsiSkParagraphBuilderFactory.h +11 -16
- package/cpp/api/JsiSkPath.h +216 -349
- package/cpp/api/JsiSkPathBuilder.h +133 -269
- package/cpp/api/JsiSkPathBuilderFactory.h +11 -11
- package/cpp/api/JsiSkPathEffectFactory.h +52 -72
- package/cpp/api/JsiSkPathFactory.h +129 -195
- package/cpp/api/JsiSkPicture.h +12 -18
- package/cpp/api/JsiSkPictureRecorder.h +14 -15
- package/cpp/api/JsiSkPoint.h +4 -4
- package/cpp/api/JsiSkRRect.h +7 -8
- package/cpp/api/JsiSkRSXform.h +10 -23
- package/cpp/api/JsiSkRect.h +23 -31
- package/cpp/api/JsiSkRuntimeEffect.h +67 -83
- package/cpp/api/JsiSkRuntimeEffectFactory.h +6 -10
- package/cpp/api/JsiSkRuntimeShaderBuilder.h +5 -14
- package/cpp/api/JsiSkSVG.h +4 -4
- package/cpp/api/JsiSkShaderFactory.h +153 -225
- package/cpp/api/JsiSkSkottie.h +104 -126
- package/cpp/api/JsiSkSurface.h +11 -14
- package/cpp/api/JsiSkSurfaceFactory.h +6 -7
- package/cpp/api/JsiSkTextBlobFactory.h +31 -54
- package/cpp/api/JsiSkTypeface.h +8 -12
- package/cpp/api/JsiSkTypefaceFactory.h +9 -7
- package/cpp/api/JsiSkTypefaceFontProvider.h +22 -23
- package/cpp/api/JsiSkTypefaceFontProviderFactory.h +5 -6
- package/cpp/api/JsiSkVertices.h +6 -8
- package/cpp/api/JsiSkiaContext.h +10 -11
- package/cpp/api/JsiVideo.h +31 -71
- package/cpp/jsi/EnumMapper.h +2 -2
- package/cpp/jsi/JSIConverter.h +2 -33
- package/cpp/jsi/NativeObject.h +24 -19
- package/cpp/jsi/Promise.cpp +2 -2
- package/cpp/jsi/Promise.h +2 -2
- package/cpp/rnskia/RNDawnContext.h +18 -2
- package/cpp/rnskia/RNDawnInterop.cpp +19 -0
- package/cpp/rnskia/RNDawnUtils.h +18 -1
- package/cpp/rnskia/RNSkManager.cpp +5 -162
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
- package/lib/commonjs/mock/index.js +0 -1
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
- package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +5 -15
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/types/index.d.ts +0 -1
- package/lib/commonjs/skia/types/index.js +0 -11
- package/lib/commonjs/skia/types/index.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
- package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +1 -4
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/views/index.d.ts +0 -1
- package/lib/commonjs/views/index.js +0 -11
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/module/mock/index.js +0 -1
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
- package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +5 -15
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/types/index.d.ts +0 -1
- package/lib/module/skia/types/index.js +0 -1
- package/lib/module/skia/types/index.js.map +1 -1
- package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
- package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +1 -4
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/views/index.d.ts +0 -1
- package/lib/module/views/index.js +0 -1
- package/lib/module/views/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
- package/lib/typescript/lib/module/mock/index.d.ts +0 -2
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
- package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
- package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
- package/lib/typescript/lib/module/views/index.d.ts +0 -1
- package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
- package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
- package/lib/typescript/src/skia/types/index.d.ts +0 -1
- package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/typescript/src/views/index.d.ts +0 -1
- package/package.json +3 -4
- package/react-native-skia.podspec +38 -4
- package/src/mock/index.ts +0 -1
- package/src/skia/types/Image/ImageFactory.ts +15 -6
- package/src/skia/types/Skia.ts +5 -15
- package/src/skia/types/index.ts +0 -1
- package/src/skia/web/JsiSkImageFactory.ts +3 -3
- package/src/skia/web/JsiSkia.ts +2 -5
- package/src/views/index.ts +0 -1
- package/android/cpp/jni/JniWebGPUView.cpp +0 -112
- package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
- package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
- package/apple/SkiaPlatformContext.h +0 -20
- package/apple/SkiaPlatformContext.mm +0 -21
- package/apple/SkiaWebGPUView.mm +0 -81
- package/apple/WebGPUMetalView.mm +0 -136
- package/cpp/rnwgpu/ArrayBuffer.h +0 -116
- package/cpp/rnwgpu/Canvas.h +0 -52
- package/cpp/rnwgpu/PlatformContext.h +0 -18
- package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
- package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
- package/cpp/rnwgpu/api/Convertors.h +0 -783
- package/cpp/rnwgpu/api/External.h +0 -12
- package/cpp/rnwgpu/api/GPU.cpp +0 -162
- package/cpp/rnwgpu/api/GPU.h +0 -60
- package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -239
- package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
- package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
- package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
- package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
- package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
- package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
- package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
- package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
- package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
- package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
- package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
- package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
- package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
- package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
- package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
- package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
- package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
- package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
- package/cpp/rnwgpu/api/GPUDevice.cpp +0 -613
- package/cpp/rnwgpu/api/GPUDevice.h +0 -258
- package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
- package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
- package/cpp/rnwgpu/api/GPUError.h +0 -35
- package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
- package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
- package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
- package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
- package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
- package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
- package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
- package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
- package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
- package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
- package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
- package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
- package/cpp/rnwgpu/api/GPUQueue.h +0 -84
- package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
- package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
- package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
- package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
- package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
- package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
- package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
- package/cpp/rnwgpu/api/GPUSampler.h +0 -44
- package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
- package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
- package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
- package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
- package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
- package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
- package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
- package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
- package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
- package/cpp/rnwgpu/api/GPUTexture.h +0 -162
- package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
- package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
- package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
- package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
- package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
- package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
- package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
- package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
- package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
- package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
- package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
- package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
- package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
- package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
- package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
- package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
- package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
- package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
- package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
- package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
- package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
- package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
- package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
- package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
- package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
- package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
- package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
- package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
- package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
- package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
- package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
- package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
- package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
- package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
- package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
- package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
- package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
- package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -213
- package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
- package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
- package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
- package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
- package/lib/commonjs/skia/types/WebGPU.js +0 -105
- package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
- package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
- package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
- package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
- package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
- package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
- package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
- package/lib/commonjs/specs/utils.d.ts +0 -1
- package/lib/commonjs/specs/utils.js +0 -11
- package/lib/commonjs/specs/utils.js.map +0 -1
- package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
- package/lib/commonjs/views/WebGPUCanvas.js +0 -79
- package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
- package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
- package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
- package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
- package/lib/module/skia/types/WebGPU.d.ts +0 -184
- package/lib/module/skia/types/WebGPU.js +0 -99
- package/lib/module/skia/types/WebGPU.js.map +0 -1
- package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
- package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
- package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
- package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
- package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
- package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
- package/lib/module/specs/utils.d.ts +0 -1
- package/lib/module/specs/utils.js +0 -5
- package/lib/module/specs/utils.js.map +0 -1
- package/lib/module/views/WebGPUCanvas.d.ts +0 -33
- package/lib/module/views/WebGPUCanvas.js +0 -70
- package/lib/module/views/WebGPUCanvas.js.map +0 -1
- package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
- package/lib/module/views/WebGPUCanvas.web.js +0 -12
- package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
- package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
- package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
- package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
- package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
- package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
- package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
- package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
- package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
- package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
- package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
- package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
- package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
- package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
- package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
- package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
- package/lib/typescript/src/specs/utils.d.ts +0 -1
- package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
- package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
- package/src/skia/types/WebGPU.ts +0 -226
- package/src/specs/WebGPUViewNativeComponent.ts +0 -11
- package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
- package/src/specs/utils.ts +0 -4
- package/src/views/WebGPUCanvas.tsx +0 -125
- package/src/views/WebGPUCanvas.web.tsx +0 -36
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.WebGPUCanvas = void 0;
|
|
7
|
-
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
// WebGPU Canvas is not supported on web
|
|
10
|
-
const WebGPUCanvas = ({
|
|
11
|
-
transparent: _transparent,
|
|
12
|
-
ref: _ref,
|
|
13
|
-
...props
|
|
14
|
-
}) => {
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
16
|
-
// @ts-expect-error
|
|
17
|
-
return /*#__PURE__*/_react.default.createElement("div", props);
|
|
18
|
-
};
|
|
19
|
-
exports.WebGPUCanvas = WebGPUCanvas;
|
|
20
|
-
//# sourceMappingURL=WebGPUCanvas.web.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","e","__esModule","default","WebGPUCanvas","transparent","_transparent","ref","_ref","props","createElement","exports"],"sources":["WebGPUCanvas.web.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeCanvas {\n surface: bigint;\n width: number;\n height: number;\n clientWidth: number;\n clientHeight: number;\n}\n\nexport type RNCanvasContext = GPUCanvasContext & {\n present: () => void;\n};\n\nexport interface WebGPUCanvasRef {\n getContextId: () => number;\n getContext(contextName: \"webgpu\"): RNCanvasContext | null;\n getNativeSurface: () => NativeCanvas;\n}\n\ninterface WebGPUCanvasProps extends ViewProps {\n transparent?: boolean;\n ref?: React.Ref<WebGPUCanvasRef>;\n}\n\n// WebGPU Canvas is not supported on web\nexport const WebGPUCanvas = ({\n transparent: _transparent,\n ref: _ref,\n ...props\n}: WebGPUCanvasProps) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return <div {...props} />;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA0B1B;AACO,MAAMG,YAAY,GAAGA,CAAC;EAC3BC,WAAW,EAAEC,YAAY;EACzBC,GAAG,EAAEC,IAAI;EACT,GAAGC;AACc,CAAC,KAAK;EACvB;EACA;EACA,oBAAOX,MAAA,CAAAK,OAAA,CAAAO,aAAA,QAASD,KAAQ,CAAC;AAC3B,CAAC;AAACE,OAAA,CAAAP,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import type { NativeBuffer } from "./NativeBuffer";
|
|
2
|
-
/**
|
|
3
|
-
* Make the WebGPU flag constants (`GPUBufferUsage`, `GPUColorWrite`,
|
|
4
|
-
* `GPUMapMode`, `GPUShaderStage`, `GPUTextureUsage`) available on the runtime
|
|
5
|
-
* that calls this.
|
|
6
|
-
*
|
|
7
|
-
* The native module installs these globals on the main JS runtime, but worklet
|
|
8
|
-
* runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
|
|
9
|
-
* processors) start without them, so referencing the bare global inside a
|
|
10
|
-
* worklet yields `undefined`. Call `installWebGPU()` once at the top of a
|
|
11
|
-
* worklet to install them there:
|
|
12
|
-
*
|
|
13
|
-
* ```tsx
|
|
14
|
-
* import { installWebGPU } from "@shopify/react-native-skia";
|
|
15
|
-
*
|
|
16
|
-
* const work = (device: GPUDevice) => {
|
|
17
|
-
* "worklet";
|
|
18
|
-
* installWebGPU();
|
|
19
|
-
* device.createBuffer({
|
|
20
|
-
* usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
21
|
-
* });
|
|
22
|
-
* };
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* `installWebGPU` is a native host function. When captured into a worklet, the
|
|
26
|
-
* Worklets serializer re-creates it on the worklet runtime, so calling it there
|
|
27
|
-
* installs the constants on that runtime. The values come from the native
|
|
28
|
-
* `wgpu::*Usage` enums, so they stay a single source of truth across runtimes.
|
|
29
|
-
* Calling it on a runtime that already has the constants is a safe no-op, and on
|
|
30
|
-
* web (where the constants are always global) it is a no-op too.
|
|
31
|
-
*/
|
|
32
|
-
export declare const installWebGPU: () => void;
|
|
33
|
-
/**
|
|
34
|
-
* Descriptor for {@link GPUDevice.importExternalTexture} when the source is a
|
|
35
|
-
* Skia NativeBuffer (Skia has no WebCodecs `VideoFrame`).
|
|
36
|
-
*
|
|
37
|
-
* `source` is the handle returned by `Skia.NativeBuffer.MakeFromImage`: a
|
|
38
|
-
* `CVPixelBufferRef` on Apple, an `AHardwareBuffer*` on Android. The caller
|
|
39
|
-
* owns its lifetime (release it with `Skia.NativeBuffer.Release`) and must keep
|
|
40
|
-
* it alive until the imported texture is destroyed.
|
|
41
|
-
*/
|
|
42
|
-
export interface SkiaGPUExternalTextureDescriptor extends GPUObjectDescriptorBase {
|
|
43
|
-
source: NativeBuffer;
|
|
44
|
-
/** Rotation applied while sampling, in degrees. One of 0 | 90 | 180 | 270. */
|
|
45
|
-
rotation?: number;
|
|
46
|
-
/** Mirror horizontally while sampling. */
|
|
47
|
-
mirrored?: boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Descriptor for {@link GPUDevice.importSharedTextureMemory}. `handle` is the
|
|
51
|
-
* NativeBuffer returned by `Skia.NativeBuffer.MakeFromImage` (see
|
|
52
|
-
* {@link SkiaGPUExternalTextureDescriptor} for the platform-specific types and
|
|
53
|
-
* lifetime rules).
|
|
54
|
-
*/
|
|
55
|
-
export interface GPUSharedTextureMemoryDescriptor extends GPUObjectDescriptorBase {
|
|
56
|
-
handle: NativeBuffer;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* The kind of native synchronization primitive a {@link GPUSharedFence} wraps,
|
|
60
|
-
* matching the `shared-fence-*` device feature names. Limited to the kinds
|
|
61
|
-
* react-native-skia targets (iOS/Metal and Android/Vulkan); `importSharedFence`
|
|
62
|
-
* accepts these and `export()` reports them.
|
|
63
|
-
*/
|
|
64
|
-
export type GPUSharedFenceType = "mtl-shared-event" | "sync-fd" | "vk-semaphore-opaque-fd";
|
|
65
|
-
/**
|
|
66
|
-
* Descriptor for {@link GPUDevice.importSharedFence}.
|
|
67
|
-
*/
|
|
68
|
-
export interface GPUSharedFenceDescriptor {
|
|
69
|
-
/**
|
|
70
|
-
* The fence kind to import. Must match a `shared-fence-*` feature enabled on
|
|
71
|
-
* the device.
|
|
72
|
-
*/
|
|
73
|
-
type: GPUSharedFenceType;
|
|
74
|
-
/**
|
|
75
|
-
* The raw native handle as a BigInt: an `id<MTLSharedEvent>` pointer for
|
|
76
|
-
* `"mtl-shared-event"`, or an OS file descriptor for the `*-fd` kinds.
|
|
77
|
-
*/
|
|
78
|
-
handle: bigint;
|
|
79
|
-
label?: string;
|
|
80
|
-
}
|
|
81
|
-
export interface GPUSharedFenceExportInfo {
|
|
82
|
-
type: GPUSharedFenceType;
|
|
83
|
-
/**
|
|
84
|
-
* An `id<MTLSharedEvent>` pointer (Apple) or file descriptor (Android), as a
|
|
85
|
-
* BigInt. The caller takes ownership; e.g. an exported sync-fd must be closed
|
|
86
|
-
* once consumed.
|
|
87
|
-
*/
|
|
88
|
-
handle: bigint;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* A native GPU synchronization primitive shared across queues/APIs. Produced by
|
|
92
|
-
* {@link GPUSharedTextureMemory.endAccess}, consumed by
|
|
93
|
-
* {@link GPUSharedTextureMemory.beginAccess}, or imported from a consumer's
|
|
94
|
-
* fence with {@link GPUDevice.importSharedFence}.
|
|
95
|
-
*/
|
|
96
|
-
export interface GPUSharedFence {
|
|
97
|
-
readonly __brand: "GPUSharedFence";
|
|
98
|
-
label: string;
|
|
99
|
-
export(): GPUSharedFenceExportInfo;
|
|
100
|
-
}
|
|
101
|
-
/** A fence and the timeline value to wait for (0n for binary sync-fd fences). */
|
|
102
|
-
export interface GPUSharedFenceState {
|
|
103
|
-
fence: GPUSharedFence;
|
|
104
|
-
signaledValue: bigint;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* The result of {@link GPUSharedTextureMemory.endAccess}: each fence is signaled
|
|
108
|
-
* at its `signaledValue` once Dawn's GPU work for the access completes.
|
|
109
|
-
*/
|
|
110
|
-
export interface GPUSharedTextureMemoryEndAccessState {
|
|
111
|
-
initialized: boolean;
|
|
112
|
-
fences: GPUSharedFenceState[];
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Shared texture memory imported from a platform native buffer via
|
|
116
|
-
* {@link GPUDevice.importSharedTextureMemory}. Create a texture that aliases
|
|
117
|
-
* the memory, then bracket the GPU work that touches it with
|
|
118
|
-
* {@link GPUSharedTextureMemory.beginAccess} / {@link GPUSharedTextureMemory.endAccess}.
|
|
119
|
-
*/
|
|
120
|
-
export interface GPUSharedTextureMemory extends GPUObjectBase {
|
|
121
|
-
/** Create a texture that aliases the shared memory. */
|
|
122
|
-
createTexture(descriptor?: GPUTextureDescriptor): GPUTexture;
|
|
123
|
-
/**
|
|
124
|
-
* Acquire the memory for GPU access. `initialized` marks whether the existing
|
|
125
|
-
* contents should be preserved (pass `true` for an already-rendered frame).
|
|
126
|
-
* Optional `fences` are wait fences: Dawn waits for each to reach its
|
|
127
|
-
* `signaledValue` before writing the surface. Throws if the access could not
|
|
128
|
-
* be acquired.
|
|
129
|
-
*/
|
|
130
|
-
beginAccess(texture: GPUTexture, initialized: boolean, fences?: GPUSharedFenceState[]): void;
|
|
131
|
-
/**
|
|
132
|
-
* Release the memory after the GPU work that accessed it has been submitted,
|
|
133
|
-
* and return the fences Dawn produced for the access. Throws on failure.
|
|
134
|
-
*/
|
|
135
|
-
endAccess(texture: GPUTexture): GPUSharedTextureMemoryEndAccessState;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Dawn-specific toggles, passed via {@link GPUDeviceDescriptor.dawnToggles} to
|
|
139
|
-
* `adapter.requestDevice`. This is a non-spec, Dawn-only extension; see Dawn's
|
|
140
|
-
* toggle list for valid names.
|
|
141
|
-
*/
|
|
142
|
-
export interface GPUDawnTogglesDescriptor {
|
|
143
|
-
enabledToggles?: string[];
|
|
144
|
-
disabledToggles?: string[];
|
|
145
|
-
}
|
|
146
|
-
declare global {
|
|
147
|
-
interface GPUDeviceDescriptor {
|
|
148
|
-
/** Dawn-specific toggles (Skia/Graphite extension, non-spec). */
|
|
149
|
-
dawnToggles?: GPUDawnTogglesDescriptor;
|
|
150
|
-
}
|
|
151
|
-
interface GPUExternalTexture {
|
|
152
|
-
/**
|
|
153
|
-
* Skia extension: end the imported buffer's shared-memory access window and
|
|
154
|
-
* release the underlying resources. Call right after the `queue.submit()`
|
|
155
|
-
* that sampled this texture (never before). Idempotent, and also runs at
|
|
156
|
-
* garbage collection as a fallback.
|
|
157
|
-
*/
|
|
158
|
-
destroy(): void;
|
|
159
|
-
}
|
|
160
|
-
interface GPUDevice {
|
|
161
|
-
/**
|
|
162
|
-
* Skia extension: import a NativeBuffer (from
|
|
163
|
-
* `Skia.NativeBuffer.MakeFromImage`) as a {@link GPUExternalTexture}, sampled
|
|
164
|
-
* with `texture_external` in WGSL. The returned texture owns the
|
|
165
|
-
* shared-memory access window; call `destroy()` on it after the sampling
|
|
166
|
-
* `queue.submit()`.
|
|
167
|
-
*/
|
|
168
|
-
importExternalTexture(descriptor: SkiaGPUExternalTextureDescriptor): GPUExternalTexture;
|
|
169
|
-
/**
|
|
170
|
-
* Skia extension: import a NativeBuffer (from
|
|
171
|
-
* `Skia.NativeBuffer.MakeFromImage`) as {@link GPUSharedTextureMemory}, the
|
|
172
|
-
* lower-level path that lets you create an aliasing texture and manage the
|
|
173
|
-
* begin/end access window yourself.
|
|
174
|
-
*/
|
|
175
|
-
importSharedTextureMemory(descriptor: GPUSharedTextureMemoryDescriptor): GPUSharedTextureMemory;
|
|
176
|
-
/**
|
|
177
|
-
* Skia extension: import a native synchronization primitive (an
|
|
178
|
-
* `id<MTLSharedEvent>` on Apple, a sync-fd / VkSemaphore on Android) as a
|
|
179
|
-
* {@link GPUSharedFence}, e.g. to wait on a fence a consumer produced. The
|
|
180
|
-
* matching `shared-fence-*` feature must be enabled on the device.
|
|
181
|
-
*/
|
|
182
|
-
importSharedFence(descriptor: GPUSharedFenceDescriptor): GPUSharedFence;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Make the WebGPU flag constants (`GPUBufferUsage`, `GPUColorWrite`,
|
|
3
|
-
* `GPUMapMode`, `GPUShaderStage`, `GPUTextureUsage`) available on the runtime
|
|
4
|
-
* that calls this.
|
|
5
|
-
*
|
|
6
|
-
* The native module installs these globals on the main JS runtime, but worklet
|
|
7
|
-
* runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
|
|
8
|
-
* processors) start without them, so referencing the bare global inside a
|
|
9
|
-
* worklet yields `undefined`. Call `installWebGPU()` once at the top of a
|
|
10
|
-
* worklet to install them there:
|
|
11
|
-
*
|
|
12
|
-
* ```tsx
|
|
13
|
-
* import { installWebGPU } from "@shopify/react-native-skia";
|
|
14
|
-
*
|
|
15
|
-
* const work = (device: GPUDevice) => {
|
|
16
|
-
* "worklet";
|
|
17
|
-
* installWebGPU();
|
|
18
|
-
* device.createBuffer({
|
|
19
|
-
* usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
20
|
-
* });
|
|
21
|
-
* };
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* `installWebGPU` is a native host function. When captured into a worklet, the
|
|
25
|
-
* Worklets serializer re-creates it on the worklet runtime, so calling it there
|
|
26
|
-
* installs the constants on that runtime. The values come from the native
|
|
27
|
-
* `wgpu::*Usage` enums, so they stay a single source of truth across runtimes.
|
|
28
|
-
* Calling it on a runtime that already has the constants is a safe no-op, and on
|
|
29
|
-
* web (where the constants are always global) it is a no-op too.
|
|
30
|
-
*/
|
|
31
|
-
export const installWebGPU = (() => {
|
|
32
|
-
const g = typeof global !== "undefined" ? global : undefined;
|
|
33
|
-
return g && typeof g.installWebGPU === "function" ? g.installWebGPU : () => {};
|
|
34
|
-
})();
|
|
35
|
-
|
|
36
|
-
// Skia's Graphite/Dawn backend extends the standard WebGPU API (typed by
|
|
37
|
-
// @webgpu/types) with a few Skia- and Dawn-specific entry points. These are
|
|
38
|
-
// only available on native (SK_GRAPHITE) builds, reachable through
|
|
39
|
-
// `Skia.getDevice()`.
|
|
40
|
-
//
|
|
41
|
-
// The exported interfaces below describe the descriptors and objects those
|
|
42
|
-
// entry points use; the `declare global` block augments the standard WebGPU
|
|
43
|
-
// interfaces so the new methods are typed without casting to `any`.
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Descriptor for {@link GPUDevice.importExternalTexture} when the source is a
|
|
47
|
-
* Skia NativeBuffer (Skia has no WebCodecs `VideoFrame`).
|
|
48
|
-
*
|
|
49
|
-
* `source` is the handle returned by `Skia.NativeBuffer.MakeFromImage`: a
|
|
50
|
-
* `CVPixelBufferRef` on Apple, an `AHardwareBuffer*` on Android. The caller
|
|
51
|
-
* owns its lifetime (release it with `Skia.NativeBuffer.Release`) and must keep
|
|
52
|
-
* it alive until the imported texture is destroyed.
|
|
53
|
-
*/
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Descriptor for {@link GPUDevice.importSharedTextureMemory}. `handle` is the
|
|
57
|
-
* NativeBuffer returned by `Skia.NativeBuffer.MakeFromImage` (see
|
|
58
|
-
* {@link SkiaGPUExternalTextureDescriptor} for the platform-specific types and
|
|
59
|
-
* lifetime rules).
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* The kind of native synchronization primitive a {@link GPUSharedFence} wraps,
|
|
64
|
-
* matching the `shared-fence-*` device feature names. Limited to the kinds
|
|
65
|
-
* react-native-skia targets (iOS/Metal and Android/Vulkan); `importSharedFence`
|
|
66
|
-
* accepts these and `export()` reports them.
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Descriptor for {@link GPUDevice.importSharedFence}.
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* A native GPU synchronization primitive shared across queues/APIs. Produced by
|
|
75
|
-
* {@link GPUSharedTextureMemory.endAccess}, consumed by
|
|
76
|
-
* {@link GPUSharedTextureMemory.beginAccess}, or imported from a consumer's
|
|
77
|
-
* fence with {@link GPUDevice.importSharedFence}.
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
/** A fence and the timeline value to wait for (0n for binary sync-fd fences). */
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* The result of {@link GPUSharedTextureMemory.endAccess}: each fence is signaled
|
|
84
|
-
* at its `signaledValue` once Dawn's GPU work for the access completes.
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Shared texture memory imported from a platform native buffer via
|
|
89
|
-
* {@link GPUDevice.importSharedTextureMemory}. Create a texture that aliases
|
|
90
|
-
* the memory, then bracket the GPU work that touches it with
|
|
91
|
-
* {@link GPUSharedTextureMemory.beginAccess} / {@link GPUSharedTextureMemory.endAccess}.
|
|
92
|
-
*/
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Dawn-specific toggles, passed via {@link GPUDeviceDescriptor.dawnToggles} to
|
|
96
|
-
* `adapter.requestDevice`. This is a non-spec, Dawn-only extension; see Dawn's
|
|
97
|
-
* toggle list for valid names.
|
|
98
|
-
*/
|
|
99
|
-
//# sourceMappingURL=WebGPU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["installWebGPU","g","global","undefined"],"sources":["WebGPU.ts"],"sourcesContent":["import type { NativeBuffer } from \"./NativeBuffer\";\n\n/**\n * Make the WebGPU flag constants (`GPUBufferUsage`, `GPUColorWrite`,\n * `GPUMapMode`, `GPUShaderStage`, `GPUTextureUsage`) available on the runtime\n * that calls this.\n *\n * The native module installs these globals on the main JS runtime, but worklet\n * runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame\n * processors) start without them, so referencing the bare global inside a\n * worklet yields `undefined`. Call `installWebGPU()` once at the top of a\n * worklet to install them there:\n *\n * ```tsx\n * import { installWebGPU } from \"@shopify/react-native-skia\";\n *\n * const work = (device: GPUDevice) => {\n * \"worklet\";\n * installWebGPU();\n * device.createBuffer({\n * usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n * });\n * };\n * ```\n *\n * `installWebGPU` is a native host function. When captured into a worklet, the\n * Worklets serializer re-creates it on the worklet runtime, so calling it there\n * installs the constants on that runtime. The values come from the native\n * `wgpu::*Usage` enums, so they stay a single source of truth across runtimes.\n * Calling it on a runtime that already has the constants is a safe no-op, and on\n * web (where the constants are always global) it is a no-op too.\n */\nexport const installWebGPU: () => void = (() => {\n const g =\n typeof global !== \"undefined\"\n ? (global as unknown as { installWebGPU?: () => void })\n : undefined;\n return g && typeof g.installWebGPU === \"function\"\n ? g.installWebGPU\n : () => {};\n})();\n\n// Skia's Graphite/Dawn backend extends the standard WebGPU API (typed by\n// @webgpu/types) with a few Skia- and Dawn-specific entry points. These are\n// only available on native (SK_GRAPHITE) builds, reachable through\n// `Skia.getDevice()`.\n//\n// The exported interfaces below describe the descriptors and objects those\n// entry points use; the `declare global` block augments the standard WebGPU\n// interfaces so the new methods are typed without casting to `any`.\n\n/**\n * Descriptor for {@link GPUDevice.importExternalTexture} when the source is a\n * Skia NativeBuffer (Skia has no WebCodecs `VideoFrame`).\n *\n * `source` is the handle returned by `Skia.NativeBuffer.MakeFromImage`: a\n * `CVPixelBufferRef` on Apple, an `AHardwareBuffer*` on Android. The caller\n * owns its lifetime (release it with `Skia.NativeBuffer.Release`) and must keep\n * it alive until the imported texture is destroyed.\n */\nexport interface SkiaGPUExternalTextureDescriptor extends GPUObjectDescriptorBase {\n source: NativeBuffer;\n /** Rotation applied while sampling, in degrees. One of 0 | 90 | 180 | 270. */\n rotation?: number;\n /** Mirror horizontally while sampling. */\n mirrored?: boolean;\n}\n\n/**\n * Descriptor for {@link GPUDevice.importSharedTextureMemory}. `handle` is the\n * NativeBuffer returned by `Skia.NativeBuffer.MakeFromImage` (see\n * {@link SkiaGPUExternalTextureDescriptor} for the platform-specific types and\n * lifetime rules).\n */\nexport interface GPUSharedTextureMemoryDescriptor extends GPUObjectDescriptorBase {\n handle: NativeBuffer;\n}\n\n/**\n * The kind of native synchronization primitive a {@link GPUSharedFence} wraps,\n * matching the `shared-fence-*` device feature names. Limited to the kinds\n * react-native-skia targets (iOS/Metal and Android/Vulkan); `importSharedFence`\n * accepts these and `export()` reports them.\n */\nexport type GPUSharedFenceType =\n | \"mtl-shared-event\"\n | \"sync-fd\"\n | \"vk-semaphore-opaque-fd\";\n\n/**\n * Descriptor for {@link GPUDevice.importSharedFence}.\n */\nexport interface GPUSharedFenceDescriptor {\n /**\n * The fence kind to import. Must match a `shared-fence-*` feature enabled on\n * the device.\n */\n type: GPUSharedFenceType;\n /**\n * The raw native handle as a BigInt: an `id<MTLSharedEvent>` pointer for\n * `\"mtl-shared-event\"`, or an OS file descriptor for the `*-fd` kinds.\n */\n handle: bigint;\n label?: string;\n}\n\nexport interface GPUSharedFenceExportInfo {\n type: GPUSharedFenceType;\n /**\n * An `id<MTLSharedEvent>` pointer (Apple) or file descriptor (Android), as a\n * BigInt. The caller takes ownership; e.g. an exported sync-fd must be closed\n * once consumed.\n */\n handle: bigint;\n}\n\n/**\n * A native GPU synchronization primitive shared across queues/APIs. Produced by\n * {@link GPUSharedTextureMemory.endAccess}, consumed by\n * {@link GPUSharedTextureMemory.beginAccess}, or imported from a consumer's\n * fence with {@link GPUDevice.importSharedFence}.\n */\nexport interface GPUSharedFence {\n readonly __brand: \"GPUSharedFence\";\n label: string;\n export(): GPUSharedFenceExportInfo;\n}\n\n/** A fence and the timeline value to wait for (0n for binary sync-fd fences). */\nexport interface GPUSharedFenceState {\n fence: GPUSharedFence;\n signaledValue: bigint;\n}\n\n/**\n * The result of {@link GPUSharedTextureMemory.endAccess}: each fence is signaled\n * at its `signaledValue` once Dawn's GPU work for the access completes.\n */\nexport interface GPUSharedTextureMemoryEndAccessState {\n initialized: boolean;\n fences: GPUSharedFenceState[];\n}\n\n/**\n * Shared texture memory imported from a platform native buffer via\n * {@link GPUDevice.importSharedTextureMemory}. Create a texture that aliases\n * the memory, then bracket the GPU work that touches it with\n * {@link GPUSharedTextureMemory.beginAccess} / {@link GPUSharedTextureMemory.endAccess}.\n */\nexport interface GPUSharedTextureMemory extends GPUObjectBase {\n /** Create a texture that aliases the shared memory. */\n createTexture(descriptor?: GPUTextureDescriptor): GPUTexture;\n /**\n * Acquire the memory for GPU access. `initialized` marks whether the existing\n * contents should be preserved (pass `true` for an already-rendered frame).\n * Optional `fences` are wait fences: Dawn waits for each to reach its\n * `signaledValue` before writing the surface. Throws if the access could not\n * be acquired.\n */\n beginAccess(\n texture: GPUTexture,\n initialized: boolean,\n fences?: GPUSharedFenceState[]\n ): void;\n /**\n * Release the memory after the GPU work that accessed it has been submitted,\n * and return the fences Dawn produced for the access. Throws on failure.\n */\n endAccess(texture: GPUTexture): GPUSharedTextureMemoryEndAccessState;\n}\n\n/**\n * Dawn-specific toggles, passed via {@link GPUDeviceDescriptor.dawnToggles} to\n * `adapter.requestDevice`. This is a non-spec, Dawn-only extension; see Dawn's\n * toggle list for valid names.\n */\nexport interface GPUDawnTogglesDescriptor {\n enabledToggles?: string[];\n disabledToggles?: string[];\n}\n\ndeclare global {\n interface GPUDeviceDescriptor {\n /** Dawn-specific toggles (Skia/Graphite extension, non-spec). */\n dawnToggles?: GPUDawnTogglesDescriptor;\n }\n\n interface GPUExternalTexture {\n /**\n * Skia extension: end the imported buffer's shared-memory access window and\n * release the underlying resources. Call right after the `queue.submit()`\n * that sampled this texture (never before). Idempotent, and also runs at\n * garbage collection as a fallback.\n */\n destroy(): void;\n }\n\n interface GPUDevice {\n /**\n * Skia extension: import a NativeBuffer (from\n * `Skia.NativeBuffer.MakeFromImage`) as a {@link GPUExternalTexture}, sampled\n * with `texture_external` in WGSL. The returned texture owns the\n * shared-memory access window; call `destroy()` on it after the sampling\n * `queue.submit()`.\n */\n importExternalTexture(\n descriptor: SkiaGPUExternalTextureDescriptor\n ): GPUExternalTexture;\n /**\n * Skia extension: import a NativeBuffer (from\n * `Skia.NativeBuffer.MakeFromImage`) as {@link GPUSharedTextureMemory}, the\n * lower-level path that lets you create an aliasing texture and manage the\n * begin/end access window yourself.\n */\n importSharedTextureMemory(\n descriptor: GPUSharedTextureMemoryDescriptor\n ): GPUSharedTextureMemory;\n /**\n * Skia extension: import a native synchronization primitive (an\n * `id<MTLSharedEvent>` on Apple, a sync-fd / VkSemaphore on Android) as a\n * {@link GPUSharedFence}, e.g. to wait on a fence a consumer produced. The\n * matching `shared-fence-*` feature must be enabled on the device.\n */\n importSharedFence(descriptor: GPUSharedFenceDescriptor): GPUSharedFence;\n }\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,aAAyB,GAAG,CAAC,MAAM;EAC9C,MAAMC,CAAC,GACL,OAAOC,MAAM,KAAK,WAAW,GACxBA,MAAM,GACPC,SAAS;EACf,OAAOF,CAAC,IAAI,OAAOA,CAAC,CAACD,aAAa,KAAK,UAAU,GAC7CC,CAAC,CAACD,aAAa,GACf,MAAM,CAAC,CAAC;AACd,CAAC,EAAE,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;;AAyBA;AACA;AACA;AACA;AACA;AACA;;AAOA;;AAMA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ViewProps } from "react-native";
|
|
2
|
-
import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
|
|
3
|
-
export interface NativeProps extends ViewProps {
|
|
4
|
-
contextId: Int32;
|
|
5
|
-
transparent: boolean;
|
|
6
|
-
}
|
|
7
|
-
declare const _default: import("react-native").HostComponent<NativeProps>;
|
|
8
|
-
export default _default;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["codegenNativeComponent"],"sources":["WebGPUViewNativeComponent.ts"],"sourcesContent":["import { codegenNativeComponent } from \"react-native\";\nimport type { ViewProps } from \"react-native\";\nimport type { Int32 } from \"react-native/Libraries/Types/CodegenTypes\";\n\nexport interface NativeProps extends ViewProps {\n contextId: Int32;\n transparent: boolean;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaWebGPUView\");\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,cAAc;AASrD;AACA,eAAeA,sBAAsB,CAAc,gBAAgB,CAAC","ignoreList":[]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
|
|
3
|
-
import type { ViewProps } from "react-native";
|
|
4
|
-
export interface NativeProps extends ViewProps {
|
|
5
|
-
contextId: Int32;
|
|
6
|
-
transparent: boolean;
|
|
7
|
-
}
|
|
8
|
-
export default function WebGPUViewNativeComponent(props: NativeProps): React.JSX.Element;
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from "react";
|
|
2
|
-
import { StyleSheet } from "react-native";
|
|
3
|
-
import { contextIdToId } from "./utils";
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
-
function debounce(func, wait, immediate = false) {
|
|
6
|
-
let timeout;
|
|
7
|
-
return function debounced(...args) {
|
|
8
|
-
const context = this;
|
|
9
|
-
const callNow = immediate && !timeout;
|
|
10
|
-
if (timeout) {
|
|
11
|
-
clearTimeout(timeout);
|
|
12
|
-
}
|
|
13
|
-
timeout = setTimeout(() => {
|
|
14
|
-
timeout = undefined;
|
|
15
|
-
if (!immediate) {
|
|
16
|
-
func.apply(context, args);
|
|
17
|
-
}
|
|
18
|
-
}, wait);
|
|
19
|
-
if (callNow) {
|
|
20
|
-
func.apply(context, args);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
function resizeCanvas(canvas) {
|
|
25
|
-
if (!canvas) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const dpr = window.devicePixelRatio || 1;
|
|
29
|
-
const {
|
|
30
|
-
height,
|
|
31
|
-
width
|
|
32
|
-
} = canvas.getBoundingClientRect();
|
|
33
|
-
canvas.setAttribute("height", (height * dpr).toString());
|
|
34
|
-
canvas.setAttribute("width", (width * dpr).toString());
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// eslint-disable-next-line import/no-default-export
|
|
38
|
-
export default function WebGPUViewNativeComponent(props) {
|
|
39
|
-
const {
|
|
40
|
-
contextId,
|
|
41
|
-
style,
|
|
42
|
-
transparent,
|
|
43
|
-
...rest
|
|
44
|
-
} = props;
|
|
45
|
-
const canvasElm = useRef(null);
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
const onResize = debounce(() => resizeCanvas(canvasElm.current), 100);
|
|
48
|
-
window.addEventListener("resize", onResize);
|
|
49
|
-
return () => {
|
|
50
|
-
window.removeEventListener("resize", onResize);
|
|
51
|
-
};
|
|
52
|
-
}, []);
|
|
53
|
-
return /*#__PURE__*/React.createElement("canvas", {
|
|
54
|
-
...rest,
|
|
55
|
-
id: contextIdToId(contextId),
|
|
56
|
-
style: {
|
|
57
|
-
...styles.view,
|
|
58
|
-
...styles.flex1,
|
|
59
|
-
...(transparent === false ? {
|
|
60
|
-
backgroundColor: "white"
|
|
61
|
-
} : {}),
|
|
62
|
-
...(typeof style === "object" ? style : {})
|
|
63
|
-
},
|
|
64
|
-
ref: ref => {
|
|
65
|
-
canvasElm.current = ref;
|
|
66
|
-
if (ref) {
|
|
67
|
-
resizeCanvas(ref);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
const styles = StyleSheet.create({
|
|
73
|
-
flex1: {
|
|
74
|
-
flex: 1
|
|
75
|
-
},
|
|
76
|
-
view: {
|
|
77
|
-
alignItems: "stretch",
|
|
78
|
-
backgroundColor: "transparent",
|
|
79
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
80
|
-
// @ts-expect-error
|
|
81
|
-
border: "0 solid black",
|
|
82
|
-
boxSizing: "border-box",
|
|
83
|
-
display: "flex",
|
|
84
|
-
flexBasis: "auto",
|
|
85
|
-
flexDirection: "column",
|
|
86
|
-
flexShrink: 0,
|
|
87
|
-
listStyle: "none",
|
|
88
|
-
margin: 0,
|
|
89
|
-
minHeight: 0,
|
|
90
|
-
minWidth: 0,
|
|
91
|
-
padding: 0,
|
|
92
|
-
position: "relative",
|
|
93
|
-
zIndex: 0
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
//# sourceMappingURL=WebGPUViewNativeComponent.web.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","StyleSheet","contextIdToId","debounce","func","wait","immediate","timeout","debounced","args","context","callNow","clearTimeout","setTimeout","undefined","apply","resizeCanvas","canvas","dpr","window","devicePixelRatio","height","width","getBoundingClientRect","setAttribute","toString","WebGPUViewNativeComponent","props","contextId","style","transparent","rest","canvasElm","onResize","current","addEventListener","removeEventListener","createElement","id","styles","view","flex1","backgroundColor","ref","create","flex","alignItems","border","boxSizing","display","flexBasis","flexDirection","flexShrink","listStyle","margin","minHeight","minWidth","padding","position","zIndex"],"sources":["WebGPUViewNativeComponent.web.ts"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport type { Int32 } from \"react-native/Libraries/Types/CodegenTypes\";\nimport type { ViewProps } from \"react-native\";\n\nimport { contextIdToId } from \"./utils\";\n\nexport interface NativeProps extends ViewProps {\n contextId: Int32;\n transparent: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction debounce<T extends (...args: any[]) => void>(\n func: T,\n wait: number,\n immediate = false\n) {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n return function debounced(\n this: ThisParameterType<T>,\n ...args: Parameters<T>\n ) {\n const context = this;\n const callNow = immediate && !timeout;\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = undefined;\n if (!immediate) {\n func.apply(context, args);\n }\n }, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\nfunction resizeCanvas(canvas: HTMLCanvasElement | null) {\n if (!canvas) {\n return;\n }\n\n const dpr = window.devicePixelRatio || 1;\n\n const { height, width } = canvas.getBoundingClientRect();\n canvas.setAttribute(\"height\", (height * dpr).toString());\n canvas.setAttribute(\"width\", (width * dpr).toString());\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default function WebGPUViewNativeComponent(\n props: NativeProps\n): React.JSX.Element {\n const { contextId, style, transparent, ...rest } = props;\n\n const canvasElm = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const onResize = debounce(() => resizeCanvas(canvasElm.current), 100);\n window.addEventListener(\"resize\", onResize);\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, []);\n\n return React.createElement(\"canvas\", {\n ...rest,\n id: contextIdToId(contextId),\n style: {\n ...styles.view,\n ...styles.flex1,\n ...(transparent === false ? { backgroundColor: \"white\" } : {}),\n ...(typeof style === \"object\" ? style : {}),\n },\n ref: (ref: HTMLCanvasElement) => {\n canvasElm.current = ref;\n if (ref) {\n resizeCanvas(ref);\n }\n },\n });\n}\n\nconst styles = StyleSheet.create({\n flex1: {\n flex: 1,\n },\n view: {\n alignItems: \"stretch\",\n backgroundColor: \"transparent\",\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n border: \"0 solid black\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexBasis: \"auto\",\n flexDirection: \"column\",\n flexShrink: 0,\n listStyle: \"none\",\n margin: 0,\n minHeight: 0,\n minWidth: 0,\n padding: 0,\n position: \"relative\",\n zIndex: 0,\n },\n});\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,UAAU,QAAQ,cAAc;AAIzC,SAASC,aAAa,QAAQ,SAAS;AAOvC;AACA,SAASC,QAAQA,CACfC,IAAO,EACPC,IAAY,EACZC,SAAS,GAAG,KAAK,EACjB;EACA,IAAIC,OAAkD;EACtD,OAAO,SAASC,SAASA,CAEvB,GAAGC,IAAmB,EACtB;IACA,MAAMC,OAAO,GAAG,IAAI;IACpB,MAAMC,OAAO,GAAGL,SAAS,IAAI,CAACC,OAAO;IACrC,IAAIA,OAAO,EAAE;MACXK,YAAY,CAACL,OAAO,CAAC;IACvB;IACAA,OAAO,GAAGM,UAAU,CAAC,MAAM;MACzBN,OAAO,GAAGO,SAAS;MACnB,IAAI,CAACR,SAAS,EAAE;QACdF,IAAI,CAACW,KAAK,CAACL,OAAO,EAAED,IAAI,CAAC;MAC3B;IACF,CAAC,EAAEJ,IAAI,CAAC;IACR,IAAIM,OAAO,EAAE;MACXP,IAAI,CAACW,KAAK,CAACL,OAAO,EAAED,IAAI,CAAC;IAC3B;EACF,CAAC;AACH;AAEA,SAASO,YAAYA,CAACC,MAAgC,EAAE;EACtD,IAAI,CAACA,MAAM,EAAE;IACX;EACF;EAEA,MAAMC,GAAG,GAAGC,MAAM,CAACC,gBAAgB,IAAI,CAAC;EAExC,MAAM;IAAEC,MAAM;IAAEC;EAAM,CAAC,GAAGL,MAAM,CAACM,qBAAqB,CAAC,CAAC;EACxDN,MAAM,CAACO,YAAY,CAAC,QAAQ,EAAE,CAACH,MAAM,GAAGH,GAAG,EAAEO,QAAQ,CAAC,CAAC,CAAC;EACxDR,MAAM,CAACO,YAAY,CAAC,OAAO,EAAE,CAACF,KAAK,GAAGJ,GAAG,EAAEO,QAAQ,CAAC,CAAC,CAAC;AACxD;;AAEA;AACA,eAAe,SAASC,yBAAyBA,CAC/CC,KAAkB,EACC;EACnB,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC,WAAW;IAAE,GAAGC;EAAK,CAAC,GAAGJ,KAAK;EAExD,MAAMK,SAAS,GAAGhC,MAAM,CAAoB,IAAI,CAAC;EAEjDD,SAAS,CAAC,MAAM;IACd,MAAMkC,QAAQ,GAAG9B,QAAQ,CAAC,MAAMa,YAAY,CAACgB,SAAS,CAACE,OAAO,CAAC,EAAE,GAAG,CAAC;IACrEf,MAAM,CAACgB,gBAAgB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;IAC3C,OAAO,MAAM;MACXd,MAAM,CAACiB,mBAAmB,CAAC,QAAQ,EAAEH,QAAQ,CAAC;IAChD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBAAOnC,KAAK,CAACuC,aAAa,CAAC,QAAQ,EAAE;IACnC,GAAGN,IAAI;IACPO,EAAE,EAAEpC,aAAa,CAAC0B,SAAS,CAAC;IAC5BC,KAAK,EAAE;MACL,GAAGU,MAAM,CAACC,IAAI;MACd,GAAGD,MAAM,CAACE,KAAK;MACf,IAAIX,WAAW,KAAK,KAAK,GAAG;QAAEY,eAAe,EAAE;MAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;MAC9D,IAAI,OAAOb,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,CAAC,CAAC;IAC5C,CAAC;IACDc,GAAG,EAAGA,GAAsB,IAAK;MAC/BX,SAAS,CAACE,OAAO,GAAGS,GAAG;MACvB,IAAIA,GAAG,EAAE;QACP3B,YAAY,CAAC2B,GAAG,CAAC;MACnB;IACF;EACF,CAAC,CAAC;AACJ;AAEA,MAAMJ,MAAM,GAAGtC,UAAU,CAAC2C,MAAM,CAAC;EAC/BH,KAAK,EAAE;IACLI,IAAI,EAAE;EACR,CAAC;EACDL,IAAI,EAAE;IACJM,UAAU,EAAE,SAAS;IACrBJ,eAAe,EAAE,aAAa;IAC9B;IACA;IACAK,MAAM,EAAE,eAAe;IACvBC,SAAS,EAAE,YAAY;IACvBC,OAAO,EAAE,MAAM;IACfC,SAAS,EAAE,MAAM;IACjBC,aAAa,EAAE,QAAQ;IACvBC,UAAU,EAAE,CAAC;IACbC,SAAS,EAAE,MAAM;IACjBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,CAAC;IACZC,QAAQ,EAAE,CAAC;IACXC,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function contextIdToId(contextId: number): string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["contextIdToId","contextId"],"sources":["utils.ts"],"sourcesContent":["// Only used on the web\nexport function contextIdToId(contextId: number) {\n return \"rnwgpu-canvas-\" + contextId;\n}\n"],"mappings":"AAAA;AACA,OAAO,SAASA,aAAaA,CAACC,SAAiB,EAAE;EAC/C,OAAO,gBAAgB,GAAGA,SAAS;AACrC","ignoreList":[]}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { ViewProps } from "react-native";
|
|
3
|
-
declare global {
|
|
4
|
-
var RNWebGPU: {
|
|
5
|
-
gpu: GPU;
|
|
6
|
-
fabric: boolean;
|
|
7
|
-
getNativeSurface: (contextId: number) => NativeCanvas;
|
|
8
|
-
MakeWebGPUCanvasContext: (contextId: number, width: number, height: number) => RNCanvasContext;
|
|
9
|
-
destroyContext: (contextId: number) => void;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
type SurfacePointer = bigint;
|
|
13
|
-
export interface NativeCanvas {
|
|
14
|
-
surface: SurfacePointer;
|
|
15
|
-
width: number;
|
|
16
|
-
height: number;
|
|
17
|
-
clientWidth: number;
|
|
18
|
-
clientHeight: number;
|
|
19
|
-
}
|
|
20
|
-
export type RNCanvasContext = GPUCanvasContext & {
|
|
21
|
-
present: () => void;
|
|
22
|
-
};
|
|
23
|
-
export interface WebGPUCanvasRef {
|
|
24
|
-
getContextId: () => number;
|
|
25
|
-
getContext(contextName: "webgpu"): RNCanvasContext | null;
|
|
26
|
-
getNativeSurface: () => NativeCanvas;
|
|
27
|
-
}
|
|
28
|
-
interface WebGPUCanvasProps extends ViewProps {
|
|
29
|
-
transparent?: boolean;
|
|
30
|
-
ref?: React.Ref<WebGPUCanvasRef>;
|
|
31
|
-
}
|
|
32
|
-
export declare const WebGPUCanvas: ({ transparent, ref, ...props }: WebGPUCanvasProps) => React.JSX.Element;
|
|
33
|
-
export {};
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
-
import React, { useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
3
|
-
import { View, Platform } from "react-native";
|
|
4
|
-
import WebGPUNativeView from "../specs/WebGPUViewNativeComponent";
|
|
5
|
-
let CONTEXT_COUNTER = 1;
|
|
6
|
-
function generateContextId() {
|
|
7
|
-
return CONTEXT_COUNTER++;
|
|
8
|
-
}
|
|
9
|
-
export const WebGPUCanvas = ({
|
|
10
|
-
transparent,
|
|
11
|
-
ref,
|
|
12
|
-
...props
|
|
13
|
-
}) => {
|
|
14
|
-
const viewRef = useRef(null);
|
|
15
|
-
const [contextId] = useState(() => generateContextId());
|
|
16
|
-
|
|
17
|
-
// Retire the native registry entry for this contextId on unmount. When a
|
|
18
|
-
// native surface is still attached, this is a no-op and the native view's
|
|
19
|
-
// own teardown retires the entry instead — which keeps StrictMode's
|
|
20
|
-
// simulated unmount (which re-runs effects without unmounting native views)
|
|
21
|
-
// from orphaning a live surface.
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
return () => {
|
|
24
|
-
if (typeof RNWebGPU !== "undefined") {
|
|
25
|
-
RNWebGPU.destroyContext(contextId);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}, [contextId]);
|
|
29
|
-
useImperativeHandle(ref, () => ({
|
|
30
|
-
getContextId: () => contextId,
|
|
31
|
-
getNativeSurface: () => {
|
|
32
|
-
if (typeof RNWebGPU === "undefined") {
|
|
33
|
-
throw new Error("[WebGPU] RNWebGPU is not available. Make sure SK_GRAPHITE is enabled.");
|
|
34
|
-
}
|
|
35
|
-
return RNWebGPU.getNativeSurface(contextId);
|
|
36
|
-
},
|
|
37
|
-
getContext(contextName) {
|
|
38
|
-
if (contextName !== "webgpu") {
|
|
39
|
-
throw new Error(`[WebGPU] Unsupported context: ${contextName}`);
|
|
40
|
-
}
|
|
41
|
-
if (!viewRef.current) {
|
|
42
|
-
throw new Error("[WebGPU] Cannot get context before mount");
|
|
43
|
-
}
|
|
44
|
-
if (typeof RNWebGPU === "undefined") {
|
|
45
|
-
throw new Error("[WebGPU] RNWebGPU is not available. Make sure SK_GRAPHITE is enabled.");
|
|
46
|
-
}
|
|
47
|
-
// getBoundingClientRect became stable in RN 0.83
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
-
const view = viewRef.current;
|
|
50
|
-
const size = "getBoundingClientRect" in view ? view.getBoundingClientRect() : view.unstable_getBoundingClientRect();
|
|
51
|
-
return RNWebGPU.MakeWebGPUCanvasContext(contextId, size.width, size.height);
|
|
52
|
-
}
|
|
53
|
-
}));
|
|
54
|
-
|
|
55
|
-
// WebGPU Canvas is not supported on web
|
|
56
|
-
if (Platform.OS === "web") {
|
|
57
|
-
return /*#__PURE__*/React.createElement(View, props);
|
|
58
|
-
}
|
|
59
|
-
return /*#__PURE__*/React.createElement(View, _extends({
|
|
60
|
-
collapsable: false,
|
|
61
|
-
ref: viewRef
|
|
62
|
-
}, props), /*#__PURE__*/React.createElement(WebGPUNativeView, {
|
|
63
|
-
style: {
|
|
64
|
-
flex: 1
|
|
65
|
-
},
|
|
66
|
-
contextId: contextId,
|
|
67
|
-
transparent: !!transparent
|
|
68
|
-
}));
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=WebGPUCanvas.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","View","Platform","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","WebGPUCanvas","transparent","ref","props","viewRef","contextId","RNWebGPU","destroyContext","getContextId","getNativeSurface","Error","getContext","contextName","current","view","size","getBoundingClientRect","unstable_getBoundingClientRect","MakeWebGPUCanvasContext","width","height","OS","createElement","_extends","collapsable","style","flex"],"sources":["WebGPUCanvas.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport type { ViewProps } from \"react-native\";\nimport { View, Platform } from \"react-native\";\n\nimport WebGPUNativeView from \"../specs/WebGPUViewNativeComponent\";\n\nlet CONTEXT_COUNTER = 1;\nfunction generateContextId() {\n return CONTEXT_COUNTER++;\n}\n\ndeclare global {\n var RNWebGPU: {\n gpu: GPU;\n fabric: boolean;\n getNativeSurface: (contextId: number) => NativeCanvas;\n MakeWebGPUCanvasContext: (\n contextId: number,\n width: number,\n height: number\n ) => RNCanvasContext;\n // Retires a canvas context; called by the Canvas on unmount (the Canvas\n // owns the native registry entry for its contextId).\n destroyContext: (contextId: number) => void;\n };\n}\n\ntype SurfacePointer = bigint;\n\nexport interface NativeCanvas {\n surface: SurfacePointer;\n width: number;\n height: number;\n clientWidth: number;\n clientHeight: number;\n}\n\nexport type RNCanvasContext = GPUCanvasContext & {\n present: () => void;\n};\n\nexport interface WebGPUCanvasRef {\n getContextId: () => number;\n getContext(contextName: \"webgpu\"): RNCanvasContext | null;\n getNativeSurface: () => NativeCanvas;\n}\n\ninterface WebGPUCanvasProps extends ViewProps {\n transparent?: boolean;\n ref?: React.Ref<WebGPUCanvasRef>;\n}\n\nexport const WebGPUCanvas = ({\n transparent,\n ref,\n ...props\n}: WebGPUCanvasProps) => {\n const viewRef = useRef(null);\n const [contextId] = useState(() => generateContextId());\n\n // Retire the native registry entry for this contextId on unmount. When a\n // native surface is still attached, this is a no-op and the native view's\n // own teardown retires the entry instead — which keeps StrictMode's\n // simulated unmount (which re-runs effects without unmounting native views)\n // from orphaning a live surface.\n useEffect(() => {\n return () => {\n if (typeof RNWebGPU !== \"undefined\") {\n RNWebGPU.destroyContext(contextId);\n }\n };\n }, [contextId]);\n\n useImperativeHandle(ref, () => ({\n getContextId: () => contextId,\n getNativeSurface: () => {\n if (typeof RNWebGPU === \"undefined\") {\n throw new Error(\n \"[WebGPU] RNWebGPU is not available. Make sure SK_GRAPHITE is enabled.\"\n );\n }\n return RNWebGPU.getNativeSurface(contextId);\n },\n getContext(contextName: \"webgpu\"): RNCanvasContext | null {\n if (contextName !== \"webgpu\") {\n throw new Error(`[WebGPU] Unsupported context: ${contextName}`);\n }\n if (!viewRef.current) {\n throw new Error(\"[WebGPU] Cannot get context before mount\");\n }\n if (typeof RNWebGPU === \"undefined\") {\n throw new Error(\n \"[WebGPU] RNWebGPU is not available. Make sure SK_GRAPHITE is enabled.\"\n );\n }\n // getBoundingClientRect became stable in RN 0.83\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const view = viewRef.current as any;\n const size =\n \"getBoundingClientRect\" in view\n ? view.getBoundingClientRect()\n : view.unstable_getBoundingClientRect();\n return RNWebGPU.MakeWebGPUCanvasContext(\n contextId,\n size.width,\n size.height\n );\n },\n }));\n\n // WebGPU Canvas is not supported on web\n if (Platform.OS === \"web\") {\n return <View {...props} />;\n }\n\n return (\n <View collapsable={false} ref={viewRef} {...props}>\n <WebGPUNativeView\n style={{ flex: 1 }}\n contextId={contextId}\n transparent={!!transparent}\n />\n </View>\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAE/E,SAASC,IAAI,EAAEC,QAAQ,QAAQ,cAAc;AAE7C,OAAOC,gBAAgB,MAAM,oCAAoC;AAEjE,IAAIC,eAAe,GAAG,CAAC;AACvB,SAASC,iBAAiBA,CAAA,EAAG;EAC3B,OAAOD,eAAe,EAAE;AAC1B;AA2CA,OAAO,MAAME,YAAY,GAAGA,CAAC;EAC3BC,WAAW;EACXC,GAAG;EACH,GAAGC;AACc,CAAC,KAAK;EACvB,MAAMC,OAAO,GAAGX,MAAM,CAAC,IAAI,CAAC;EAC5B,MAAM,CAACY,SAAS,CAAC,GAAGX,QAAQ,CAAC,MAAMK,iBAAiB,CAAC,CAAC,CAAC;;EAEvD;EACA;EACA;EACA;EACA;EACAR,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,IAAI,OAAOe,QAAQ,KAAK,WAAW,EAAE;QACnCA,QAAQ,CAACC,cAAc,CAACF,SAAS,CAAC;MACpC;IACF,CAAC;EACH,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEfb,mBAAmB,CAACU,GAAG,EAAE,OAAO;IAC9BM,YAAY,EAAEA,CAAA,KAAMH,SAAS;IAC7BI,gBAAgB,EAAEA,CAAA,KAAM;MACtB,IAAI,OAAOH,QAAQ,KAAK,WAAW,EAAE;QACnC,MAAM,IAAII,KAAK,CACb,uEACF,CAAC;MACH;MACA,OAAOJ,QAAQ,CAACG,gBAAgB,CAACJ,SAAS,CAAC;IAC7C,CAAC;IACDM,UAAUA,CAACC,WAAqB,EAA0B;MACxD,IAAIA,WAAW,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAIF,KAAK,CAAC,iCAAiCE,WAAW,EAAE,CAAC;MACjE;MACA,IAAI,CAACR,OAAO,CAACS,OAAO,EAAE;QACpB,MAAM,IAAIH,KAAK,CAAC,0CAA0C,CAAC;MAC7D;MACA,IAAI,OAAOJ,QAAQ,KAAK,WAAW,EAAE;QACnC,MAAM,IAAII,KAAK,CACb,uEACF,CAAC;MACH;MACA;MACA;MACA,MAAMI,IAAI,GAAGV,OAAO,CAACS,OAAc;MACnC,MAAME,IAAI,GACR,uBAAuB,IAAID,IAAI,GAC3BA,IAAI,CAACE,qBAAqB,CAAC,CAAC,GAC5BF,IAAI,CAACG,8BAA8B,CAAC,CAAC;MAC3C,OAAOX,QAAQ,CAACY,uBAAuB,CACrCb,SAAS,EACTU,IAAI,CAACI,KAAK,EACVJ,IAAI,CAACK,MACP,CAAC;IACH;EACF,CAAC,CAAC,CAAC;;EAEH;EACA,IAAIxB,QAAQ,CAACyB,EAAE,KAAK,KAAK,EAAE;IACzB,oBAAO/B,KAAA,CAAAgC,aAAA,CAAC3B,IAAI,EAAKQ,KAAQ,CAAC;EAC5B;EAEA,oBACEb,KAAA,CAAAgC,aAAA,CAAC3B,IAAI,EAAA4B,QAAA;IAACC,WAAW,EAAE,KAAM;IAACtB,GAAG,EAAEE;EAAQ,GAAKD,KAAK,gBAC/Cb,KAAA,CAAAgC,aAAA,CAACzB,gBAAgB;IACf4B,KAAK,EAAE;MAAEC,IAAI,EAAE;IAAE,CAAE;IACnBrB,SAAS,EAAEA,SAAU;IACrBJ,WAAW,EAAE,CAAC,CAACA;EAAY,CAC5B,CACG,CAAC;AAEX,CAAC","ignoreList":[]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { ViewProps } from "react-native";
|
|
3
|
-
export interface NativeCanvas {
|
|
4
|
-
surface: bigint;
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
clientWidth: number;
|
|
8
|
-
clientHeight: number;
|
|
9
|
-
}
|
|
10
|
-
export type RNCanvasContext = GPUCanvasContext & {
|
|
11
|
-
present: () => void;
|
|
12
|
-
};
|
|
13
|
-
export interface WebGPUCanvasRef {
|
|
14
|
-
getContextId: () => number;
|
|
15
|
-
getContext(contextName: "webgpu"): RNCanvasContext | null;
|
|
16
|
-
getNativeSurface: () => NativeCanvas;
|
|
17
|
-
}
|
|
18
|
-
interface WebGPUCanvasProps extends ViewProps {
|
|
19
|
-
transparent?: boolean;
|
|
20
|
-
ref?: React.Ref<WebGPUCanvasRef>;
|
|
21
|
-
}
|
|
22
|
-
export declare const WebGPUCanvas: ({ transparent: _transparent, ref: _ref, ...props }: WebGPUCanvasProps) => React.JSX.Element;
|
|
23
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
// WebGPU Canvas is not supported on web
|
|
3
|
-
export const WebGPUCanvas = ({
|
|
4
|
-
transparent: _transparent,
|
|
5
|
-
ref: _ref,
|
|
6
|
-
...props
|
|
7
|
-
}) => {
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
9
|
-
// @ts-expect-error
|
|
10
|
-
return /*#__PURE__*/React.createElement("div", props);
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=WebGPUCanvas.web.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","WebGPUCanvas","transparent","_transparent","ref","_ref","props","createElement"],"sources":["WebGPUCanvas.web.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeCanvas {\n surface: bigint;\n width: number;\n height: number;\n clientWidth: number;\n clientHeight: number;\n}\n\nexport type RNCanvasContext = GPUCanvasContext & {\n present: () => void;\n};\n\nexport interface WebGPUCanvasRef {\n getContextId: () => number;\n getContext(contextName: \"webgpu\"): RNCanvasContext | null;\n getNativeSurface: () => NativeCanvas;\n}\n\ninterface WebGPUCanvasProps extends ViewProps {\n transparent?: boolean;\n ref?: React.Ref<WebGPUCanvasRef>;\n}\n\n// WebGPU Canvas is not supported on web\nexport const WebGPUCanvas = ({\n transparent: _transparent,\n ref: _ref,\n ...props\n}: WebGPUCanvasProps) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return <div {...props} />;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AA0BzB;AACA,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAC3BC,WAAW,EAAEC,YAAY;EACzBC,GAAG,EAAEC,IAAI;EACT,GAAGC;AACc,CAAC,KAAK;EACvB;EACA;EACA,oBAAON,KAAA,CAAAO,aAAA,QAASD,KAAQ,CAAC;AAC3B,CAAC","ignoreList":[]}
|