@shopify/react-native-skia 2.9.1 → 2.10.1
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 +8 -46
- package/android/build.gradle +33 -0
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
- package/cpp/api/JsiNativeBuffer.h +23 -24
- package/cpp/api/JsiSkAnimatedImage.h +24 -25
- package/cpp/api/JsiSkAnimatedImageFactory.h +18 -17
- package/cpp/api/JsiSkApi.h +254 -96
- package/cpp/api/JsiSkCanvas.h +141 -266
- package/cpp/api/JsiSkColor.h +7 -5
- package/cpp/api/JsiSkColorFilter.h +15 -8
- package/cpp/api/JsiSkColorFilterFactory.h +49 -67
- package/cpp/api/JsiSkContourMeasure.h +31 -38
- package/cpp/api/JsiSkContourMeasureIter.h +20 -23
- package/cpp/api/JsiSkConverters.h +410 -0
- package/cpp/api/JsiSkData.h +13 -7
- package/cpp/api/JsiSkDataFactory.h +27 -32
- package/cpp/api/JsiSkFont.h +123 -192
- package/cpp/api/JsiSkFontMgr.h +33 -26
- package/cpp/api/JsiSkFontMgrFactory.h +12 -11
- package/cpp/api/JsiSkFontStyle.h +14 -12
- package/cpp/api/JsiSkImage.h +90 -79
- package/cpp/api/JsiSkImageFactory.h +93 -95
- package/cpp/api/JsiSkImageFilter.h +21 -11
- package/cpp/api/JsiSkImageFilterFactory.h +375 -629
- package/cpp/api/JsiSkImageInfo.h +25 -25
- package/cpp/api/JsiSkMaskFilter.h +21 -11
- package/cpp/api/JsiSkMaskFilterFactory.h +17 -17
- package/cpp/api/JsiSkMatrix.h +51 -88
- package/cpp/api/JsiSkNativeObjects.h +387 -0
- package/cpp/api/JsiSkPaint.h +104 -142
- package/cpp/api/JsiSkParagraph.h +54 -64
- package/cpp/api/JsiSkParagraphBuilder.h +43 -68
- package/cpp/api/JsiSkParagraphBuilderFactory.h +20 -24
- package/cpp/api/JsiSkPath.h +242 -350
- package/cpp/api/JsiSkPathBuilder.h +153 -273
- package/cpp/api/JsiSkPathBuilderFactory.h +19 -20
- package/cpp/api/JsiSkPathEffect.h +21 -11
- package/cpp/api/JsiSkPathEffectFactory.h +61 -80
- package/cpp/api/JsiSkPathFactory.h +148 -238
- package/cpp/api/JsiSkPicture.h +32 -27
- package/cpp/api/JsiSkPictureFactory.h +21 -26
- package/cpp/api/JsiSkPictureRecorder.h +27 -29
- package/cpp/api/JsiSkPoint.h +20 -23
- package/cpp/api/JsiSkRRect.h +24 -32
- package/cpp/api/JsiSkRSXform.h +31 -48
- package/cpp/api/JsiSkRect.h +40 -50
- package/cpp/api/JsiSkRuntimeEffect.h +85 -92
- package/cpp/api/JsiSkRuntimeEffectFactory.h +14 -18
- package/cpp/api/JsiSkRuntimeShaderBuilder.h +28 -30
- package/cpp/api/JsiSkSVG.h +15 -15
- package/cpp/api/JsiSkSVGFactory.h +17 -20
- package/cpp/api/JsiSkShader.h +15 -8
- package/cpp/api/JsiSkShaderFactory.h +159 -238
- package/cpp/api/JsiSkSkottie.h +131 -143
- package/cpp/api/JsiSkSurface.h +29 -32
- package/cpp/api/JsiSkSurfaceFactory.h +18 -20
- package/cpp/api/JsiSkTextBlob.h +15 -8
- package/cpp/api/JsiSkTextBlobFactory.h +40 -66
- package/cpp/api/JsiSkTypeface.h +25 -22
- package/cpp/api/JsiSkTypefaceFactory.h +17 -15
- package/cpp/api/JsiSkTypefaceFontProvider.h +43 -39
- package/cpp/api/JsiSkTypefaceFontProviderFactory.h +13 -12
- package/cpp/api/JsiSkVertices.h +23 -22
- package/cpp/api/JsiSkiaContext.h +22 -23
- package/cpp/api/JsiSkottieFactory.h +16 -17
- package/cpp/api/JsiVideo.h +43 -81
- package/cpp/api/recorder/Convertor.h +31 -61
- package/cpp/api/recorder/DataTypes.h +8 -16
- package/cpp/api/recorder/JsiRecorder.h +83 -55
- package/cpp/api/recorder/RNRecorder.h +1 -1
- package/cpp/jsi/BoxedNativeObject.h +146 -0
- package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
- package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -31
- package/cpp/{jsi2 → jsi}/NativeObject.h +131 -152
- package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
- package/cpp/jsi/RuntimeAwareCache.h +26 -8
- package/cpp/jsi/ViewProperty.h +5 -11
- package/cpp/rnskia/RNDawnContext.h +18 -2
- package/cpp/rnskia/RNDawnInterop.cpp +19 -0
- package/cpp/rnskia/RNDawnUtils.h +18 -1
- package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
- package/cpp/rnskia/RNSkManager.cpp +9 -168
- package/cpp/rnskia/RNSkPictureView.h +1 -1
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
- package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/mock/index.js +0 -1
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/skia/NativeSetup.js +4 -0
- package/lib/commonjs/skia/NativeSetup.js.map +1 -1
- package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
- package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
- package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
- 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/sksg/Container.native.js +20 -1
- package/lib/commonjs/sksg/Container.native.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/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/module/external/reanimated/renderHelpers.js +29 -0
- package/lib/module/external/reanimated/renderHelpers.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/NativeSetup.js +4 -0
- package/lib/module/skia/NativeSetup.js.map +1 -1
- package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
- package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
- package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
- 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/sksg/Container.native.js +21 -2
- package/lib/module/sksg/Container.native.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/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
- package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
- 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/external/reanimated/renderHelpers.d.ts +15 -0
- 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/SkiaWorkletSerialization.d.ts +1 -0
- 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/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
- 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 +8 -5
- package/react-native-skia.podspec +38 -5
- package/src/external/reanimated/renderHelpers.ts +30 -0
- package/src/mock/index.ts +0 -1
- package/src/skia/NativeSetup.ts +5 -0
- package/src/skia/SkiaWorkletSerialization.ts +67 -0
- 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/sksg/Container.native.ts +40 -2
- 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/api/JsiSkHostObjects.h +0 -257
- package/cpp/jsi/JsiHostObject.cpp +0 -137
- package/cpp/jsi/JsiHostObject.h +0 -385
- package/cpp/rnwgpu/ArrayBuffer.h +0 -117
- package/cpp/rnwgpu/Canvas.h +0 -50
- 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 -240
- 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 -614
- 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 -214
- 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
- /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
- /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
package/cpp/api/JsiSkImage.h
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <memory>
|
|
4
|
+
#include <optional>
|
|
4
5
|
#include <string>
|
|
5
6
|
#include <utility>
|
|
7
|
+
#include <variant>
|
|
6
8
|
|
|
9
|
+
#include "JsiSkConverters.h"
|
|
7
10
|
#include "JsiSkDispatcher.h"
|
|
8
|
-
#include "JsiSkHostObjects.h"
|
|
9
11
|
#include "JsiSkImageInfo.h"
|
|
10
12
|
#include "JsiSkMatrix.h"
|
|
13
|
+
#include "JsiSkNativeObjects.h"
|
|
11
14
|
#include "JsiSkShader.h"
|
|
12
15
|
#include "api/third_party/base64.h"
|
|
13
16
|
|
|
@@ -15,8 +18,8 @@
|
|
|
15
18
|
#include "utils/RNSkTypedArray.h"
|
|
16
19
|
|
|
17
20
|
#if defined(SK_GRAPHITE)
|
|
18
|
-
#include "rnskia/RNDawnContext.h"
|
|
19
21
|
#include "include/gpu/graphite/Context.h"
|
|
22
|
+
#include "rnskia/RNDawnContext.h"
|
|
20
23
|
#else
|
|
21
24
|
#include "include/gpu/ganesh/GrDirectContext.h"
|
|
22
25
|
#endif
|
|
@@ -140,63 +143,50 @@ inline SkSamplingOptions SamplingOptionsFromValue(jsi::Runtime &runtime,
|
|
|
140
143
|
return samplingOptions;
|
|
141
144
|
}
|
|
142
145
|
|
|
143
|
-
class JsiSkImage : public
|
|
146
|
+
class JsiSkImage : public JsiSkWrappingSkPtrNativeObject<JsiSkImage, SkImage> {
|
|
144
147
|
private:
|
|
145
148
|
std::shared_ptr<Dispatcher> _dispatcher;
|
|
146
149
|
|
|
147
150
|
public:
|
|
151
|
+
static constexpr const char *CLASS_NAME = "Image";
|
|
152
|
+
|
|
148
153
|
// TODO-API: Properties?
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return static_cast<double>(getObject()->height());
|
|
152
|
-
}
|
|
154
|
+
double width() { return static_cast<double>(getObject()->width()); }
|
|
155
|
+
double height() { return static_cast<double>(getObject()->height()); }
|
|
153
156
|
|
|
154
|
-
|
|
155
|
-
return JsiSkImageInfo
|
|
156
|
-
|
|
157
|
+
std::shared_ptr<JsiSkImageInfo> getImageInfo() {
|
|
158
|
+
return std::make_shared<JsiSkImageInfo>(getContext(),
|
|
159
|
+
getObject()->imageInfo());
|
|
157
160
|
}
|
|
158
161
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
auto
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
getObject()->makeShader(tmx, tmy, SkSamplingOptions(fm, mm), m);
|
|
169
|
-
auto shaderObj =
|
|
170
|
-
std::make_shared<JsiSkShader>(getContext(), std::move(shader));
|
|
171
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
|
|
172
|
-
getContext());
|
|
162
|
+
std::shared_ptr<JsiSkShader>
|
|
163
|
+
makeShaderOptions(double tmx, double tmy, double fm, double mm,
|
|
164
|
+
std::optional<std::shared_ptr<SkMatrix>> m) {
|
|
165
|
+
auto shader = getObject()->makeShader(
|
|
166
|
+
static_cast<SkTileMode>(tmx), static_cast<SkTileMode>(tmy),
|
|
167
|
+
SkSamplingOptions(static_cast<SkFilterMode>(fm),
|
|
168
|
+
static_cast<SkMipmapMode>(mm)),
|
|
169
|
+
m.has_value() ? m->get() : nullptr);
|
|
170
|
+
return std::make_shared<JsiSkShader>(getContext(), std::move(shader));
|
|
173
171
|
}
|
|
174
172
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
auto
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
auto shader =
|
|
184
|
-
getObject()->makeShader(tmx, tmy, SkSamplingOptions({B, C}), m);
|
|
185
|
-
auto shaderObj =
|
|
186
|
-
std::make_shared<JsiSkShader>(getContext(), std::move(shader));
|
|
187
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
|
|
188
|
-
getContext());
|
|
173
|
+
std::shared_ptr<JsiSkShader>
|
|
174
|
+
makeShaderCubic(double tmx, double tmy, double B, double C,
|
|
175
|
+
std::optional<std::shared_ptr<SkMatrix>> m) {
|
|
176
|
+
auto shader = getObject()->makeShader(
|
|
177
|
+
static_cast<SkTileMode>(tmx), static_cast<SkTileMode>(tmy),
|
|
178
|
+
SkSamplingOptions({SkDoubleToScalar(B), SkDoubleToScalar(C)}),
|
|
179
|
+
m.has_value() ? m->get() : nullptr);
|
|
180
|
+
return std::make_shared<JsiSkShader>(getContext(), std::move(shader));
|
|
189
181
|
}
|
|
190
182
|
|
|
191
|
-
sk_sp<SkData> encodeImageData(
|
|
183
|
+
sk_sp<SkData> encodeImageData(JsiOptional<double> formatParam,
|
|
184
|
+
JsiOptional<double> qualityParam) {
|
|
192
185
|
// Get optional parameters
|
|
193
|
-
auto format =
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
auto quality = (count >= 2 && arguments[1].isNumber())
|
|
198
|
-
? arguments[1].asNumber()
|
|
199
|
-
: 100.0;
|
|
186
|
+
auto format = formatParam.has_value()
|
|
187
|
+
? static_cast<SkEncodedImageFormat>(*formatParam)
|
|
188
|
+
: SkEncodedImageFormat::kPNG;
|
|
189
|
+
auto quality = qualityParam.has_value() ? *qualityParam : 100.0;
|
|
200
190
|
auto image = getObject();
|
|
201
191
|
#if defined(SK_GRAPHITE)
|
|
202
192
|
image = DawnContext::getInstance().MakeRasterImage(image);
|
|
@@ -240,8 +230,17 @@ public:
|
|
|
240
230
|
return data;
|
|
241
231
|
}
|
|
242
232
|
|
|
233
|
+
// Stays raw: constructs a Uint8Array result.
|
|
243
234
|
JSI_HOST_FUNCTION(encodeToBytes) {
|
|
244
|
-
|
|
235
|
+
JsiOptional<double> format =
|
|
236
|
+
count >= 1 && !arguments[0].isUndefined() && !arguments[0].isNull()
|
|
237
|
+
? JsiOptional<double>(arguments[0].asNumber())
|
|
238
|
+
: JsiOptional<double>();
|
|
239
|
+
JsiOptional<double> quality = count >= 2 && arguments[1].isNumber()
|
|
240
|
+
? JsiOptional<double>(
|
|
241
|
+
arguments[1].asNumber())
|
|
242
|
+
: JsiOptional<double>();
|
|
243
|
+
auto data = encodeImageData(format, quality);
|
|
245
244
|
if (!data) {
|
|
246
245
|
return jsi::Value::null();
|
|
247
246
|
}
|
|
@@ -263,17 +262,18 @@ public:
|
|
|
263
262
|
return array;
|
|
264
263
|
}
|
|
265
264
|
|
|
266
|
-
|
|
267
|
-
|
|
265
|
+
std::variant<std::nullptr_t, std::string>
|
|
266
|
+
encodeToBase64(JsiOptional<double> format, JsiOptional<double> quality) {
|
|
267
|
+
auto data = encodeImageData(format, quality);
|
|
268
268
|
if (!data) {
|
|
269
|
-
return
|
|
269
|
+
return nullptr;
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
auto len = Base64::Encode(data->bytes(), data->size(), nullptr);
|
|
273
273
|
auto buffer = std::string(len, 0);
|
|
274
274
|
Base64::Encode(data->bytes(), data->size(),
|
|
275
275
|
reinterpret_cast<void *>(&buffer[0]));
|
|
276
|
-
return
|
|
276
|
+
return buffer;
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
JSI_HOST_FUNCTION(readPixels) {
|
|
@@ -330,24 +330,22 @@ public:
|
|
|
330
330
|
return dest;
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
-
|
|
333
|
+
std::variant<std::nullptr_t, std::shared_ptr<JsiSkImage>>
|
|
334
|
+
makeNonTextureImage() {
|
|
334
335
|
#if defined(SK_GRAPHITE)
|
|
335
336
|
auto rasterImage = DawnContext::getInstance().MakeRasterImage(getObject());
|
|
336
337
|
#else
|
|
337
338
|
auto grContext = getContext()->getDirectContext();
|
|
338
339
|
auto image = getObject();
|
|
339
340
|
if (!grContext) {
|
|
340
|
-
throw
|
|
341
|
+
throw std::runtime_error("No GPU context available.");
|
|
341
342
|
}
|
|
342
343
|
auto rasterImage = image->makeRasterImage(grContext);
|
|
343
344
|
#endif
|
|
344
345
|
if (!rasterImage) {
|
|
345
|
-
return
|
|
346
|
+
return nullptr;
|
|
346
347
|
}
|
|
347
|
-
|
|
348
|
-
std::make_shared<JsiSkImage>(getContext(), std::move(rasterImage));
|
|
349
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
350
|
-
runtime, hostObjectInstance, getContext());
|
|
348
|
+
return std::make_shared<JsiSkImage>(getContext(), std::move(rasterImage));
|
|
351
349
|
}
|
|
352
350
|
|
|
353
351
|
JSI_HOST_FUNCTION(getNativeTextureUnstable) {
|
|
@@ -359,29 +357,44 @@ public:
|
|
|
359
357
|
return JsiTextureInfo::toValue(runtime, texInfo);
|
|
360
358
|
}
|
|
361
359
|
|
|
362
|
-
|
|
363
|
-
|
|
360
|
+
bool isTextureBacked() { return getObject()->isTextureBacked(); }
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
Returns the underlying object from a host object of this type
|
|
364
|
+
*/
|
|
365
|
+
static sk_sp<SkImage> fromValue(jsi::Runtime &runtime,
|
|
366
|
+
const jsi::Value &obj) {
|
|
367
|
+
return objectFromValue(runtime, obj);
|
|
364
368
|
}
|
|
365
369
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
370
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
371
|
+
installCommon(runtime, prototype);
|
|
372
|
+
installMethod(runtime, prototype, "width", &JsiSkImage::width);
|
|
373
|
+
installMethod(runtime, prototype, "height", &JsiSkImage::height);
|
|
374
|
+
installMethod(runtime, prototype, "getImageInfo",
|
|
375
|
+
&JsiSkImage::getImageInfo);
|
|
376
|
+
installMethod(runtime, prototype, "makeShaderOptions",
|
|
377
|
+
&JsiSkImage::makeShaderOptions);
|
|
378
|
+
installMethod(runtime, prototype, "makeShaderCubic",
|
|
379
|
+
&JsiSkImage::makeShaderCubic);
|
|
380
|
+
installHostMethod(runtime, prototype, "encodeToBytes",
|
|
381
|
+
&JsiSkImage::encodeToBytes);
|
|
382
|
+
installMethod(runtime, prototype, "encodeToBase64",
|
|
383
|
+
&JsiSkImage::encodeToBase64);
|
|
384
|
+
installHostMethod(runtime, prototype, "readPixels",
|
|
385
|
+
&JsiSkImage::readPixels);
|
|
386
|
+
installMethod(runtime, prototype, "makeNonTextureImage",
|
|
387
|
+
&JsiSkImage::makeNonTextureImage);
|
|
388
|
+
installHostMethod(runtime, prototype, "getNativeTextureUnstable",
|
|
389
|
+
&JsiSkImage::getNativeTextureUnstable);
|
|
390
|
+
installMethod(runtime, prototype, "isTextureBacked",
|
|
391
|
+
&JsiSkImage::isTextureBacked);
|
|
392
|
+
}
|
|
380
393
|
|
|
381
394
|
JsiSkImage(std::shared_ptr<RNSkPlatformContext> context,
|
|
382
395
|
const sk_sp<SkImage> image)
|
|
383
|
-
:
|
|
384
|
-
|
|
396
|
+
: JsiSkWrappingSkPtrNativeObject<JsiSkImage, SkImage>(std::move(context),
|
|
397
|
+
std::move(image)) {
|
|
385
398
|
// Get the dispatcher for the current thread
|
|
386
399
|
_dispatcher = Dispatcher::getDispatcher();
|
|
387
400
|
// Process any pending operations (e.g. deletions of previous resources)
|
|
@@ -406,7 +419,7 @@ public:
|
|
|
406
419
|
}
|
|
407
420
|
}
|
|
408
421
|
|
|
409
|
-
size_t getMemoryPressure()
|
|
422
|
+
size_t getMemoryPressure() override {
|
|
410
423
|
if (isDisposed()) {
|
|
411
424
|
return 0;
|
|
412
425
|
}
|
|
@@ -420,8 +433,6 @@ public:
|
|
|
420
433
|
}
|
|
421
434
|
return 0;
|
|
422
435
|
}
|
|
423
|
-
|
|
424
|
-
std::string getObjectType() const override { return "JsiSkImage"; }
|
|
425
436
|
};
|
|
426
437
|
|
|
427
438
|
} // namespace RNSkia
|
|
@@ -2,71 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
#include <memory>
|
|
4
4
|
#include <utility>
|
|
5
|
+
#include <variant>
|
|
5
6
|
|
|
6
7
|
#include <jsi/jsi.h>
|
|
7
8
|
|
|
8
|
-
#include "
|
|
9
|
+
#include "JsiSkConverters.h"
|
|
9
10
|
#include "JsiSkData.h"
|
|
10
|
-
#include "JsiSkHostObjects.h"
|
|
11
11
|
#include "JsiSkImage.h"
|
|
12
12
|
#include "JsiSkImageInfo.h"
|
|
13
|
+
#include "JsiSkNativeObjects.h"
|
|
14
|
+
#include "jsi/JsiPromises.h"
|
|
13
15
|
|
|
14
16
|
#ifdef SK_GRAPHITE
|
|
15
17
|
#include "rnskia/RNDawnContext.h"
|
|
16
|
-
#include "rnwgpu/api/GPUTexture.h"
|
|
17
18
|
#endif
|
|
18
19
|
|
|
19
20
|
namespace RNSkia {
|
|
20
21
|
|
|
21
22
|
namespace jsi = facebook::jsi;
|
|
22
23
|
|
|
23
|
-
class JsiSkImageFactory : public
|
|
24
|
+
class JsiSkImageFactory : public JsiSkNativeObject<JsiSkImageFactory> {
|
|
24
25
|
public:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return
|
|
29
|
-
runtime, hostObjectInstance, getContext());
|
|
26
|
+
static constexpr const char *CLASS_NAME = "ImageFactory";
|
|
27
|
+
|
|
28
|
+
std::shared_ptr<JsiSkImage> MakeNull() {
|
|
29
|
+
return std::make_shared<JsiSkImage>(getContext(), nullptr);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
std::variant<std::nullptr_t, std::shared_ptr<JsiSkImage>>
|
|
33
|
+
MakeImageFromEncoded(sk_sp<SkData> data) {
|
|
34
34
|
auto image = SkImages::DeferredFromEncodedData(data);
|
|
35
35
|
if (image == nullptr) {
|
|
36
|
-
return
|
|
36
|
+
return nullptr;
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
40
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
41
|
-
runtime, hostObjectInstance, getContext());
|
|
38
|
+
return std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
jsi::BigInt pointer = arguments[0].asBigInt(runtime);
|
|
46
|
-
const uintptr_t nativeBufferPointer = pointer.asUint64(runtime);
|
|
47
|
-
void *rawPointer = reinterpret_cast<void *>(nativeBufferPointer);
|
|
41
|
+
std::shared_ptr<JsiSkImage> MakeImageFromNativeBuffer(void *rawPointer) {
|
|
48
42
|
auto image = getContext()->makeImageFromNativeBuffer(rawPointer);
|
|
49
43
|
if (image == nullptr) {
|
|
50
44
|
throw std::runtime_error("Failed to convert NativeBuffer to SkImage!");
|
|
51
45
|
}
|
|
52
|
-
|
|
53
|
-
std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
54
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
55
|
-
runtime, hostObjectInstance, getContext());
|
|
46
|
+
return std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
56
47
|
}
|
|
57
48
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
auto bytesPerRow = arguments[2].asNumber();
|
|
49
|
+
std::variant<std::nullptr_t, std::shared_ptr<JsiSkImage>>
|
|
50
|
+
MakeImage(std::shared_ptr<SkImageInfo> imageInfo, sk_sp<SkData> pixelData,
|
|
51
|
+
double bytesPerRow) {
|
|
62
52
|
auto image = SkImages::RasterFromData(*imageInfo, pixelData, bytesPerRow);
|
|
63
53
|
if (image == nullptr) {
|
|
64
|
-
return
|
|
54
|
+
return nullptr;
|
|
65
55
|
}
|
|
66
|
-
|
|
67
|
-
std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
68
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
69
|
-
runtime, hostObjectInstance, getContext());
|
|
56
|
+
return std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
70
57
|
}
|
|
71
58
|
|
|
72
59
|
JSI_HOST_FUNCTION(MakeImageFromViewTag) {
|
|
@@ -88,10 +75,9 @@ public:
|
|
|
88
75
|
promise->reject("Failed to create image from view tag");
|
|
89
76
|
return;
|
|
90
77
|
}
|
|
91
|
-
|
|
92
|
-
std::make_shared<JsiSkImage>(
|
|
93
|
-
|
|
94
|
-
runtime, hostObjectInstance, context));
|
|
78
|
+
promise->resolve(
|
|
79
|
+
makeJsiObject(runtime, std::make_shared<JsiSkImage>(
|
|
80
|
+
context, std::move(result))));
|
|
95
81
|
});
|
|
96
82
|
});
|
|
97
83
|
});
|
|
@@ -105,97 +91,109 @@ public:
|
|
|
105
91
|
if (image == nullptr) {
|
|
106
92
|
throw std::runtime_error("Failed to convert native texture to SkImage!");
|
|
107
93
|
}
|
|
108
|
-
if (count > 4
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
94
|
+
if (count > 4) {
|
|
95
|
+
auto jsiImage = tryGetJsiObject<JsiSkImage>(runtime, arguments[4]);
|
|
96
|
+
if (jsiImage) {
|
|
97
|
+
jsiImage->setObject(image);
|
|
98
|
+
return jsi::Value(runtime, arguments[4]);
|
|
99
|
+
}
|
|
114
100
|
}
|
|
115
|
-
|
|
116
|
-
std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
117
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
118
|
-
runtime, hostObjectInstance, getContext());
|
|
101
|
+
return makeJsiObject(
|
|
102
|
+
runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
|
|
119
103
|
}
|
|
120
104
|
|
|
121
|
-
|
|
105
|
+
// Pointer-based texture interop with react-native-webgpu. The GPUTexture
|
|
106
|
+
// JS objects live in react-native-webgpu, so textures cross the package
|
|
107
|
+
// boundary as raw WGPUTexture pointers (BigInt), exactly like the device
|
|
108
|
+
// handoff (Skia.getNativeDevice / importDevice). Only sound on the shared
|
|
109
|
+
// device: both packages link one Dawn and share one wgpu::Instance.
|
|
110
|
+
|
|
111
|
+
JSI_HOST_FUNCTION(MakeImageFromNativeTexture) {
|
|
122
112
|
#ifdef SK_GRAPHITE
|
|
123
|
-
if (count < 1 || !arguments[0].
|
|
124
|
-
throw std::runtime_error(
|
|
125
|
-
|
|
113
|
+
if (count < 1 || !arguments[0].isBigInt()) {
|
|
114
|
+
throw std::runtime_error("MakeImageFromNativeTexture requires a "
|
|
115
|
+
"WGPUTexture pointer (BigInt), e.g. "
|
|
116
|
+
"texture.nativePointer");
|
|
126
117
|
}
|
|
127
|
-
auto
|
|
128
|
-
|
|
129
|
-
if (
|
|
130
|
-
throw std::runtime_error(
|
|
118
|
+
auto raw = reinterpret_cast<WGPUTexture>(
|
|
119
|
+
arguments[0].asBigInt(runtime).asUint64(runtime));
|
|
120
|
+
if (raw == nullptr) {
|
|
121
|
+
throw std::runtime_error(
|
|
122
|
+
"MakeImageFromNativeTexture: pointer must be non-null");
|
|
131
123
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
124
|
+
// Borrow: AddRef so our wgpu::Texture holds its own reference; the
|
|
125
|
+
// wrapped SkImage retains the texture for its lifetime (see
|
|
126
|
+
// DawnContext::MakeImageFromTexture) and the caller keeps ownership of
|
|
127
|
+
// the JS GPUTexture.
|
|
128
|
+
wgpuTextureAddRef(raw);
|
|
129
|
+
wgpu::Texture texture = wgpu::Texture::Acquire(raw);
|
|
138
130
|
auto &dawnContext = DawnContext::getInstance();
|
|
139
|
-
auto image =
|
|
140
|
-
|
|
131
|
+
auto image = dawnContext.MakeImageFromTexture(
|
|
132
|
+
texture, static_cast<int>(texture.GetWidth()),
|
|
133
|
+
static_cast<int>(texture.GetHeight()), texture.GetFormat());
|
|
141
134
|
if (image == nullptr) {
|
|
142
|
-
throw std::runtime_error(
|
|
135
|
+
throw std::runtime_error(
|
|
136
|
+
"MakeImageFromNativeTexture: failed to wrap the texture");
|
|
143
137
|
}
|
|
144
|
-
|
|
145
|
-
std::make_shared<JsiSkImage>(getContext(), std::move(image));
|
|
146
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
147
|
-
runtime, hostObjectInstance, getContext());
|
|
138
|
+
return makeJsiObject(
|
|
139
|
+
runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
|
|
148
140
|
#else
|
|
149
141
|
throw std::runtime_error(
|
|
150
|
-
"
|
|
151
|
-
"Rebuild with SK_GRAPHITE enabled.");
|
|
142
|
+
"MakeImageFromNativeTexture is only available with the Graphite "
|
|
143
|
+
"backend. Rebuild with SK_GRAPHITE enabled.");
|
|
152
144
|
#endif
|
|
153
145
|
}
|
|
154
146
|
|
|
155
|
-
JSI_HOST_FUNCTION(
|
|
147
|
+
JSI_HOST_FUNCTION(MakeNativeTextureFromImage) {
|
|
156
148
|
#ifdef SK_GRAPHITE
|
|
157
149
|
if (count < 1) {
|
|
158
150
|
throw std::runtime_error(
|
|
159
|
-
"
|
|
151
|
+
"MakeNativeTextureFromImage requires an SkImage argument");
|
|
160
152
|
}
|
|
161
153
|
auto image = JsiSkImage::fromValue(runtime, arguments[0]);
|
|
162
154
|
if (!image) {
|
|
163
155
|
throw std::runtime_error("Invalid SkImage object");
|
|
164
156
|
}
|
|
165
|
-
|
|
166
157
|
auto &dawnContext = DawnContext::getInstance();
|
|
167
158
|
wgpu::Texture texture = dawnContext.MakeTextureFromImage(image);
|
|
168
159
|
if (!texture) {
|
|
169
|
-
throw std::runtime_error(
|
|
160
|
+
throw std::runtime_error(
|
|
161
|
+
"MakeNativeTextureFromImage: failed to create the texture");
|
|
170
162
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
return
|
|
163
|
+
// Transfer ownership: the returned pointer carries one reference and must
|
|
164
|
+
// be adopted exactly once (react-native-webgpu's adoptTexture()), which
|
|
165
|
+
// releases it when the JS GPUTexture is destroyed.
|
|
166
|
+
return jsi::BigInt::fromUint64(
|
|
167
|
+
runtime, reinterpret_cast<uint64_t>(texture.MoveToCHandle()));
|
|
175
168
|
#else
|
|
176
169
|
throw std::runtime_error(
|
|
177
|
-
"
|
|
178
|
-
"Rebuild with SK_GRAPHITE enabled.");
|
|
170
|
+
"MakeNativeTextureFromImage is only available with the Graphite "
|
|
171
|
+
"backend. Rebuild with SK_GRAPHITE enabled.");
|
|
179
172
|
#endif
|
|
180
173
|
}
|
|
181
174
|
|
|
182
|
-
size_t getMemoryPressure()
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
175
|
+
size_t getMemoryPressure() override { return 1024; }
|
|
176
|
+
|
|
177
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
178
|
+
installMethod(runtime, prototype, "MakeImageFromEncoded",
|
|
179
|
+
&JsiSkImageFactory::MakeImageFromEncoded);
|
|
180
|
+
installHostMethod(runtime, prototype, "MakeImageFromViewTag",
|
|
181
|
+
&JsiSkImageFactory::MakeImageFromViewTag);
|
|
182
|
+
installMethod(runtime, prototype, "MakeImageFromNativeBuffer",
|
|
183
|
+
&JsiSkImageFactory::MakeImageFromNativeBuffer);
|
|
184
|
+
installHostMethod(runtime, prototype, "MakeImageFromNativeTextureUnstable",
|
|
185
|
+
&JsiSkImageFactory::MakeImageFromNativeTextureUnstable);
|
|
186
|
+
installMethod(runtime, prototype, "MakeImage",
|
|
187
|
+
&JsiSkImageFactory::MakeImage);
|
|
188
|
+
installMethod(runtime, prototype, "MakeNull", &JsiSkImageFactory::MakeNull);
|
|
189
|
+
installHostMethod(runtime, prototype, "MakeImageFromNativeTexture",
|
|
190
|
+
&JsiSkImageFactory::MakeImageFromNativeTexture);
|
|
191
|
+
installHostMethod(runtime, prototype, "MakeNativeTextureFromImage",
|
|
192
|
+
&JsiSkImageFactory::MakeNativeTextureFromImage);
|
|
193
|
+
}
|
|
196
194
|
|
|
197
195
|
explicit JsiSkImageFactory(std::shared_ptr<RNSkPlatformContext> context)
|
|
198
|
-
:
|
|
196
|
+
: JsiSkNativeObject<JsiSkImageFactory>(std::move(context)) {}
|
|
199
197
|
};
|
|
200
198
|
|
|
201
199
|
} // namespace RNSkia
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
#include <jsi/jsi.h>
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "JsiSkNativeObjects.h"
|
|
9
9
|
|
|
10
10
|
#pragma clang diagnostic push
|
|
11
11
|
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
@@ -18,19 +18,29 @@ namespace RNSkia {
|
|
|
18
18
|
|
|
19
19
|
namespace jsi = facebook::jsi;
|
|
20
20
|
|
|
21
|
-
class JsiSkImageFilter
|
|
21
|
+
class JsiSkImageFilter
|
|
22
|
+
: public JsiSkWrappingSkPtrNativeObject<JsiSkImageFilter, SkImageFilter> {
|
|
22
23
|
public:
|
|
24
|
+
static constexpr const char *CLASS_NAME = "ImageFilter";
|
|
25
|
+
|
|
23
26
|
JsiSkImageFilter(std::shared_ptr<RNSkPlatformContext> context,
|
|
24
27
|
sk_sp<SkImageFilter> imageFilter)
|
|
25
|
-
:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
size_t getMemoryPressure()
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
: JsiSkWrappingSkPtrNativeObject<JsiSkImageFilter, SkImageFilter>(
|
|
29
|
+
std::move(context), std::move(imageFilter)) {}
|
|
30
|
+
|
|
31
|
+
size_t getMemoryPressure() override { return 1024 * 1024; }
|
|
32
|
+
|
|
33
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
34
|
+
installCommon(runtime, prototype);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
Returns the underlying object from a host object of this type
|
|
39
|
+
*/
|
|
40
|
+
static sk_sp<SkImageFilter> fromValue(jsi::Runtime &runtime,
|
|
41
|
+
const jsi::Value &obj) {
|
|
42
|
+
return objectFromValue(runtime, obj);
|
|
43
|
+
}
|
|
34
44
|
};
|
|
35
45
|
|
|
36
46
|
} // namespace RNSkia
|