react-native-webgpu 0.5.11
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/LICENSE +20 -0
- package/README.md +319 -0
- package/android/CMakeLists.txt +108 -0
- package/android/build.gradle +138 -0
- package/android/cpp/AndroidPlatformContext.h +207 -0
- package/android/cpp/cpp-adapter.cpp +71 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/com/webgpu/WebGPUAHBView.java +298 -0
- package/android/src/main/java/com/webgpu/WebGPUAPI.java +20 -0
- package/android/src/main/java/com/webgpu/WebGPUBaseView.java +61 -0
- package/android/src/main/java/com/webgpu/WebGPUModule.java +50 -0
- package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +41 -0
- package/android/src/main/java/com/webgpu/WebGPUSurfaceViewWithSC.java +79 -0
- package/android/src/main/java/com/webgpu/WebGPUTextureView.java +46 -0
- package/android/src/main/java/com/webgpu/WebGPUView.java +108 -0
- package/android/src/main/java/com/webgpu/WebGPUViewManager.java +38 -0
- package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +50 -0
- package/android/src/newarch/com/webgpu/WebGPUViewManagerSpec.java +24 -0
- package/apple/ApplePlatformContext.h +31 -0
- package/apple/ApplePlatformContext.mm +157 -0
- package/apple/MetalView.h +13 -0
- package/apple/MetalView.mm +50 -0
- package/apple/RNWGUIKit.h +16 -0
- package/apple/WebGPUModule.h +13 -0
- package/apple/WebGPUModule.mm +89 -0
- package/apple/WebGPUView.h +12 -0
- package/apple/WebGPUView.mm +66 -0
- package/cpp/WGPULogger.h +100 -0
- package/cpp/dawn_logging.cpp +119 -0
- package/cpp/jsi/EnumMapper.h +45 -0
- package/cpp/jsi/JSIConverter.h +473 -0
- package/cpp/jsi/NativeObject.h +607 -0
- package/cpp/jsi/Promise.cpp +44 -0
- package/cpp/jsi/Promise.h +35 -0
- package/cpp/jsi/RuntimeAwareCache.cpp +7 -0
- package/cpp/jsi/RuntimeAwareCache.h +100 -0
- package/cpp/jsi/RuntimeLifecycleMonitor.cpp +72 -0
- package/cpp/jsi/RuntimeLifecycleMonitor.h +32 -0
- package/cpp/rnwgpu/ArrayBuffer.h +73 -0
- package/cpp/rnwgpu/PlatformContext.h +46 -0
- package/cpp/rnwgpu/RNWebGPUManager.cpp +225 -0
- package/cpp/rnwgpu/RNWebGPUManager.h +46 -0
- package/cpp/rnwgpu/SurfaceRegistry.h +230 -0
- package/cpp/rnwgpu/api/Canvas.h +57 -0
- package/cpp/rnwgpu/api/Convertors.h +761 -0
- package/cpp/rnwgpu/api/External.h +12 -0
- package/cpp/rnwgpu/api/GPU.cpp +127 -0
- package/cpp/rnwgpu/api/GPU.h +58 -0
- package/cpp/rnwgpu/api/GPUAdapter.cpp +191 -0
- package/cpp/rnwgpu/api/GPUAdapter.h +59 -0
- package/cpp/rnwgpu/api/GPUAdapterInfo.h +57 -0
- package/cpp/rnwgpu/api/GPUBindGroup.cpp +3 -0
- package/cpp/rnwgpu/api/GPUBindGroup.h +51 -0
- package/cpp/rnwgpu/api/GPUBindGroupLayout.h +52 -0
- package/cpp/rnwgpu/api/GPUBuffer.cpp +97 -0
- package/cpp/rnwgpu/api/GPUBuffer.h +87 -0
- package/cpp/rnwgpu/api/GPUCanvasContext.cpp +67 -0
- package/cpp/rnwgpu/api/GPUCanvasContext.h +66 -0
- package/cpp/rnwgpu/api/GPUCommandBuffer.h +45 -0
- package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +179 -0
- package/cpp/rnwgpu/api/GPUCommandEncoder.h +111 -0
- package/cpp/rnwgpu/api/GPUCompilationInfo.h +79 -0
- package/cpp/rnwgpu/api/GPUCompilationMessage.h +36 -0
- package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +60 -0
- package/cpp/rnwgpu/api/GPUComputePassEncoder.h +85 -0
- package/cpp/rnwgpu/api/GPUComputePipeline.cpp +12 -0
- package/cpp/rnwgpu/api/GPUComputePipeline.h +60 -0
- package/cpp/rnwgpu/api/GPUDevice.cpp +492 -0
- package/cpp/rnwgpu/api/GPUDevice.h +259 -0
- package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +7 -0
- package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +40 -0
- package/cpp/rnwgpu/api/GPUError.h +35 -0
- package/cpp/rnwgpu/api/GPUExtent3D.h +66 -0
- package/cpp/rnwgpu/api/GPUExternalTexture.h +45 -0
- package/cpp/rnwgpu/api/GPUFeatures.h +203 -0
- package/cpp/rnwgpu/api/GPUInternalError.h +31 -0
- package/cpp/rnwgpu/api/GPUOrigin2D.h +55 -0
- package/cpp/rnwgpu/api/GPUOrigin3D.h +62 -0
- package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +33 -0
- package/cpp/rnwgpu/api/GPUPipelineLayout.h +45 -0
- package/cpp/rnwgpu/api/GPUQuerySet.cpp +11 -0
- package/cpp/rnwgpu/api/GPUQuerySet.h +73 -0
- package/cpp/rnwgpu/api/GPUQueue.cpp +169 -0
- package/cpp/rnwgpu/api/GPUQueue.h +81 -0
- package/cpp/rnwgpu/api/GPURenderBundle.h +44 -0
- package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +131 -0
- package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +110 -0
- package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +165 -0
- package/cpp/rnwgpu/api/GPURenderPassEncoder.h +130 -0
- package/cpp/rnwgpu/api/GPURenderPipeline.cpp +13 -0
- package/cpp/rnwgpu/api/GPURenderPipeline.h +61 -0
- package/cpp/rnwgpu/api/GPUSampler.h +44 -0
- package/cpp/rnwgpu/api/GPUShaderModule.cpp +51 -0
- package/cpp/rnwgpu/api/GPUShaderModule.h +66 -0
- package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +129 -0
- package/cpp/rnwgpu/api/GPUSupportedLimits.h +131 -0
- package/cpp/rnwgpu/api/GPUTexture.cpp +47 -0
- package/cpp/rnwgpu/api/GPUTexture.h +162 -0
- package/cpp/rnwgpu/api/GPUTextureView.h +44 -0
- package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +71 -0
- package/cpp/rnwgpu/api/GPUValidationError.h +32 -0
- package/cpp/rnwgpu/api/ImageBitmap.h +40 -0
- package/cpp/rnwgpu/api/RNWebGPU.h +199 -0
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +65 -0
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +78 -0
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +57 -0
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +98 -0
- package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +58 -0
- package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +53 -0
- package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +57 -0
- package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +57 -0
- package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +60 -0
- package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +39 -0
- package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +76 -0
- package/cpp/rnwgpu/api/descriptors/GPUColor.h +67 -0
- package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +59 -0
- package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +29 -0
- package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +46 -0
- package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +46 -0
- package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +57 -0
- package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +59 -0
- package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +68 -0
- package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +104 -0
- package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +100 -0
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +39 -0
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +80 -0
- package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +74 -0
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +63 -0
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +63 -0
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +66 -0
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +82 -0
- package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +55 -0
- package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +22 -0
- package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +55 -0
- package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +58 -0
- package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +70 -0
- package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +62 -0
- package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +56 -0
- package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +44 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +46 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +81 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +82 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +102 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +93 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +59 -0
- package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +104 -0
- package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +52 -0
- package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +46 -0
- package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +111 -0
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +61 -0
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +63 -0
- package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +25 -0
- package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +65 -0
- package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +60 -0
- package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +60 -0
- package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +92 -0
- package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +29 -0
- package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +92 -0
- package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +65 -0
- package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +54 -0
- package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +63 -0
- package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +74 -0
- package/cpp/rnwgpu/api/descriptors/Unions.h +1969 -0
- package/cpp/rnwgpu/async/AsyncDispatcher.h +28 -0
- package/cpp/rnwgpu/async/AsyncRunner.cpp +215 -0
- package/cpp/rnwgpu/async/AsyncRunner.h +53 -0
- package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +181 -0
- package/cpp/rnwgpu/async/AsyncTaskHandle.h +55 -0
- package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +23 -0
- package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +22 -0
- package/cpp/webgpu/webgpu.h +4918 -0
- package/cpp/webgpu/webgpu_cpp.h +10294 -0
- package/cpp/webgpu/webgpu_cpp_chained_struct.h +57 -0
- package/cpp/webgpu/webgpu_cpp_print.h +2755 -0
- package/cpp/webgpu/webgpu_enum_class_bitmasks.h +161 -0
- package/lib/commonjs/Canvas.js +55 -0
- package/lib/commonjs/Canvas.js.map +1 -0
- package/lib/commonjs/NativeWebGPUModule.js +10 -0
- package/lib/commonjs/NativeWebGPUModule.js.map +1 -0
- package/lib/commonjs/Offscreen.js +103 -0
- package/lib/commonjs/Offscreen.js.map +1 -0
- package/lib/commonjs/WebGPUViewNativeComponent.js +10 -0
- package/lib/commonjs/WebGPUViewNativeComponent.js.map +1 -0
- package/lib/commonjs/WebGPUViewNativeComponent.web.js +103 -0
- package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +1 -0
- package/lib/commonjs/WebPolyfillGPUModule.js +40 -0
- package/lib/commonjs/WebPolyfillGPUModule.js.map +1 -0
- package/lib/commonjs/external/ModuleProxy.js +36 -0
- package/lib/commonjs/external/ModuleProxy.js.map +1 -0
- package/lib/commonjs/external/index.js +17 -0
- package/lib/commonjs/external/index.js.map +1 -0
- package/lib/commonjs/external/reanimated/ReanimatedProxy.js +18 -0
- package/lib/commonjs/external/reanimated/ReanimatedProxy.js.map +1 -0
- package/lib/commonjs/external/reanimated/index.js +21 -0
- package/lib/commonjs/external/reanimated/index.js.map +1 -0
- package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +49 -0
- package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +1 -0
- package/lib/commonjs/hooks.js +83 -0
- package/lib/commonjs/hooks.js.map +1 -0
- package/lib/commonjs/index.js +17 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/main/index.js +91 -0
- package/lib/commonjs/main/index.js.map +1 -0
- package/lib/commonjs/main/index.web.js +51 -0
- package/lib/commonjs/main/index.web.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils.js +11 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/module/Canvas.js +46 -0
- package/lib/module/Canvas.js.map +1 -0
- package/lib/module/NativeWebGPUModule.js +4 -0
- package/lib/module/NativeWebGPUModule.js.map +1 -0
- package/lib/module/Offscreen.js +96 -0
- package/lib/module/Offscreen.js.map +1 -0
- package/lib/module/WebGPUViewNativeComponent.js +4 -0
- package/lib/module/WebGPUViewNativeComponent.js.map +1 -0
- package/lib/module/WebGPUViewNativeComponent.web.js +96 -0
- package/lib/module/WebGPUViewNativeComponent.web.js.map +1 -0
- package/lib/module/WebPolyfillGPUModule.js +38 -0
- package/lib/module/WebPolyfillGPUModule.js.map +1 -0
- package/lib/module/external/ModuleProxy.js +28 -0
- package/lib/module/external/ModuleProxy.js.map +1 -0
- package/lib/module/external/index.js +2 -0
- package/lib/module/external/index.js.map +1 -0
- package/lib/module/external/reanimated/ReanimatedProxy.js +12 -0
- package/lib/module/external/reanimated/ReanimatedProxy.js.map +1 -0
- package/lib/module/external/reanimated/index.js +3 -0
- package/lib/module/external/reanimated/index.js.map +1 -0
- package/lib/module/external/reanimated/registerWebGPUForReanimated.js +42 -0
- package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +1 -0
- package/lib/module/hooks.js +70 -0
- package/lib/module/hooks.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/main/index.js +33 -0
- package/lib/module/main/index.js.map +1 -0
- package/lib/module/main/index.web.js +8 -0
- package/lib/module/main/index.web.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils.js +5 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/babel.config.d.ts +3 -0
- package/lib/typescript/babel.config.d.ts.map +1 -0
- package/lib/typescript/eslint.config.d.mts +3 -0
- package/lib/typescript/eslint.config.d.mts.map +1 -0
- package/lib/typescript/jest.config.d.ts +9 -0
- package/lib/typescript/jest.config.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/Canvas.d.ts +7 -0
- package/lib/typescript/lib/commonjs/Canvas.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts +5 -0
- package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/Offscreen.d.ts +26 -0
- package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +5 -0
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts +4 -0
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts +2 -0
- package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts +12 -0
- package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/external/index.d.ts +2 -0
- package/lib/typescript/lib/commonjs/external/index.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts +6 -0
- package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts +4 -0
- package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts +9 -0
- package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/hooks.d.ts +18 -0
- package/lib/typescript/lib/commonjs/hooks.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/index.d.ts +2 -0
- package/lib/typescript/lib/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/main/index.d.ts +3 -0
- package/lib/typescript/lib/commonjs/main/index.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/main/index.web.d.ts +2 -0
- package/lib/typescript/lib/commonjs/main/index.web.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/types.d.ts +1 -0
- package/lib/typescript/lib/commonjs/types.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/utils.d.ts +3 -0
- package/lib/typescript/lib/commonjs/utils.d.ts.map +1 -0
- package/lib/typescript/lib/module/Canvas.d.ts +8 -0
- package/lib/typescript/lib/module/Canvas.d.ts.map +1 -0
- package/lib/typescript/lib/module/NativeWebGPUModule.d.ts +3 -0
- package/lib/typescript/lib/module/NativeWebGPUModule.d.ts.map +1 -0
- package/lib/typescript/lib/module/Offscreen.d.ts +25 -0
- package/lib/typescript/lib/module/Offscreen.d.ts.map +1 -0
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +3 -0
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts +3 -0
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +1 -0
- package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts +2 -0
- package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts.map +1 -0
- package/lib/typescript/lib/module/external/ModuleProxy.d.ts +7 -0
- package/lib/typescript/lib/module/external/ModuleProxy.d.ts.map +1 -0
- package/lib/typescript/lib/module/external/index.d.ts +2 -0
- package/lib/typescript/lib/module/external/index.d.ts.map +1 -0
- package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts +5 -0
- package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
- package/lib/typescript/lib/module/external/reanimated/index.d.ts +3 -0
- package/lib/typescript/lib/module/external/reanimated/index.d.ts.map +1 -0
- package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts +2 -0
- package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
- package/lib/typescript/lib/module/hooks.d.ts +18 -0
- package/lib/typescript/lib/module/hooks.d.ts.map +1 -0
- package/lib/typescript/lib/module/index.d.ts +2 -0
- package/lib/typescript/lib/module/index.d.ts.map +1 -0
- package/lib/typescript/lib/module/main/index.d.ts +6 -0
- package/lib/typescript/lib/module/main/index.d.ts.map +1 -0
- package/lib/typescript/lib/module/main/index.web.d.ts +5 -0
- package/lib/typescript/lib/module/main/index.web.d.ts.map +1 -0
- package/lib/typescript/lib/module/types.d.ts +1 -0
- package/lib/typescript/lib/module/types.d.ts.map +1 -0
- package/lib/typescript/lib/module/utils.d.ts +2 -0
- package/lib/typescript/lib/module/utils.d.ts.map +1 -0
- package/lib/typescript/src/Canvas.d.ts +35 -0
- package/lib/typescript/src/Canvas.d.ts.map +1 -0
- package/lib/typescript/src/NativeWebGPUModule.d.ts +7 -0
- package/lib/typescript/src/NativeWebGPUModule.d.ts.map +1 -0
- package/lib/typescript/src/Offscreen.d.ts +30 -0
- package/lib/typescript/src/Offscreen.d.ts.map +1 -0
- package/lib/typescript/src/WebGPUViewNativeComponent.d.ts +9 -0
- package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +9 -0
- package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +1 -0
- package/lib/typescript/src/WebPolyfillGPUModule.d.ts +2 -0
- package/lib/typescript/src/WebPolyfillGPUModule.d.ts.map +1 -0
- package/lib/typescript/src/external/ModuleProxy.d.ts +11 -0
- package/lib/typescript/src/external/ModuleProxy.d.ts.map +1 -0
- package/lib/typescript/src/external/index.d.ts +2 -0
- package/lib/typescript/src/external/index.d.ts.map +1 -0
- package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts +4 -0
- package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
- package/lib/typescript/src/external/reanimated/index.d.ts +3 -0
- package/lib/typescript/src/external/reanimated/index.d.ts.map +1 -0
- package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts +8 -0
- package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
- package/lib/typescript/src/hooks.d.ts +27 -0
- package/lib/typescript/src/hooks.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +18 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/main/index.d.ts +6 -0
- package/lib/typescript/src/main/index.d.ts.map +1 -0
- package/lib/typescript/src/main/index.web.d.ts +6 -0
- package/lib/typescript/src/main/index.web.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +19 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils.d.ts +2 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
- package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
- package/libs/android/x86/libwebgpu_dawn.so +0 -0
- package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
- package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +59 -0
- package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
- package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
- package/libs/apple/libwebgpu_dawn.xcframework/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
- package/package.json +139 -0
- package/react-native-wgpu.podspec +47 -0
- package/src/Canvas.tsx +91 -0
- package/src/NativeWebGPUModule.ts +9 -0
- package/src/Offscreen.ts +113 -0
- package/src/WebGPUViewNativeComponent.ts +11 -0
- package/src/WebGPUViewNativeComponent.web.ts +113 -0
- package/src/WebPolyfillGPUModule.ts +53 -0
- package/src/external/ModuleProxy.ts +30 -0
- package/src/external/index.ts +1 -0
- package/src/external/reanimated/ReanimatedProxy.ts +19 -0
- package/src/external/reanimated/index.ts +2 -0
- package/src/external/reanimated/registerWebGPUForReanimated.ts +43 -0
- package/src/hooks.tsx +93 -0
- package/src/index.tsx +31 -0
- package/src/main/index.tsx +40 -0
- package/src/main/index.web.tsx +8 -0
- package/src/types.ts +20 -0
- package/src/utils.ts +4 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#ifndef PACKAGES_WEBGPU_APPLE_RNWGUIKIT_H_
|
|
2
|
+
#define PACKAGES_WEBGPU_APPLE_RNWGUIKIT_H_
|
|
3
|
+
|
|
4
|
+
#if !TARGET_OS_OSX
|
|
5
|
+
#import <UIKit/UIKit.h>
|
|
6
|
+
#else
|
|
7
|
+
#import <Appkit/Appkit.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
#if !TARGET_OS_OSX
|
|
11
|
+
typedef UIView RNWGPlatformView;
|
|
12
|
+
#else
|
|
13
|
+
typedef NSView RNWGPlatformView;
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
#endif // PACKAGES_WEBGPU_APPLE_RNWGUIKIT_H_
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import "RNWebGPUManager.h"
|
|
4
|
+
#import <RNWgpuViewSpec/RNWgpuViewSpec.h>
|
|
5
|
+
#import <React/RCTCallInvokerModule.h>
|
|
6
|
+
#import <React/RCTEventEmitter.h>
|
|
7
|
+
|
|
8
|
+
@interface WebGPUModule
|
|
9
|
+
: RCTEventEmitter <NativeWebGPUModuleSpec, RCTCallInvokerModule>
|
|
10
|
+
|
|
11
|
+
+ (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager;
|
|
12
|
+
|
|
13
|
+
@end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#import "WebGPUModule.h"
|
|
2
|
+
#include "ApplePlatformContext.h"
|
|
3
|
+
#import "GPUCanvasContext.h"
|
|
4
|
+
|
|
5
|
+
#import <React/RCTBridge+Private.h>
|
|
6
|
+
#import <React/RCTCallInvoker.h>
|
|
7
|
+
#import <React/RCTLog.h>
|
|
8
|
+
#import <ReactCommon/RCTTurboModule.h>
|
|
9
|
+
#import <jsi/jsi.h>
|
|
10
|
+
#import <memory>
|
|
11
|
+
|
|
12
|
+
namespace jsi = facebook::jsi;
|
|
13
|
+
namespace react = facebook::react;
|
|
14
|
+
|
|
15
|
+
// Category to declare the runtime property on RCTBridge/RCTBridgeProxy.
|
|
16
|
+
// In Bridgeless mode, self.bridge is an RCTBridgeProxy which implements
|
|
17
|
+
// -(void *)runtime. In Legacy mode, self.bridge is the real RCTBridge
|
|
18
|
+
// (backed by RCTCxxBridge) which also implements it.
|
|
19
|
+
@interface RCTBridge (JSIRuntime)
|
|
20
|
+
- (void *)runtime;
|
|
21
|
+
@end
|
|
22
|
+
|
|
23
|
+
@implementation WebGPUModule
|
|
24
|
+
|
|
25
|
+
RCT_EXPORT_MODULE(WebGPUModule)
|
|
26
|
+
|
|
27
|
+
static std::shared_ptr<rnwgpu::RNWebGPUManager> webgpuManager;
|
|
28
|
+
|
|
29
|
+
// Synthesize callInvoker so RCTTurboModuleManager injects the JS CallInvoker.
|
|
30
|
+
// When the module conforms to RCTCallInvokerModule, the TurboModule infra
|
|
31
|
+
// calls setCallInvoker: during module initialization.
|
|
32
|
+
@synthesize callInvoker = _callInvoker;
|
|
33
|
+
|
|
34
|
+
+ (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager {
|
|
35
|
+
return webgpuManager;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#pragma Setup and invalidation
|
|
39
|
+
|
|
40
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
41
|
+
return YES;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void)invalidate {
|
|
45
|
+
webgpuManager = nil;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
- (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager {
|
|
49
|
+
return webgpuManager;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) {
|
|
53
|
+
if (webgpuManager != nil) {
|
|
54
|
+
// Already initialized, ignore call.
|
|
55
|
+
return @true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// self.bridge works in both Legacy (RCTBridge) and Bridgeless
|
|
59
|
+
// (RCTBridgeProxy).
|
|
60
|
+
jsi::Runtime *runtime = (jsi::Runtime *)self.bridge.runtime;
|
|
61
|
+
if (!runtime) {
|
|
62
|
+
NSLog(@"Failed to install react-native-wgpu: jsi::Runtime* was null! "
|
|
63
|
+
@"(self.bridge=%@)",
|
|
64
|
+
self.bridge);
|
|
65
|
+
return [NSNumber numberWithBool:NO];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// _callInvoker is injected by RCTTurboModuleManager because we conform to
|
|
69
|
+
// RCTCallInvokerModule. Works in both Legacy and Bridgeless.
|
|
70
|
+
std::shared_ptr<react::CallInvoker> jsInvoker = _callInvoker.callInvoker;
|
|
71
|
+
if (!jsInvoker) {
|
|
72
|
+
NSLog(@"Failed to install react-native-wgpu: react::CallInvoker was "
|
|
73
|
+
@"null!");
|
|
74
|
+
return [NSNumber numberWithBool:NO];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
std::shared_ptr<rnwgpu::PlatformContext> platformContext =
|
|
78
|
+
std::make_shared<rnwgpu::ApplePlatformContext>();
|
|
79
|
+
webgpuManager = std::make_shared<rnwgpu::RNWebGPUManager>(runtime, jsInvoker,
|
|
80
|
+
platformContext);
|
|
81
|
+
return @true;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
85
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
86
|
+
return std::make_shared<facebook::react::NativeWebGPUModuleSpecJSI>(params);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#import "WebGPUView.h"
|
|
2
|
+
|
|
3
|
+
#import <react/renderer/components/RNWgpuViewSpec/ComponentDescriptors.h>
|
|
4
|
+
#import <react/renderer/components/RNWgpuViewSpec/EventEmitters.h>
|
|
5
|
+
#import <react/renderer/components/RNWgpuViewSpec/Props.h>
|
|
6
|
+
#import <react/renderer/components/RNWgpuViewSpec/RCTComponentViewHelpers.h>
|
|
7
|
+
|
|
8
|
+
#import "MetalView.h"
|
|
9
|
+
#import "RCTFabricComponentsPlugins.h"
|
|
10
|
+
#import "Utils.h"
|
|
11
|
+
|
|
12
|
+
using namespace facebook::react;
|
|
13
|
+
|
|
14
|
+
@implementation WebGPUView
|
|
15
|
+
|
|
16
|
+
+ (ComponentDescriptorProvider)componentDescriptorProvider {
|
|
17
|
+
return concreteComponentDescriptorProvider<WebGPUViewComponentDescriptor>();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
- (void)prepareForRecycle {
|
|
21
|
+
[super prepareForRecycle];
|
|
22
|
+
/*
|
|
23
|
+
It's important to destroy the Metal Layer before releasing a view
|
|
24
|
+
to the recycled pool to prevent displaying outdated content from
|
|
25
|
+
the last usage in the new context.
|
|
26
|
+
*/
|
|
27
|
+
self.contentView = nil;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
- (MetalView *)getContentView {
|
|
31
|
+
if (!self.contentView) {
|
|
32
|
+
self.contentView = [MetalView new];
|
|
33
|
+
}
|
|
34
|
+
return (MetalView *)self.contentView;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
- (void)updateProps:(const Props::Shared &)props
|
|
38
|
+
oldProps:(const Props::Shared &)oldProps {
|
|
39
|
+
const auto &oldViewProps =
|
|
40
|
+
*std::static_pointer_cast<const WebGPUViewProps>(_props);
|
|
41
|
+
const auto &newViewProps =
|
|
42
|
+
*std::static_pointer_cast<const WebGPUViewProps>(props);
|
|
43
|
+
|
|
44
|
+
if (newViewProps.contextId != oldViewProps.contextId) {
|
|
45
|
+
/*
|
|
46
|
+
The context is set only once during mounting the component
|
|
47
|
+
and never changes because it isn't available for users to modify.
|
|
48
|
+
*/
|
|
49
|
+
MetalView *metalView = [MetalView new];
|
|
50
|
+
self.contentView = metalView;
|
|
51
|
+
[metalView setContextId:@(newViewProps.contextId)];
|
|
52
|
+
[metalView configure];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
[super updateProps:props oldProps:oldProps];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
- (void)updateLayoutMetrics:(const LayoutMetrics &)layoutMetrics
|
|
59
|
+
oldLayoutMetrics:(const LayoutMetrics &)oldLayoutMetrics {
|
|
60
|
+
[super updateLayoutMetrics:layoutMetrics oldLayoutMetrics:oldLayoutMetrics];
|
|
61
|
+
[(MetalView *)self.contentView update];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
Class<RCTComponentViewProtocol> WebGPUViewCls(void) { return WebGPUView.class; }
|
|
65
|
+
|
|
66
|
+
@end
|
package/cpp/WGPULogger.h
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Christian Falch on 26/08/2021.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include <cstdio>
|
|
8
|
+
#include <jsi/jsi.h>
|
|
9
|
+
#include <string>
|
|
10
|
+
|
|
11
|
+
#if defined(ANDROID) || defined(__ANDROID__)
|
|
12
|
+
#include <android/log.h>
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
#ifdef __APPLE__
|
|
16
|
+
#include <syslog.h>
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
namespace rnwgpu {
|
|
20
|
+
|
|
21
|
+
namespace jsi = facebook::jsi;
|
|
22
|
+
|
|
23
|
+
class Logger {
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Logs message to console
|
|
27
|
+
* @param message Message to be written out
|
|
28
|
+
*/
|
|
29
|
+
static void logToConsole(std::string message) {
|
|
30
|
+
#ifdef DEBUG
|
|
31
|
+
#if defined(ANDROID) || defined(__ANDROID__)
|
|
32
|
+
__android_log_write(ANDROID_LOG_INFO, "WebGPU", message.c_str());
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
#ifdef __APPLE__
|
|
36
|
+
syslog(LOG_ERR, "%s\n", message.c_str());
|
|
37
|
+
#endif
|
|
38
|
+
#else
|
|
39
|
+
// In release mode, do nothing
|
|
40
|
+
(void)message;
|
|
41
|
+
#endif
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Logs to console
|
|
46
|
+
* @param fmt Format string
|
|
47
|
+
* @param ... Arguments to format string
|
|
48
|
+
*/
|
|
49
|
+
static void logToConsole(const char *fmt, ...) {
|
|
50
|
+
#ifdef DEBUG
|
|
51
|
+
va_list args;
|
|
52
|
+
va_start(args, fmt);
|
|
53
|
+
|
|
54
|
+
static char buffer[512];
|
|
55
|
+
vsnprintf(buffer, sizeof(buffer), fmt, args);
|
|
56
|
+
#if defined(ANDROID) || defined(__ANDROID__)
|
|
57
|
+
__android_log_write(ANDROID_LOG_INFO, "WebGPU", buffer);
|
|
58
|
+
#endif
|
|
59
|
+
#ifdef __APPLE__
|
|
60
|
+
syslog(LOG_ERR, "WebGPU: %s\n", buffer);
|
|
61
|
+
#endif
|
|
62
|
+
va_end(args);
|
|
63
|
+
#else
|
|
64
|
+
// In release mode, do nothing
|
|
65
|
+
(void)fmt;
|
|
66
|
+
#endif
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static void logToJavascriptConsole(jsi::Runtime &runtime,
|
|
70
|
+
const std::string &message) {
|
|
71
|
+
auto console = Logger::getJavascriptConsole(runtime).asObject(runtime);
|
|
72
|
+
auto log = console.getPropertyAsFunction(runtime, "log");
|
|
73
|
+
log.call(runtime, jsi::String::createFromUtf8(runtime, message));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static void warnToJavascriptConsole(jsi::Runtime &runtime,
|
|
77
|
+
const std::string &message) {
|
|
78
|
+
auto console = Logger::getJavascriptConsole(runtime).asObject(runtime);
|
|
79
|
+
auto warn = console.getPropertyAsFunction(runtime, "warn");
|
|
80
|
+
warn.call(runtime, jsi::String::createFromUtf8(runtime, message));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static void errorToJavascriptConsole(jsi::Runtime &runtime,
|
|
84
|
+
const std::string &message) {
|
|
85
|
+
auto console = Logger::getJavascriptConsole(runtime).asObject(runtime);
|
|
86
|
+
auto warn = console.getPropertyAsFunction(runtime, "error");
|
|
87
|
+
warn.call(runtime, jsi::String::createFromUtf8(runtime, message));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private:
|
|
91
|
+
static jsi::Value getJavascriptConsole(jsi::Runtime &runtime) {
|
|
92
|
+
auto console = runtime.global().getProperty(runtime, "console");
|
|
93
|
+
if (console.isUndefined() || console.isNull()) {
|
|
94
|
+
throw jsi::JSError(runtime, "Could not find console object.");
|
|
95
|
+
return jsi::Value::undefined();
|
|
96
|
+
}
|
|
97
|
+
return console;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
} // namespace rnwgpu
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#include <cstdio>
|
|
2
|
+
#include <sstream>
|
|
3
|
+
#include <string>
|
|
4
|
+
#include <utility>
|
|
5
|
+
|
|
6
|
+
#ifdef __ANDROID__
|
|
7
|
+
#include <android/log.h>
|
|
8
|
+
#elif defined(__APPLE__)
|
|
9
|
+
#include <os/log.h>
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
namespace dawn {
|
|
13
|
+
|
|
14
|
+
enum class LogSeverity {
|
|
15
|
+
Debug,
|
|
16
|
+
Info,
|
|
17
|
+
Warning,
|
|
18
|
+
Error,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// Forward declare to match Dawn's exact interface
|
|
22
|
+
class LogMessage {
|
|
23
|
+
public:
|
|
24
|
+
explicit LogMessage(LogSeverity severity);
|
|
25
|
+
~LogMessage();
|
|
26
|
+
LogMessage(LogMessage&& other);
|
|
27
|
+
LogMessage& operator=(LogMessage&& other);
|
|
28
|
+
template <typename T>
|
|
29
|
+
LogMessage& operator<<(T&& value) {
|
|
30
|
+
mStream << value;
|
|
31
|
+
return *this;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private:
|
|
35
|
+
LogMessage(const LogMessage& other) = delete;
|
|
36
|
+
LogMessage& operator=(const LogMessage& other) = delete;
|
|
37
|
+
LogSeverity mSeverity;
|
|
38
|
+
std::ostringstream mStream;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// Implementation of LogMessage methods
|
|
42
|
+
LogMessage::LogMessage(LogSeverity severity) : mSeverity(severity) {}
|
|
43
|
+
|
|
44
|
+
LogMessage::LogMessage(LogMessage&& other)
|
|
45
|
+
: mSeverity(other.mSeverity), mStream(std::move(other.mStream)) {}
|
|
46
|
+
|
|
47
|
+
LogMessage& LogMessage::operator=(LogMessage&& other) {
|
|
48
|
+
if (this != &other) {
|
|
49
|
+
mSeverity = other.mSeverity;
|
|
50
|
+
mStream = std::move(other.mStream);
|
|
51
|
+
}
|
|
52
|
+
return *this;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
LogMessage::~LogMessage() {
|
|
56
|
+
std::string fullMessage = mStream.str();
|
|
57
|
+
if (fullMessage.empty()) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const char* severityName;
|
|
61
|
+
switch (mSeverity) {
|
|
62
|
+
case LogSeverity::Debug: severityName = "Debug"; break;
|
|
63
|
+
case LogSeverity::Info: severityName = "Info"; break;
|
|
64
|
+
case LogSeverity::Warning: severityName = "Warning"; break;
|
|
65
|
+
case LogSeverity::Error: severityName = "Error"; break;
|
|
66
|
+
default: severityName = "Unknown"; break;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
#ifdef __ANDROID__
|
|
70
|
+
int androidPriority;
|
|
71
|
+
switch (mSeverity) {
|
|
72
|
+
case LogSeverity::Debug: androidPriority = ANDROID_LOG_DEBUG; break;
|
|
73
|
+
case LogSeverity::Info: androidPriority = ANDROID_LOG_INFO; break;
|
|
74
|
+
case LogSeverity::Warning: androidPriority = ANDROID_LOG_WARN; break;
|
|
75
|
+
case LogSeverity::Error: androidPriority = ANDROID_LOG_ERROR; break;
|
|
76
|
+
default: androidPriority = ANDROID_LOG_ERROR; break;
|
|
77
|
+
}
|
|
78
|
+
__android_log_print(androidPriority, "ReactNativeWebGPU", "%s: %s", severityName, fullMessage.c_str());
|
|
79
|
+
#elif defined(__APPLE__)
|
|
80
|
+
os_log_type_t logType;
|
|
81
|
+
switch (mSeverity) {
|
|
82
|
+
case LogSeverity::Debug: logType = OS_LOG_TYPE_DEBUG; break;
|
|
83
|
+
case LogSeverity::Info: logType = OS_LOG_TYPE_INFO; break;
|
|
84
|
+
case LogSeverity::Warning: logType = OS_LOG_TYPE_DEFAULT; break;
|
|
85
|
+
case LogSeverity::Error: logType = OS_LOG_TYPE_ERROR; break;
|
|
86
|
+
default: logType = OS_LOG_TYPE_ERROR; break;
|
|
87
|
+
}
|
|
88
|
+
os_log_with_type(OS_LOG_DEFAULT, logType, "[ReactNativeWebGPU] %s: %s", severityName, fullMessage.c_str());
|
|
89
|
+
#else
|
|
90
|
+
FILE* outputStream = (mSeverity == LogSeverity::Warning || mSeverity == LogSeverity::Error) ? stderr : stdout;
|
|
91
|
+
fprintf(outputStream, "[ReactNativeWebGPU] %s: %s\n", severityName, fullMessage.c_str());
|
|
92
|
+
fflush(outputStream);
|
|
93
|
+
#endif
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Factory functions
|
|
97
|
+
LogMessage DebugLog() {
|
|
98
|
+
return LogMessage(LogSeverity::Debug);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
LogMessage InfoLog() {
|
|
102
|
+
return LogMessage(LogSeverity::Info);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
LogMessage WarningLog() {
|
|
106
|
+
return LogMessage(LogSeverity::Warning);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
LogMessage ErrorLog() {
|
|
110
|
+
return LogMessage(LogSeverity::Error);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
LogMessage DebugLog(const char* file, const char* function, int line) {
|
|
114
|
+
LogMessage message = DebugLog();
|
|
115
|
+
message << file << ":" << line << "(" << function << ")";
|
|
116
|
+
return message;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
} // namespace dawn
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <stdexcept>
|
|
4
|
+
#include <string>
|
|
5
|
+
|
|
6
|
+
namespace rnwgpu {
|
|
7
|
+
|
|
8
|
+
namespace EnumMapper {
|
|
9
|
+
// Add these two methods in namespace "EnumMapper" to allow parsing a custom enum:
|
|
10
|
+
// 1. `static void convertJSUnionToEnum(const std::string& inUnion, Enum* outEnum)`
|
|
11
|
+
// 2. `static void convertEnumToJSUnion(Enum inEnum, std::string* outUnion)`
|
|
12
|
+
|
|
13
|
+
static std::runtime_error invalidUnion(const std::string& passedUnion) {
|
|
14
|
+
return std::runtime_error("Cannot convert JS Value to Enum: Invalid Union value passed! (\"" + std::string(passedUnion) + "\")");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
template <typename T> static std::runtime_error invalidEnum(T passedEnum) {
|
|
18
|
+
return std::runtime_error("Cannot convert Enum to JS Value: Invalid Enum passed! (Value #" +
|
|
19
|
+
std::to_string(static_cast<int>(passedEnum)) + ")");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Trait to check if a convertJSUnionToEnum function for enum type T exists
|
|
23
|
+
template <typename T, typename = void> struct has_js_union_to_enum : std::false_type {};
|
|
24
|
+
template <typename T>
|
|
25
|
+
struct has_js_union_to_enum<T, std::void_t<decltype(convertJSUnionToEnum(std::declval<std::string>(), std::declval<T*>()))>>
|
|
26
|
+
: std::true_type {};
|
|
27
|
+
|
|
28
|
+
// Trait to check if a convertEnumToJSUnion function for enum type T exists
|
|
29
|
+
template <typename T, typename = void> struct has_enum_to_js_union : std::false_type {};
|
|
30
|
+
template <typename T>
|
|
31
|
+
struct has_enum_to_js_union<T, std::void_t<decltype(convertEnumToJSUnion(std::declval<T>(), std::declval<std::string*>()))>>
|
|
32
|
+
: std::true_type {};
|
|
33
|
+
|
|
34
|
+
template <typename TEnum> static void convertJSUnionToEnum(const std::string&, TEnum*) {
|
|
35
|
+
static_assert(has_js_union_to_enum<TEnum>::value,
|
|
36
|
+
"Cannot convert a JS union to this enum type. Did you implement EnumMapper::convertJSUnionToEnum(...)?");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
template <typename TEnum> static void convertEnumToJSUnion(TEnum, std::string*) {
|
|
40
|
+
static_assert(has_enum_to_js_union<TEnum>::value,
|
|
41
|
+
"Cannot convert this enum type to a JS union. Did you implement EnumMapper::convertEnumToJSUnion(...)?");
|
|
42
|
+
}
|
|
43
|
+
} // namespace EnumMapper
|
|
44
|
+
|
|
45
|
+
} // namespace rnwgpu
|