@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,87 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <cstdint>
|
|
4
|
-
#include <stdexcept>
|
|
5
|
-
#include <string>
|
|
6
|
-
|
|
7
|
-
#include "webgpu/webgpu_cpp.h"
|
|
8
|
-
|
|
9
|
-
#if defined(__APPLE__)
|
|
10
|
-
#include "AppleNativeBuffer.h"
|
|
11
|
-
#elif defined(__ANDROID__)
|
|
12
|
-
#include <android/hardware_buffer.h>
|
|
13
|
-
#endif
|
|
14
|
-
|
|
15
|
-
namespace rnwgpu {
|
|
16
|
-
|
|
17
|
-
// Import a Skia NativeBuffer pointer (a CVPixelBufferRef on Apple, an
|
|
18
|
-
// AHardwareBuffer* on Android, as returned by Skia.NativeBuffer.MakeFromImage /
|
|
19
|
-
// MakeTestBuffer) as a wgpu::SharedTextureMemory on `device`. When non-null,
|
|
20
|
-
// outWidth/outHeight receive the surface dimensions. Returns a null
|
|
21
|
-
// SharedTextureMemory if the import itself fails (the caller decides how to
|
|
22
|
-
// report that); throws std::runtime_error for pre-import failures (a buffer
|
|
23
|
-
// with no IOSurface, or an unsupported platform).
|
|
24
|
-
//
|
|
25
|
-
// The platform-specific chained descriptor only needs to outlive the
|
|
26
|
-
// ImportSharedTextureMemory call, so it lives entirely within this function.
|
|
27
|
-
// Shared by GPUDevice::importSharedTextureMemory and
|
|
28
|
-
// GPUExternalTexture::Create.
|
|
29
|
-
inline wgpu::SharedTextureMemory importNativeBufferAsSharedTextureMemory(
|
|
30
|
-
const wgpu::Device &device, void *bufferPtr, const std::string &label,
|
|
31
|
-
uint32_t *outWidth, uint32_t *outHeight) {
|
|
32
|
-
wgpu::SharedTextureMemoryDescriptor memDesc{};
|
|
33
|
-
if (!label.empty()) {
|
|
34
|
-
memDesc.label = wgpu::StringView(label.c_str(), label.size());
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
uint32_t width = 0;
|
|
38
|
-
uint32_t height = 0;
|
|
39
|
-
wgpu::SharedTextureMemory memory;
|
|
40
|
-
|
|
41
|
-
#if defined(__APPLE__)
|
|
42
|
-
// Skia's NativeBuffer is a CVPixelBufferRef; extract its backing IOSurface
|
|
43
|
-
// (and dimensions) in Objective-C++ since CoreVideo isn't available here.
|
|
44
|
-
void *ioSurface = GetIOSurfaceFromNativeBuffer(bufferPtr, &width, &height);
|
|
45
|
-
if (ioSurface == nullptr) {
|
|
46
|
-
throw std::runtime_error(
|
|
47
|
-
"importNativeBufferAsSharedTextureMemory(): native "
|
|
48
|
-
"buffer has no IOSurface");
|
|
49
|
-
}
|
|
50
|
-
wgpu::SharedTextureMemoryIOSurfaceDescriptor platformDesc{};
|
|
51
|
-
platformDesc.ioSurface = ioSurface;
|
|
52
|
-
// Default off: enabling it propagates StorageBinding into properties.usage,
|
|
53
|
-
// which then forces memory.createTexture() (no-descriptor form) to validate
|
|
54
|
-
// the format against storage capabilities. bgra8unorm (the standard
|
|
55
|
-
// CVPixelBuffer format) only supports storage when the device opts into the
|
|
56
|
-
// bgra8unorm-storage feature, so unconditionally setting this here breaks the
|
|
57
|
-
// common sample-only case.
|
|
58
|
-
platformDesc.allowStorageBinding = false;
|
|
59
|
-
memDesc.nextInChain = &platformDesc;
|
|
60
|
-
memory = device.ImportSharedTextureMemory(&memDesc);
|
|
61
|
-
#elif defined(__ANDROID__)
|
|
62
|
-
auto *ahb = reinterpret_cast<AHardwareBuffer *>(bufferPtr);
|
|
63
|
-
AHardwareBuffer_Desc ahbDesc = {};
|
|
64
|
-
AHardwareBuffer_describe(ahb, &ahbDesc);
|
|
65
|
-
width = ahbDesc.width;
|
|
66
|
-
height = ahbDesc.height;
|
|
67
|
-
wgpu::SharedTextureMemoryAHardwareBufferDescriptor platformDesc{};
|
|
68
|
-
platformDesc.handle = ahb;
|
|
69
|
-
memDesc.nextInChain = &platformDesc;
|
|
70
|
-
memory = device.ImportSharedTextureMemory(&memDesc);
|
|
71
|
-
#else
|
|
72
|
-
(void)device;
|
|
73
|
-
(void)bufferPtr;
|
|
74
|
-
throw std::runtime_error(
|
|
75
|
-
"importNativeBufferAsSharedTextureMemory(): unsupported platform");
|
|
76
|
-
#endif
|
|
77
|
-
|
|
78
|
-
if (outWidth != nullptr) {
|
|
79
|
-
*outWidth = width;
|
|
80
|
-
}
|
|
81
|
-
if (outHeight != nullptr) {
|
|
82
|
-
*outHeight = height;
|
|
83
|
-
}
|
|
84
|
-
return memory;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
} // namespace rnwgpu
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
#include <string>
|
|
5
|
-
|
|
6
|
-
#include "jsi/NativeObject.h"
|
|
7
|
-
|
|
8
|
-
#include "GPU.h"
|
|
9
|
-
#include "GPUCanvasContext.h"
|
|
10
|
-
#include "rnwgpu/Canvas.h"
|
|
11
|
-
#include "rnwgpu/PlatformContext.h"
|
|
12
|
-
|
|
13
|
-
namespace rnwgpu {
|
|
14
|
-
|
|
15
|
-
namespace jsi = facebook::jsi;
|
|
16
|
-
|
|
17
|
-
class RNWebGPU : public NativeObject<RNWebGPU> {
|
|
18
|
-
public:
|
|
19
|
-
static constexpr const char *CLASS_NAME = "RNWebGPU";
|
|
20
|
-
|
|
21
|
-
explicit RNWebGPU(std::shared_ptr<GPU> gpu,
|
|
22
|
-
std::shared_ptr<PlatformContext> platformContext)
|
|
23
|
-
: NativeObject(CLASS_NAME), _gpu(gpu), _platformContext(platformContext) {
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
std::shared_ptr<GPU> getGPU() { return _gpu; }
|
|
27
|
-
|
|
28
|
-
bool getFabric() { return true; }
|
|
29
|
-
|
|
30
|
-
std::shared_ptr<GPUCanvasContext>
|
|
31
|
-
MakeWebGPUCanvasContext(int contextId, float width, float height) {
|
|
32
|
-
auto ctx =
|
|
33
|
-
std::make_shared<GPUCanvasContext>(_gpu, contextId, width, height);
|
|
34
|
-
return ctx;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
std::shared_ptr<Canvas> getNativeSurface(int contextId) {
|
|
38
|
-
auto ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
39
|
-
auto info = registry.getSurfaceInfo(contextId);
|
|
40
|
-
if (info == nullptr) {
|
|
41
|
-
return std::make_shared<Canvas>(nullptr, 0, 0);
|
|
42
|
-
}
|
|
43
|
-
auto nativeInfo = info->getNativeInfo();
|
|
44
|
-
return std::make_shared<Canvas>(nativeInfo.nativeSurface, nativeInfo.width,
|
|
45
|
-
nativeInfo.height);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Retires a canvas context from the JS side (Canvas unmount cleanup).
|
|
49
|
-
// Registry entries have two owners, split by whether a native surface is
|
|
50
|
-
// attached:
|
|
51
|
-
// - A native view currently owns a surface (or one is pending): its own
|
|
52
|
-
// teardown (WebGPUMetalView dealloc / WebGPUViewManager.onDropViewInstance)
|
|
53
|
-
// removes the entry. Skipping here keeps React StrictMode safe: its
|
|
54
|
-
// simulated unmount re-runs JS effects without unmounting native views,
|
|
55
|
-
// and removing the entry then would orphan the still-attached surface.
|
|
56
|
-
// - No native surface: the JS side is the last owner and removes the entry.
|
|
57
|
-
// The check-and-erase runs atomically under the registry lock
|
|
58
|
-
// (removeSurfaceInfoIfDetached), serialized against the UI thread's
|
|
59
|
-
// find-or-create + attach (SurfaceRegistry::attachSurface), so a concurrent
|
|
60
|
-
// attach can never be orphaned by this removal.
|
|
61
|
-
void destroyContext(int contextId) {
|
|
62
|
-
auto ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
63
|
-
registry.removeSurfaceInfoIfDetached(contextId);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
67
|
-
installGetter(runtime, prototype, "fabric", &RNWebGPU::getFabric);
|
|
68
|
-
installGetter(runtime, prototype, "gpu", &RNWebGPU::getGPU);
|
|
69
|
-
installMethod(runtime, prototype, "getNativeSurface",
|
|
70
|
-
&RNWebGPU::getNativeSurface);
|
|
71
|
-
installMethod(runtime, prototype, "destroyContext",
|
|
72
|
-
&RNWebGPU::destroyContext);
|
|
73
|
-
installMethod(runtime, prototype, "MakeWebGPUCanvasContext",
|
|
74
|
-
&RNWebGPU::MakeWebGPUCanvasContext);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
private:
|
|
78
|
-
std::shared_ptr<GPU> _gpu;
|
|
79
|
-
std::shared_ptr<PlatformContext> _platformContext;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
} // namespace rnwgpu
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <jsi/jsi.h>
|
|
4
|
-
|
|
5
|
-
#include "descriptors/GPUBufferUsage.h"
|
|
6
|
-
#include "descriptors/GPUColorWrite.h"
|
|
7
|
-
#include "descriptors/GPUMapMode.h"
|
|
8
|
-
#include "descriptors/GPUShaderStage.h"
|
|
9
|
-
#include "descriptors/GPUTextureUsage.h"
|
|
10
|
-
|
|
11
|
-
namespace rnwgpu {
|
|
12
|
-
|
|
13
|
-
namespace jsi = facebook::jsi;
|
|
14
|
-
|
|
15
|
-
// Installs the WebGPU flag constants (GPUBufferUsage, GPUColorWrite, GPUMapMode,
|
|
16
|
-
// GPUShaderStage, GPUTextureUsage) as plain JS objects on `runtime`'s global.
|
|
17
|
-
//
|
|
18
|
-
// The numeric values are derived from the Dawn wgpu::*Usage enums (single source
|
|
19
|
-
// of truth in C++), so this is safe to call on ANY runtime: the main JS runtime
|
|
20
|
-
// at install time, and any worklet runtime (Reanimated UI, dedicated worklet
|
|
21
|
-
// runtimes, Vision Camera frame processors) via the global `installWebGPU()`
|
|
22
|
-
// host function. It is idempotent: re-installing overwrites the globals with
|
|
23
|
-
// equal values.
|
|
24
|
-
inline void installWebGPUConstants(jsi::Runtime &runtime) {
|
|
25
|
-
auto global = runtime.global();
|
|
26
|
-
global.setProperty(runtime, "GPUBufferUsage",
|
|
27
|
-
GPUBufferUsage::create(runtime));
|
|
28
|
-
global.setProperty(runtime, "GPUColorWrite", GPUColorWrite::create(runtime));
|
|
29
|
-
global.setProperty(runtime, "GPUMapMode", GPUMapMode::create(runtime));
|
|
30
|
-
global.setProperty(runtime, "GPUShaderStage",
|
|
31
|
-
GPUShaderStage::create(runtime));
|
|
32
|
-
global.setProperty(runtime, "GPUTextureUsage",
|
|
33
|
-
GPUTextureUsage::create(runtime));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
} // namespace rnwgpu
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
#include <string>
|
|
5
|
-
#include <vector>
|
|
6
|
-
|
|
7
|
-
#include "webgpu/webgpu_cpp.h"
|
|
8
|
-
|
|
9
|
-
#include "jsi/JSIConverter.h"
|
|
10
|
-
|
|
11
|
-
#include "GPUBindGroupEntry.h"
|
|
12
|
-
#include "rnwgpu/api/GPUBindGroupLayout.h"
|
|
13
|
-
|
|
14
|
-
namespace jsi = facebook::jsi;
|
|
15
|
-
|
|
16
|
-
namespace rnwgpu {
|
|
17
|
-
|
|
18
|
-
struct GPUBindGroupDescriptor {
|
|
19
|
-
std::shared_ptr<GPUBindGroupLayout> layout; // GPUBindGroupLayout
|
|
20
|
-
std::vector<std::shared_ptr<GPUBindGroupEntry>>
|
|
21
|
-
entries; // Iterable<GPUBindGroupEntry>
|
|
22
|
-
std::optional<std::string> label; // string
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
} // namespace rnwgpu
|
|
26
|
-
|
|
27
|
-
namespace rnwgpu {
|
|
28
|
-
|
|
29
|
-
template <>
|
|
30
|
-
struct JSIConverter<std::shared_ptr<rnwgpu::GPUBindGroupDescriptor>> {
|
|
31
|
-
static std::shared_ptr<rnwgpu::GPUBindGroupDescriptor>
|
|
32
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
33
|
-
auto result = std::make_unique<rnwgpu::GPUBindGroupDescriptor>();
|
|
34
|
-
if (!outOfBounds && arg.isObject()) {
|
|
35
|
-
auto value = arg.getObject(runtime);
|
|
36
|
-
if (value.hasProperty(runtime, "layout")) {
|
|
37
|
-
auto prop = value.getProperty(runtime, "layout");
|
|
38
|
-
result->layout =
|
|
39
|
-
JSIConverter<std::shared_ptr<GPUBindGroupLayout>>::fromJSI(
|
|
40
|
-
runtime, prop, false);
|
|
41
|
-
}
|
|
42
|
-
if (value.hasProperty(runtime, "entries")) {
|
|
43
|
-
auto prop = value.getProperty(runtime, "entries");
|
|
44
|
-
result->entries = JSIConverter<
|
|
45
|
-
std::vector<std::shared_ptr<GPUBindGroupEntry>>>::fromJSI(runtime,
|
|
46
|
-
prop,
|
|
47
|
-
false);
|
|
48
|
-
}
|
|
49
|
-
if (value.hasProperty(runtime, "label")) {
|
|
50
|
-
auto prop = value.getProperty(runtime, "label");
|
|
51
|
-
result->label = JSIConverter<std::optional<std::string>>::fromJSI(
|
|
52
|
-
runtime, prop, false);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
static jsi::Value toJSI(jsi::Runtime &runtime,
|
|
59
|
-
std::shared_ptr<rnwgpu::GPUBindGroupDescriptor> arg) {
|
|
60
|
-
throw std::runtime_error("Invalid GPUBindGroupDescriptor::toJSI()");
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
} // namespace rnwgpu
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
#include <variant>
|
|
5
|
-
|
|
6
|
-
#include "webgpu/webgpu_cpp.h"
|
|
7
|
-
|
|
8
|
-
#include "GPUBufferBinding.h"
|
|
9
|
-
#include "jsi/JSIConverter.h"
|
|
10
|
-
#include "rnwgpu/api/GPUExternalTexture.h"
|
|
11
|
-
#include "rnwgpu/api/GPUSampler.h"
|
|
12
|
-
#include "rnwgpu/api/GPUTextureView.h"
|
|
13
|
-
|
|
14
|
-
namespace jsi = facebook::jsi;
|
|
15
|
-
|
|
16
|
-
namespace rnwgpu {
|
|
17
|
-
|
|
18
|
-
struct GPUBindGroupEntry {
|
|
19
|
-
double binding;
|
|
20
|
-
std::shared_ptr<GPUSampler> sampler = nullptr;
|
|
21
|
-
std::shared_ptr<GPUTextureView> textureView = nullptr;
|
|
22
|
-
std::shared_ptr<GPUBufferBinding> buffer = nullptr;
|
|
23
|
-
std::shared_ptr<GPUExternalTexture> externalTexture = nullptr;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
} // namespace rnwgpu
|
|
27
|
-
|
|
28
|
-
namespace rnwgpu {
|
|
29
|
-
|
|
30
|
-
template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUBindGroupEntry>> {
|
|
31
|
-
static std::shared_ptr<rnwgpu::GPUBindGroupEntry>
|
|
32
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
33
|
-
auto result = std::make_unique<rnwgpu::GPUBindGroupEntry>();
|
|
34
|
-
if (!outOfBounds && arg.isObject()) {
|
|
35
|
-
auto value = arg.getObject(runtime);
|
|
36
|
-
if (value.hasProperty(runtime, "binding")) {
|
|
37
|
-
result->binding = value.getProperty(runtime, "binding").asNumber();
|
|
38
|
-
}
|
|
39
|
-
if (value.hasProperty(runtime, "resource")) {
|
|
40
|
-
auto prop = value.getProperty(runtime, "resource");
|
|
41
|
-
if (prop.isObject()) {
|
|
42
|
-
auto obj = prop.getObject(runtime);
|
|
43
|
-
if (obj.hasNativeState<rnwgpu::GPUSampler>(runtime)) {
|
|
44
|
-
result->sampler = obj.getNativeState<rnwgpu::GPUSampler>(runtime);
|
|
45
|
-
} else if (obj.hasNativeState<rnwgpu::GPUTextureView>(runtime)) {
|
|
46
|
-
result->textureView =
|
|
47
|
-
obj.getNativeState<rnwgpu::GPUTextureView>(runtime);
|
|
48
|
-
} else if (obj.hasNativeState<rnwgpu::GPUExternalTexture>(runtime)) {
|
|
49
|
-
result->externalTexture =
|
|
50
|
-
obj.getNativeState<rnwgpu::GPUExternalTexture>(runtime);
|
|
51
|
-
} else if (obj.hasNativeState<rnwgpu::GPUBuffer>(runtime)) {
|
|
52
|
-
auto binding = std::make_shared<rnwgpu::GPUBufferBinding>();
|
|
53
|
-
binding->buffer = obj.getNativeState<rnwgpu::GPUBuffer>(runtime);
|
|
54
|
-
result->buffer = binding;
|
|
55
|
-
} else {
|
|
56
|
-
result->buffer = JSIConverter<
|
|
57
|
-
std::shared_ptr<rnwgpu::GPUBufferBinding>>::fromJSI(runtime,
|
|
58
|
-
prop,
|
|
59
|
-
false);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// result->resource = JSIConverter<std::variant<
|
|
63
|
-
// std::shared_ptr<GPUSampler>, std::shared_ptr<GPUTextureView>,
|
|
64
|
-
// std::shared_ptr<GPUBufferBinding>,
|
|
65
|
-
// std::shared_ptr<GPUExternalTexture>>>::fromJSI(runtime, prop,
|
|
66
|
-
// false);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
static jsi::Value toJSI(jsi::Runtime &runtime,
|
|
73
|
-
std::shared_ptr<rnwgpu::GPUBindGroupEntry> arg) {
|
|
74
|
-
throw std::runtime_error("Invalid GPUBindGroupEntry::toJSI()");
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
} // namespace rnwgpu
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
#include <string>
|
|
5
|
-
#include <vector>
|
|
6
|
-
|
|
7
|
-
#include "webgpu/webgpu_cpp.h"
|
|
8
|
-
|
|
9
|
-
#include "jsi/JSIConverter.h"
|
|
10
|
-
|
|
11
|
-
#include "GPUBindGroupLayoutEntry.h"
|
|
12
|
-
|
|
13
|
-
namespace jsi = facebook::jsi;
|
|
14
|
-
|
|
15
|
-
namespace rnwgpu {
|
|
16
|
-
|
|
17
|
-
struct GPUBindGroupLayoutDescriptor {
|
|
18
|
-
std::vector<std::shared_ptr<GPUBindGroupLayoutEntry>>
|
|
19
|
-
entries; // Iterable<GPUBindGroupLayoutEntry>
|
|
20
|
-
std::optional<std::string> label; // string
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
} // namespace rnwgpu
|
|
24
|
-
|
|
25
|
-
namespace rnwgpu {
|
|
26
|
-
|
|
27
|
-
template <>
|
|
28
|
-
struct JSIConverter<std::shared_ptr<rnwgpu::GPUBindGroupLayoutDescriptor>> {
|
|
29
|
-
static std::shared_ptr<rnwgpu::GPUBindGroupLayoutDescriptor>
|
|
30
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
31
|
-
auto result = std::make_unique<rnwgpu::GPUBindGroupLayoutDescriptor>();
|
|
32
|
-
if (!outOfBounds && arg.isObject()) {
|
|
33
|
-
auto value = arg.getObject(runtime);
|
|
34
|
-
if (value.hasProperty(runtime, "entries")) {
|
|
35
|
-
auto prop = value.getProperty(runtime, "entries");
|
|
36
|
-
result->entries = JSIConverter<std::vector<
|
|
37
|
-
std::shared_ptr<GPUBindGroupLayoutEntry>>>::fromJSI(runtime, prop,
|
|
38
|
-
false);
|
|
39
|
-
}
|
|
40
|
-
if (value.hasProperty(runtime, "label")) {
|
|
41
|
-
auto prop = value.getProperty(runtime, "label");
|
|
42
|
-
result->label = JSIConverter<std::optional<std::string>>::fromJSI(
|
|
43
|
-
runtime, prop, false);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
static jsi::Value
|
|
50
|
-
toJSI(jsi::Runtime &runtime,
|
|
51
|
-
std::shared_ptr<rnwgpu::GPUBindGroupLayoutDescriptor> arg) {
|
|
52
|
-
throw std::runtime_error("Invalid GPUBindGroupLayoutDescriptor::toJSI()");
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
} // namespace rnwgpu
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
|
|
5
|
-
#include "webgpu/webgpu_cpp.h"
|
|
6
|
-
|
|
7
|
-
#include "jsi/JSIConverter.h"
|
|
8
|
-
|
|
9
|
-
#include "GPUBufferBindingLayout.h"
|
|
10
|
-
#include "GPUExternalTextureBindingLayout.h"
|
|
11
|
-
#include "GPUSamplerBindingLayout.h"
|
|
12
|
-
#include "GPUStorageTextureBindingLayout.h"
|
|
13
|
-
#include "GPUTextureBindingLayout.h"
|
|
14
|
-
|
|
15
|
-
namespace jsi = facebook::jsi;
|
|
16
|
-
|
|
17
|
-
namespace rnwgpu {
|
|
18
|
-
|
|
19
|
-
struct GPUBindGroupLayoutEntry {
|
|
20
|
-
double binding; // GPUIndex32
|
|
21
|
-
double visibility; // GPUShaderStageFlags
|
|
22
|
-
std::optional<std::shared_ptr<GPUBufferBindingLayout>>
|
|
23
|
-
buffer; // GPUBufferBindingLayout
|
|
24
|
-
std::optional<std::shared_ptr<GPUSamplerBindingLayout>>
|
|
25
|
-
sampler; // GPUSamplerBindingLayout
|
|
26
|
-
std::optional<std::shared_ptr<GPUTextureBindingLayout>>
|
|
27
|
-
texture; // GPUTextureBindingLayout
|
|
28
|
-
std::optional<std::shared_ptr<GPUStorageTextureBindingLayout>>
|
|
29
|
-
storageTexture; // GPUStorageTextureBindingLayout
|
|
30
|
-
std::optional<std::shared_ptr<GPUExternalTextureBindingLayout>>
|
|
31
|
-
externalTexture; // GPUExternalTextureBindingLayout
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
} // namespace rnwgpu
|
|
35
|
-
|
|
36
|
-
namespace rnwgpu {
|
|
37
|
-
|
|
38
|
-
template <>
|
|
39
|
-
struct JSIConverter<std::shared_ptr<rnwgpu::GPUBindGroupLayoutEntry>> {
|
|
40
|
-
static std::shared_ptr<rnwgpu::GPUBindGroupLayoutEntry>
|
|
41
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
42
|
-
auto result = std::make_unique<rnwgpu::GPUBindGroupLayoutEntry>();
|
|
43
|
-
if (!outOfBounds && arg.isObject()) {
|
|
44
|
-
auto value = arg.getObject(runtime);
|
|
45
|
-
if (value.hasProperty(runtime, "binding")) {
|
|
46
|
-
auto prop = value.getProperty(runtime, "binding");
|
|
47
|
-
result->binding = JSIConverter<double>::fromJSI(runtime, prop, false);
|
|
48
|
-
}
|
|
49
|
-
if (value.hasProperty(runtime, "visibility")) {
|
|
50
|
-
auto prop = value.getProperty(runtime, "visibility");
|
|
51
|
-
result->visibility =
|
|
52
|
-
JSIConverter<double>::fromJSI(runtime, prop, false);
|
|
53
|
-
}
|
|
54
|
-
if (value.hasProperty(runtime, "buffer")) {
|
|
55
|
-
auto prop = value.getProperty(runtime, "buffer");
|
|
56
|
-
result->buffer = JSIConverter<std::optional<
|
|
57
|
-
std::shared_ptr<GPUBufferBindingLayout>>>::fromJSI(runtime, prop,
|
|
58
|
-
false);
|
|
59
|
-
}
|
|
60
|
-
if (value.hasProperty(runtime, "sampler")) {
|
|
61
|
-
auto prop = value.getProperty(runtime, "sampler");
|
|
62
|
-
result->sampler = JSIConverter<std::optional<
|
|
63
|
-
std::shared_ptr<GPUSamplerBindingLayout>>>::fromJSI(runtime, prop,
|
|
64
|
-
false);
|
|
65
|
-
}
|
|
66
|
-
if (value.hasProperty(runtime, "texture")) {
|
|
67
|
-
auto prop = value.getProperty(runtime, "texture");
|
|
68
|
-
result->texture = JSIConverter<std::optional<
|
|
69
|
-
std::shared_ptr<GPUTextureBindingLayout>>>::fromJSI(runtime, prop,
|
|
70
|
-
false);
|
|
71
|
-
}
|
|
72
|
-
if (value.hasProperty(runtime, "storageTexture")) {
|
|
73
|
-
auto prop = value.getProperty(runtime, "storageTexture");
|
|
74
|
-
result->storageTexture = JSIConverter<std::optional<
|
|
75
|
-
std::shared_ptr<GPUStorageTextureBindingLayout>>>::fromJSI(runtime,
|
|
76
|
-
prop,
|
|
77
|
-
false);
|
|
78
|
-
}
|
|
79
|
-
if (value.hasProperty(runtime, "externalTexture")) {
|
|
80
|
-
auto prop = value.getProperty(runtime, "externalTexture");
|
|
81
|
-
result->externalTexture = JSIConverter<std::optional<
|
|
82
|
-
std::shared_ptr<GPUExternalTextureBindingLayout>>>::fromJSI(runtime,
|
|
83
|
-
prop,
|
|
84
|
-
false);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return result;
|
|
89
|
-
}
|
|
90
|
-
static jsi::Value
|
|
91
|
-
toJSI(jsi::Runtime &runtime,
|
|
92
|
-
std::shared_ptr<rnwgpu::GPUBindGroupLayoutEntry> arg) {
|
|
93
|
-
throw std::runtime_error("Invalid GPUBindGroupLayoutEntry::toJSI()");
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
} // namespace rnwgpu
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
|
|
5
|
-
#include "webgpu/webgpu_cpp.h"
|
|
6
|
-
|
|
7
|
-
#include "jsi/JSIConverter.h"
|
|
8
|
-
|
|
9
|
-
namespace jsi = facebook::jsi;
|
|
10
|
-
|
|
11
|
-
namespace rnwgpu {
|
|
12
|
-
|
|
13
|
-
struct GPUBlendComponent {
|
|
14
|
-
std::optional<wgpu::BlendOperation> operation; // GPUBlendOperation
|
|
15
|
-
std::optional<wgpu::BlendFactor> srcFactor; // GPUBlendFactor
|
|
16
|
-
std::optional<wgpu::BlendFactor> dstFactor; // GPUBlendFactor
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
} // namespace rnwgpu
|
|
20
|
-
|
|
21
|
-
namespace rnwgpu {
|
|
22
|
-
|
|
23
|
-
template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUBlendComponent>> {
|
|
24
|
-
static std::shared_ptr<rnwgpu::GPUBlendComponent>
|
|
25
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
26
|
-
auto result = std::make_unique<rnwgpu::GPUBlendComponent>();
|
|
27
|
-
if (!outOfBounds && arg.isObject()) {
|
|
28
|
-
auto value = arg.getObject(runtime);
|
|
29
|
-
if (value.hasProperty(runtime, "operation")) {
|
|
30
|
-
auto prop = value.getProperty(runtime, "operation");
|
|
31
|
-
result->operation =
|
|
32
|
-
JSIConverter<std::optional<wgpu::BlendOperation>>::fromJSI(
|
|
33
|
-
runtime, prop, false);
|
|
34
|
-
}
|
|
35
|
-
if (value.hasProperty(runtime, "srcFactor")) {
|
|
36
|
-
auto prop = value.getProperty(runtime, "srcFactor");
|
|
37
|
-
result->srcFactor =
|
|
38
|
-
JSIConverter<std::optional<wgpu::BlendFactor>>::fromJSI(
|
|
39
|
-
runtime, prop, false);
|
|
40
|
-
}
|
|
41
|
-
if (value.hasProperty(runtime, "dstFactor")) {
|
|
42
|
-
auto prop = value.getProperty(runtime, "dstFactor");
|
|
43
|
-
result->dstFactor =
|
|
44
|
-
JSIConverter<std::optional<wgpu::BlendFactor>>::fromJSI(
|
|
45
|
-
runtime, prop, false);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
static jsi::Value toJSI(jsi::Runtime &runtime,
|
|
52
|
-
std::shared_ptr<rnwgpu::GPUBlendComponent> arg) {
|
|
53
|
-
throw std::runtime_error("Invalid GPUBlendComponent::toJSI()");
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
} // namespace rnwgpu
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
|
|
5
|
-
#include "webgpu/webgpu_cpp.h"
|
|
6
|
-
|
|
7
|
-
#include "jsi/JSIConverter.h"
|
|
8
|
-
|
|
9
|
-
#include "GPUBlendComponent.h"
|
|
10
|
-
|
|
11
|
-
namespace jsi = facebook::jsi;
|
|
12
|
-
|
|
13
|
-
namespace rnwgpu {
|
|
14
|
-
|
|
15
|
-
struct GPUBlendState {
|
|
16
|
-
std::shared_ptr<GPUBlendComponent> color; // GPUBlendComponent
|
|
17
|
-
std::shared_ptr<GPUBlendComponent> alpha; // GPUBlendComponent
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
} // namespace rnwgpu
|
|
21
|
-
|
|
22
|
-
namespace rnwgpu {
|
|
23
|
-
|
|
24
|
-
template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUBlendState>> {
|
|
25
|
-
static std::shared_ptr<rnwgpu::GPUBlendState>
|
|
26
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
27
|
-
auto result = std::make_unique<rnwgpu::GPUBlendState>();
|
|
28
|
-
if (!outOfBounds && arg.isObject()) {
|
|
29
|
-
auto value = arg.getObject(runtime);
|
|
30
|
-
if (value.hasProperty(runtime, "color")) {
|
|
31
|
-
auto prop = value.getProperty(runtime, "color");
|
|
32
|
-
result->color =
|
|
33
|
-
JSIConverter<std::shared_ptr<GPUBlendComponent>>::fromJSI(
|
|
34
|
-
runtime, prop, false);
|
|
35
|
-
}
|
|
36
|
-
if (value.hasProperty(runtime, "alpha")) {
|
|
37
|
-
auto prop = value.getProperty(runtime, "alpha");
|
|
38
|
-
result->alpha =
|
|
39
|
-
JSIConverter<std::shared_ptr<GPUBlendComponent>>::fromJSI(
|
|
40
|
-
runtime, prop, false);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return result;
|
|
45
|
-
}
|
|
46
|
-
static jsi::Value toJSI(jsi::Runtime &runtime,
|
|
47
|
-
std::shared_ptr<rnwgpu::GPUBlendState> arg) {
|
|
48
|
-
throw std::runtime_error("Invalid GPUBlendState::toJSI()");
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
} // namespace rnwgpu
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
|
|
5
|
-
#include "webgpu/webgpu_cpp.h"
|
|
6
|
-
|
|
7
|
-
#include "jsi/JSIConverter.h"
|
|
8
|
-
|
|
9
|
-
#include "rnwgpu/api/GPUBuffer.h"
|
|
10
|
-
|
|
11
|
-
namespace jsi = facebook::jsi;
|
|
12
|
-
|
|
13
|
-
namespace rnwgpu {
|
|
14
|
-
|
|
15
|
-
struct GPUBufferBinding {
|
|
16
|
-
std::shared_ptr<GPUBuffer> buffer; // GPUBuffer
|
|
17
|
-
std::optional<double> offset; // GPUSize64
|
|
18
|
-
std::optional<double> size; // GPUSize64
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
} // namespace rnwgpu
|
|
22
|
-
|
|
23
|
-
namespace rnwgpu {
|
|
24
|
-
|
|
25
|
-
template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUBufferBinding>> {
|
|
26
|
-
static std::shared_ptr<rnwgpu::GPUBufferBinding>
|
|
27
|
-
fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
|
|
28
|
-
auto result = std::make_unique<rnwgpu::GPUBufferBinding>();
|
|
29
|
-
if (!outOfBounds && arg.isObject()) {
|
|
30
|
-
auto value = arg.getObject(runtime);
|
|
31
|
-
if (value.hasProperty(runtime, "buffer")) {
|
|
32
|
-
auto prop = value.getProperty(runtime, "buffer");
|
|
33
|
-
result->buffer = JSIConverter<std::shared_ptr<GPUBuffer>>::fromJSI(
|
|
34
|
-
runtime, prop, false);
|
|
35
|
-
}
|
|
36
|
-
if (value.hasProperty(runtime, "offset")) {
|
|
37
|
-
auto prop = value.getProperty(runtime, "offset");
|
|
38
|
-
result->offset =
|
|
39
|
-
JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
|
|
40
|
-
}
|
|
41
|
-
if (value.hasProperty(runtime, "size")) {
|
|
42
|
-
auto prop = value.getProperty(runtime, "size");
|
|
43
|
-
result->size =
|
|
44
|
-
JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
static jsi::Value toJSI(jsi::Runtime &runtime,
|
|
51
|
-
std::shared_ptr<rnwgpu::GPUBufferBinding> arg) {
|
|
52
|
-
throw std::runtime_error("Invalid GPUBufferBinding::toJSI()");
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
} // namespace rnwgpu
|