react-native-wgpu 0.5.13 → 0.5.14
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/README.md +13 -386
- package/lib/commonjs/index.js +7 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +4 -4
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/webgpu/src/Canvas.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/NativeWebGPUModule.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/Offscreen.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/WebGPUViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/external/ModuleProxy.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/external/index.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/external/reanimated/index.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/hooks.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/index.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/main/index.d.ts.map +1 -0
- package/lib/typescript/webgpu/src/types.d.ts.map +1 -0
- package/lib/typescript/{eslint.config.d.mts.map → webgpu-shim/eslint.config.d.mts.map} +1 -1
- package/lib/typescript/{lib → webgpu-shim/lib}/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/webgpu-shim/lib/module/index.d.ts +2 -0
- package/lib/typescript/{lib → webgpu-shim/lib}/module/index.d.ts.map +1 -1
- package/lib/typescript/webgpu-shim/src/index.d.ts +2 -0
- package/lib/typescript/webgpu-shim/src/index.d.ts.map +1 -0
- package/package.json +12 -81
- package/src/index.ts +9 -0
- package/LICENSE +0 -20
- package/android/CMakeLists.txt +0 -110
- package/android/build.gradle +0 -138
- package/android/cpp/AndroidPlatformContext.h +0 -328
- package/android/cpp/cpp-adapter.cpp +0 -71
- package/android/src/main/AndroidManifest.xml +0 -3
- package/android/src/main/java/com/webgpu/WebGPUAHBView.java +0 -298
- package/android/src/main/java/com/webgpu/WebGPUAPI.java +0 -20
- package/android/src/main/java/com/webgpu/WebGPUBaseView.java +0 -61
- package/android/src/main/java/com/webgpu/WebGPUModule.java +0 -50
- package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +0 -41
- package/android/src/main/java/com/webgpu/WebGPUSurfaceViewWithSC.java +0 -79
- package/android/src/main/java/com/webgpu/WebGPUTextureView.java +0 -46
- package/android/src/main/java/com/webgpu/WebGPUView.java +0 -108
- package/android/src/main/java/com/webgpu/WebGPUViewManager.java +0 -38
- package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +0 -50
- package/android/src/newarch/com/webgpu/WebGPUViewManagerSpec.java +0 -24
- package/apple/ApplePlatformContext.h +0 -44
- package/apple/ApplePlatformContext.mm +0 -302
- package/apple/AppleVideoPlayer.h +0 -31
- package/apple/AppleVideoPlayer.mm +0 -314
- package/apple/MetalView.h +0 -13
- package/apple/MetalView.mm +0 -50
- package/apple/RNWGUIKit.h +0 -16
- package/apple/WebGPUModule.h +0 -13
- package/apple/WebGPUModule.mm +0 -89
- package/apple/WebGPUView.h +0 -12
- package/apple/WebGPUView.mm +0 -66
- package/cpp/WGPULogger.h +0 -100
- package/cpp/dawn_logging.cpp +0 -119
- package/cpp/jsi/EnumMapper.h +0 -45
- package/cpp/jsi/JSIConverter.h +0 -473
- package/cpp/jsi/NativeObject.h +0 -607
- package/cpp/jsi/Promise.cpp +0 -44
- package/cpp/jsi/Promise.h +0 -35
- package/cpp/jsi/RuntimeAwareCache.cpp +0 -7
- package/cpp/jsi/RuntimeAwareCache.h +0 -100
- package/cpp/jsi/RuntimeLifecycleMonitor.cpp +0 -72
- package/cpp/jsi/RuntimeLifecycleMonitor.h +0 -32
- package/cpp/rnwgpu/ArrayBuffer.h +0 -117
- package/cpp/rnwgpu/PlatformContext.h +0 -127
- package/cpp/rnwgpu/RNWebGPUManager.cpp +0 -237
- package/cpp/rnwgpu/RNWebGPUManager.h +0 -46
- package/cpp/rnwgpu/SurfaceRegistry.h +0 -230
- package/cpp/rnwgpu/api/Canvas.h +0 -57
- package/cpp/rnwgpu/api/Convertors.h +0 -783
- package/cpp/rnwgpu/api/External.h +0 -12
- package/cpp/rnwgpu/api/GPU.cpp +0 -154
- package/cpp/rnwgpu/api/GPU.h +0 -58
- package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -267
- package/cpp/rnwgpu/api/GPUAdapter.h +0 -59
- 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 -97
- package/cpp/rnwgpu/api/GPUBuffer.h +0 -87
- package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -67
- package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -66
- 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 -545
- package/cpp/rnwgpu/api/GPUDevice.h +0 -265
- 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 -335
- package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -90
- package/cpp/rnwgpu/api/GPUFeatures.h +0 -206
- 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 -169
- package/cpp/rnwgpu/api/GPUQueue.h +0 -81
- 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 -50
- package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
- package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -80
- package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -71
- 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 -71
- package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
- package/cpp/rnwgpu/api/ImageBitmap.h +0 -48
- package/cpp/rnwgpu/api/RNWebGPU.h +0 -241
- package/cpp/rnwgpu/api/RnFeatures.h +0 -53
- package/cpp/rnwgpu/api/VideoFrame.h +0 -76
- package/cpp/rnwgpu/api/VideoPlayer.h +0 -69
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -65
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -81
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -98
- package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -53
- package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -60
- 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 -67
- package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
- package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -46
- package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -46
- package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -68
- package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -104
- package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -115
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -39
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -82
- package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -74
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -63
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -66
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -82
- package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -55
- package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
- package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -55
- package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -70
- package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -44
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -46
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -81
- package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -82
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -102
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -93
- package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -104
- package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -52
- package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -46
- package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -111
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -61
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -63
- package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
- package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -65
- package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -60
- package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -60
- package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -92
- package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
- package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -92
- package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -65
- package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -54
- package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -63
- package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -74
- package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1979
- package/cpp/rnwgpu/async/AsyncDispatcher.h +0 -28
- package/cpp/rnwgpu/async/AsyncRunner.cpp +0 -215
- package/cpp/rnwgpu/async/AsyncRunner.h +0 -53
- package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -181
- package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -55
- package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +0 -23
- package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +0 -22
- package/cpp/webgpu/webgpu.h +0 -4979
- package/cpp/webgpu/webgpu_cpp.h +0 -10059
- package/cpp/webgpu/webgpu_cpp_chained_struct.h +0 -57
- package/cpp/webgpu/webgpu_cpp_print.h +0 -2844
- package/cpp/webgpu/webgpu_enum_class_bitmasks.h +0 -161
- package/lib/commonjs/Canvas.js +0 -55
- package/lib/commonjs/Canvas.js.map +0 -1
- package/lib/commonjs/NativeWebGPUModule.js +0 -10
- package/lib/commonjs/NativeWebGPUModule.js.map +0 -1
- package/lib/commonjs/Offscreen.js +0 -103
- package/lib/commonjs/Offscreen.js.map +0 -1
- package/lib/commonjs/WebGPUViewNativeComponent.js +0 -10
- package/lib/commonjs/WebGPUViewNativeComponent.js.map +0 -1
- package/lib/commonjs/WebGPUViewNativeComponent.web.js +0 -103
- package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +0 -1
- package/lib/commonjs/WebPolyfillGPUModule.js +0 -40
- package/lib/commonjs/WebPolyfillGPUModule.js.map +0 -1
- package/lib/commonjs/external/ModuleProxy.js +0 -36
- package/lib/commonjs/external/ModuleProxy.js.map +0 -1
- package/lib/commonjs/external/index.js +0 -17
- package/lib/commonjs/external/index.js.map +0 -1
- package/lib/commonjs/external/reanimated/ReanimatedProxy.js +0 -18
- package/lib/commonjs/external/reanimated/ReanimatedProxy.js.map +0 -1
- package/lib/commonjs/external/reanimated/index.js +0 -21
- package/lib/commonjs/external/reanimated/index.js.map +0 -1
- package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +0 -49
- package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
- package/lib/commonjs/hooks.js +0 -83
- package/lib/commonjs/hooks.js.map +0 -1
- package/lib/commonjs/main/index.js +0 -91
- package/lib/commonjs/main/index.js.map +0 -1
- package/lib/commonjs/main/index.web.js +0 -51
- package/lib/commonjs/main/index.web.js.map +0 -1
- package/lib/commonjs/types.js +0 -2
- package/lib/commonjs/types.js.map +0 -1
- package/lib/commonjs/utils.js +0 -11
- package/lib/commonjs/utils.js.map +0 -1
- package/lib/module/Canvas.js +0 -46
- package/lib/module/Canvas.js.map +0 -1
- package/lib/module/NativeWebGPUModule.js +0 -4
- package/lib/module/NativeWebGPUModule.js.map +0 -1
- package/lib/module/Offscreen.js +0 -96
- package/lib/module/Offscreen.js.map +0 -1
- package/lib/module/WebGPUViewNativeComponent.js +0 -4
- package/lib/module/WebGPUViewNativeComponent.js.map +0 -1
- package/lib/module/WebGPUViewNativeComponent.web.js +0 -96
- package/lib/module/WebGPUViewNativeComponent.web.js.map +0 -1
- package/lib/module/WebPolyfillGPUModule.js +0 -38
- package/lib/module/WebPolyfillGPUModule.js.map +0 -1
- package/lib/module/external/ModuleProxy.js +0 -28
- package/lib/module/external/ModuleProxy.js.map +0 -1
- package/lib/module/external/index.js +0 -2
- package/lib/module/external/index.js.map +0 -1
- package/lib/module/external/reanimated/ReanimatedProxy.js +0 -12
- package/lib/module/external/reanimated/ReanimatedProxy.js.map +0 -1
- package/lib/module/external/reanimated/index.js +0 -3
- package/lib/module/external/reanimated/index.js.map +0 -1
- package/lib/module/external/reanimated/registerWebGPUForReanimated.js +0 -42
- package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
- package/lib/module/hooks.js +0 -70
- package/lib/module/hooks.js.map +0 -1
- package/lib/module/main/index.js +0 -33
- package/lib/module/main/index.js.map +0 -1
- package/lib/module/main/index.web.js +0 -8
- package/lib/module/main/index.web.js.map +0 -1
- package/lib/module/types.js +0 -2
- package/lib/module/types.js.map +0 -1
- package/lib/module/utils.js +0 -5
- package/lib/module/utils.js.map +0 -1
- package/lib/typescript/babel.config.d.ts +0 -3
- package/lib/typescript/babel.config.d.ts.map +0 -1
- package/lib/typescript/jest.config.d.ts +0 -9
- package/lib/typescript/jest.config.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/Canvas.d.ts +0 -7
- package/lib/typescript/lib/commonjs/Canvas.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts +0 -5
- package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/Offscreen.d.ts +0 -26
- package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +0 -5
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts +0 -4
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts +0 -2
- package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts +0 -12
- package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/external/index.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts +0 -6
- package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts +0 -4
- package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts +0 -9
- package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/hooks.d.ts +0 -18
- package/lib/typescript/lib/commonjs/hooks.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/index.d.ts +0 -2
- package/lib/typescript/lib/commonjs/main/index.d.ts +0 -3
- package/lib/typescript/lib/commonjs/main/index.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/main/index.web.d.ts +0 -2
- package/lib/typescript/lib/commonjs/main/index.web.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/types.d.ts +0 -1
- package/lib/typescript/lib/commonjs/types.d.ts.map +0 -1
- package/lib/typescript/lib/commonjs/utils.d.ts +0 -3
- package/lib/typescript/lib/commonjs/utils.d.ts.map +0 -1
- package/lib/typescript/lib/module/Canvas.d.ts +0 -8
- package/lib/typescript/lib/module/Canvas.d.ts.map +0 -1
- package/lib/typescript/lib/module/NativeWebGPUModule.d.ts +0 -3
- package/lib/typescript/lib/module/NativeWebGPUModule.d.ts.map +0 -1
- package/lib/typescript/lib/module/Offscreen.d.ts +0 -25
- package/lib/typescript/lib/module/Offscreen.d.ts.map +0 -1
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +0 -3
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +0 -1
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts +0 -3
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +0 -1
- package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts +0 -2
- package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts.map +0 -1
- package/lib/typescript/lib/module/external/ModuleProxy.d.ts +0 -7
- package/lib/typescript/lib/module/external/ModuleProxy.d.ts.map +0 -1
- package/lib/typescript/lib/module/external/index.d.ts.map +0 -1
- package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts +0 -5
- package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
- package/lib/typescript/lib/module/external/reanimated/index.d.ts.map +0 -1
- package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts +0 -2
- package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
- package/lib/typescript/lib/module/hooks.d.ts +0 -18
- package/lib/typescript/lib/module/hooks.d.ts.map +0 -1
- package/lib/typescript/lib/module/index.d.ts +0 -2
- package/lib/typescript/lib/module/main/index.d.ts.map +0 -1
- package/lib/typescript/lib/module/main/index.web.d.ts +0 -5
- package/lib/typescript/lib/module/main/index.web.d.ts.map +0 -1
- package/lib/typescript/lib/module/types.d.ts +0 -1
- package/lib/typescript/lib/module/types.d.ts.map +0 -1
- package/lib/typescript/lib/module/utils.d.ts +0 -2
- package/lib/typescript/lib/module/utils.d.ts.map +0 -1
- package/lib/typescript/src/Canvas.d.ts.map +0 -1
- package/lib/typescript/src/NativeWebGPUModule.d.ts.map +0 -1
- package/lib/typescript/src/Offscreen.d.ts.map +0 -1
- package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +0 -1
- package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +0 -9
- package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +0 -1
- package/lib/typescript/src/WebPolyfillGPUModule.d.ts +0 -2
- package/lib/typescript/src/WebPolyfillGPUModule.d.ts.map +0 -1
- package/lib/typescript/src/external/ModuleProxy.d.ts.map +0 -1
- package/lib/typescript/src/external/index.d.ts +0 -2
- package/lib/typescript/src/external/index.d.ts.map +0 -1
- package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
- package/lib/typescript/src/external/reanimated/index.d.ts +0 -3
- package/lib/typescript/src/external/reanimated/index.d.ts.map +0 -1
- package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
- package/lib/typescript/src/hooks.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts.map +0 -1
- package/lib/typescript/src/main/index.d.ts +0 -6
- package/lib/typescript/src/main/index.d.ts.map +0 -1
- package/lib/typescript/src/main/index.web.d.ts +0 -6
- package/lib/typescript/src/main/index.web.d.ts.map +0 -1
- package/lib/typescript/src/types.d.ts.map +0 -1
- package/lib/typescript/src/utils.d.ts +0 -2
- package/lib/typescript/src/utils.d.ts.map +0 -1
- 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 +0 -59
- 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/react-native-wgpu.podspec +0 -47
- package/src/Canvas.tsx +0 -76
- package/src/NativeWebGPUModule.ts +0 -9
- package/src/Offscreen.ts +0 -113
- package/src/WebGPUViewNativeComponent.ts +0 -11
- package/src/WebGPUViewNativeComponent.web.ts +0 -113
- package/src/WebPolyfillGPUModule.ts +0 -53
- package/src/external/ModuleProxy.ts +0 -30
- package/src/external/index.ts +0 -1
- package/src/external/reanimated/ReanimatedProxy.ts +0 -19
- package/src/external/reanimated/index.ts +0 -2
- package/src/external/reanimated/registerWebGPUForReanimated.ts +0 -43
- package/src/hooks.tsx +0 -93
- package/src/index.tsx +0 -91
- package/src/main/index.tsx +0 -40
- package/src/main/index.web.tsx +0 -8
- package/src/types.ts +0 -102
- package/src/utils.ts +0 -4
- /package/lib/typescript/{src → webgpu/src}/Canvas.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/NativeWebGPUModule.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/Offscreen.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/WebGPUViewNativeComponent.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/external/ModuleProxy.d.ts +0 -0
- /package/lib/typescript/{lib/module → webgpu/src}/external/index.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/external/reanimated/ReanimatedProxy.d.ts +0 -0
- /package/lib/typescript/{lib/module → webgpu/src}/external/reanimated/index.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/external/reanimated/registerWebGPUForReanimated.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/hooks.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/index.d.ts +0 -0
- /package/lib/typescript/{lib/module → webgpu/src}/main/index.d.ts +0 -0
- /package/lib/typescript/{src → webgpu/src}/types.d.ts +0 -0
- /package/lib/typescript/{eslint.config.d.mts → webgpu-shim/eslint.config.d.mts} +0 -0
- /package/lib/typescript/{lib/commonjs/external → webgpu-shim/lib/commonjs}/index.d.ts +0 -0
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
#include "GPUExternalTexture.h"
|
|
2
|
-
|
|
3
|
-
#include <cmath>
|
|
4
|
-
#include <memory>
|
|
5
|
-
#include <string>
|
|
6
|
-
#include <utility>
|
|
7
|
-
|
|
8
|
-
#include "GPUExternalTextureDescriptor.h"
|
|
9
|
-
|
|
10
|
-
namespace rnwgpu {
|
|
11
|
-
|
|
12
|
-
// Identity gamut (BT.709 -> sRGB, same primaries) as a 3x3 column-major matrix.
|
|
13
|
-
static const float kIdentityGamutMatrix[9] = {
|
|
14
|
-
1.0f, 0.0f, 0.0f, //
|
|
15
|
-
0.0f, 1.0f, 0.0f, //
|
|
16
|
-
0.0f, 0.0f, 1.0f, //
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
// Piecewise gamma transfer-function parameters Dawn expects:
|
|
20
|
-
// for |x| < D: y = sign(x) * (C * |x| + F)
|
|
21
|
-
// else : y = sign(x) * (pow(A * |x| + B, G) + E)
|
|
22
|
-
// sRGB decode (encoded -> linear).
|
|
23
|
-
static const float kSrgbDecodeParams[7] = {
|
|
24
|
-
2.4f, // G
|
|
25
|
-
1.0f / 1.055f, // A
|
|
26
|
-
0.055f / 1.055f, // B
|
|
27
|
-
1.0f / 12.92f, // C
|
|
28
|
-
0.04045f, // D
|
|
29
|
-
0.0f, // E
|
|
30
|
-
0.0f, // F
|
|
31
|
-
};
|
|
32
|
-
// sRGB encode (linear -> encoded).
|
|
33
|
-
static const float kSrgbEncodeParams[7] = {
|
|
34
|
-
1.0f / 2.4f, // G
|
|
35
|
-
1.055f, // A
|
|
36
|
-
0.0f, // B
|
|
37
|
-
12.92f, // C
|
|
38
|
-
0.0031308f, // D
|
|
39
|
-
-0.055f, // E
|
|
40
|
-
0.0f, // F
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
// Identity transfer (y = x). Used when the sampled surface is already in the
|
|
44
|
-
// render target's color space: a single-plane BGRA IOSurface, or the Android
|
|
45
|
-
// opaque-YCbCr path where the Vulkan sampler already produced RGB. Dawn
|
|
46
|
-
// dereferences the transfer-function arrays unconditionally
|
|
47
|
-
// (ComputeExternalTextureParams), so these must be non-null even when no
|
|
48
|
-
// conversion is wanted.
|
|
49
|
-
static const float kIdentityTransferParams[7] = {
|
|
50
|
-
1.0f, // G
|
|
51
|
-
1.0f, // A
|
|
52
|
-
0.0f, // B
|
|
53
|
-
0.0f, // C
|
|
54
|
-
0.0f, // D
|
|
55
|
-
0.0f, // E
|
|
56
|
-
0.0f, // F
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// BT.709 limited-range YUV -> R'G'B' as a 3x4 row-major matrix mapping
|
|
60
|
-
// [Y, Cb, Cr, 1] to gamma-encoded R'G'B' (NOT linear; the sRGB decode in
|
|
61
|
-
// srcTransferFunctionParameters linearizes afterwards). Same values the Apple
|
|
62
|
-
// NV12 path computes from the CVPixelBuffer; used for Android buffers that
|
|
63
|
-
// arrive as a *defined* biplanar format (where we split the planes and convert
|
|
64
|
-
// ourselves) rather than an opaque external-format AHB. Camera streams are
|
|
65
|
-
// limited-range BT.709 in the overwhelming majority of cases; full-range /
|
|
66
|
-
// BT.601 would need different coefficients (refine from the buffer's suggested
|
|
67
|
-
// range if it matters).
|
|
68
|
-
[[maybe_unused]] static const float kBT709LimitedToRgb[12] = {
|
|
69
|
-
1.164383f, 0.000000f, 1.792741f, -0.972945f, //
|
|
70
|
-
1.164383f, -0.213249f, -0.532909f, 0.301517f, //
|
|
71
|
-
1.164383f, 2.112402f, 0.000000f, -1.133402f, //
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
// True for the multi-planar Y + CbCr formats whose planes we can view as
|
|
75
|
-
// Plane0Only (luma) / Plane1Only (chroma) and convert with an explicit matrix.
|
|
76
|
-
// Excludes OpaqueYCbCrAndroid (external format, no plane views) and triplanar
|
|
77
|
-
// formats (would need a third plane). Only referenced on Android.
|
|
78
|
-
[[maybe_unused]] static bool isBiplanarYuvFormat(wgpu::TextureFormat format) {
|
|
79
|
-
switch (format) {
|
|
80
|
-
case wgpu::TextureFormat::R8BG8Biplanar420Unorm:
|
|
81
|
-
case wgpu::TextureFormat::R8BG8Biplanar422Unorm:
|
|
82
|
-
case wgpu::TextureFormat::R8BG8Biplanar444Unorm:
|
|
83
|
-
case wgpu::TextureFormat::R10X6BG10X6Biplanar420Unorm:
|
|
84
|
-
case wgpu::TextureFormat::R10X6BG10X6Biplanar422Unorm:
|
|
85
|
-
case wgpu::TextureFormat::R10X6BG10X6Biplanar444Unorm:
|
|
86
|
-
return true;
|
|
87
|
-
default:
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Map a rotation in degrees (0 / 90 / 180 / 270) to Dawn's enum. Anything that
|
|
93
|
-
// isn't a clean multiple of 90 snaps to the nearest quadrant; Dawn only
|
|
94
|
-
// supports those four steps for external textures.
|
|
95
|
-
static wgpu::ExternalTextureRotation
|
|
96
|
-
toExternalTextureRotation(double degrees) {
|
|
97
|
-
int quadrant = static_cast<int>(std::lround(degrees / 90.0)) & 3;
|
|
98
|
-
switch (quadrant) {
|
|
99
|
-
case 1:
|
|
100
|
-
return wgpu::ExternalTextureRotation::Rotate90Degrees;
|
|
101
|
-
case 2:
|
|
102
|
-
return wgpu::ExternalTextureRotation::Rotate180Degrees;
|
|
103
|
-
case 3:
|
|
104
|
-
return wgpu::ExternalTextureRotation::Rotate270Degrees;
|
|
105
|
-
default:
|
|
106
|
-
return wgpu::ExternalTextureRotation::Rotate0Degrees;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
std::shared_ptr<GPUExternalTexture> GPUExternalTexture::Create(
|
|
111
|
-
wgpu::Device device,
|
|
112
|
-
std::shared_ptr<GPUExternalTextureDescriptor> descriptor) {
|
|
113
|
-
if (!descriptor || !descriptor->source) {
|
|
114
|
-
throw std::runtime_error(
|
|
115
|
-
"GPUExternalTexture::Create(): descriptor.source (VideoFrame) "
|
|
116
|
-
"is required");
|
|
117
|
-
}
|
|
118
|
-
const auto &source = descriptor->source;
|
|
119
|
-
const auto &frame = source->handle();
|
|
120
|
-
if (frame.handle == nullptr) {
|
|
121
|
-
throw std::runtime_error(
|
|
122
|
-
"GPUExternalTexture::Create(): VideoFrame has been released");
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
#if defined(__APPLE__)
|
|
126
|
-
// 1. Import the IOSurface as SharedTextureMemory. For NV12 surfaces this
|
|
127
|
-
// yields a biplanar texture; for BGRA, a single-plane one.
|
|
128
|
-
wgpu::SharedTextureMemoryDescriptor memDesc{};
|
|
129
|
-
std::string label = descriptor->label.value_or("external-texture");
|
|
130
|
-
if (!label.empty()) {
|
|
131
|
-
memDesc.label = wgpu::StringView(label.c_str(), label.size());
|
|
132
|
-
}
|
|
133
|
-
wgpu::SharedTextureMemoryIOSurfaceDescriptor platformDesc{};
|
|
134
|
-
platformDesc.ioSurface = frame.handle;
|
|
135
|
-
// ExternalTexture views are sampled-only; storage binding isn't needed and
|
|
136
|
-
// for biplanar formats it would fail validation.
|
|
137
|
-
platformDesc.allowStorageBinding = false;
|
|
138
|
-
memDesc.nextInChain = &platformDesc;
|
|
139
|
-
auto memory = device.ImportSharedTextureMemory(&memDesc);
|
|
140
|
-
if (memory == nullptr) {
|
|
141
|
-
throw std::runtime_error(
|
|
142
|
-
"GPUExternalTexture::Create(): ImportSharedTextureMemory "
|
|
143
|
-
"returned null. Is 'shared-texture-memory-iosurface' enabled?");
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// 2. Create the texture from the surface. We pass the right format
|
|
147
|
-
// explicitly so Dawn picks the multi-planar variant on NV12.
|
|
148
|
-
bool isYuv = frame.pixelFormat == VideoPixelFormat::NV12;
|
|
149
|
-
auto texture = memory.CreateTexture();
|
|
150
|
-
if (texture == nullptr) {
|
|
151
|
-
throw std::runtime_error(
|
|
152
|
-
"GPUExternalTexture::Create(): CreateTexture returned null");
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// 3. Begin access on the underlying memory. The matching EndAccess runs when
|
|
156
|
-
// the GPUExternalTexture is destroyed (explicitly via destroy() or at GC).
|
|
157
|
-
wgpu::SharedTextureMemoryBeginAccessDescriptor begin{};
|
|
158
|
-
begin.initialized = true;
|
|
159
|
-
begin.concurrentRead = false;
|
|
160
|
-
if (!memory.BeginAccess(texture, &begin)) {
|
|
161
|
-
throw std::runtime_error(
|
|
162
|
-
"GPUExternalTexture::Create(): BeginAccess failed");
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// 4. Build plane views. For NV12 we need plane0 = R8 luma and plane1 = RG8
|
|
166
|
-
// chroma; for BGRA we only set plane0.
|
|
167
|
-
wgpu::TextureView plane0;
|
|
168
|
-
wgpu::TextureView plane1;
|
|
169
|
-
{
|
|
170
|
-
wgpu::TextureViewDescriptor v{};
|
|
171
|
-
v.aspect =
|
|
172
|
-
isYuv ? wgpu::TextureAspect::Plane0Only : wgpu::TextureAspect::All;
|
|
173
|
-
plane0 = texture.CreateView(&v);
|
|
174
|
-
}
|
|
175
|
-
if (isYuv) {
|
|
176
|
-
wgpu::TextureViewDescriptor v{};
|
|
177
|
-
v.aspect = wgpu::TextureAspect::Plane1Only;
|
|
178
|
-
plane1 = texture.CreateView(&v);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// 5. Build the ExternalTextureDescriptor. We hand Dawn explicit YUV→RGB and
|
|
182
|
-
// sRGB transfer-function parameters so the sampler does the full color
|
|
183
|
-
// conversion in hardware.
|
|
184
|
-
wgpu::ExternalTextureDescriptor extDesc{};
|
|
185
|
-
if (!label.empty()) {
|
|
186
|
-
extDesc.label = wgpu::StringView(label.c_str(), label.size());
|
|
187
|
-
}
|
|
188
|
-
extDesc.plane0 = plane0;
|
|
189
|
-
extDesc.gamutConversionMatrix = kIdentityGamutMatrix;
|
|
190
|
-
if (isYuv) {
|
|
191
|
-
extDesc.plane1 = plane1;
|
|
192
|
-
extDesc.yuvToRgbConversionMatrix = frame.yuvToRgbMatrix;
|
|
193
|
-
extDesc.srcTransferFunctionParameters = kSrgbDecodeParams;
|
|
194
|
-
extDesc.dstTransferFunctionParameters = kSrgbEncodeParams;
|
|
195
|
-
} else {
|
|
196
|
-
// BGRA is already RGB in the target color space; pass it through. Dawn
|
|
197
|
-
// dereferences these arrays unconditionally, so they must be non-null.
|
|
198
|
-
extDesc.srcTransferFunctionParameters = kIdentityTransferParams;
|
|
199
|
-
extDesc.dstTransferFunctionParameters = kIdentityTransferParams;
|
|
200
|
-
}
|
|
201
|
-
extDesc.cropOrigin = {0, 0};
|
|
202
|
-
extDesc.cropSize = {frame.width, frame.height};
|
|
203
|
-
extDesc.apparentSize = {frame.width, frame.height};
|
|
204
|
-
extDesc.mirrored = descriptor->mirrored.value_or(false);
|
|
205
|
-
extDesc.rotation =
|
|
206
|
-
toExternalTextureRotation(descriptor->rotation.value_or(0));
|
|
207
|
-
|
|
208
|
-
auto external = device.CreateExternalTexture(&extDesc);
|
|
209
|
-
if (external == nullptr) {
|
|
210
|
-
wgpu::SharedTextureMemoryEndAccessState state{};
|
|
211
|
-
(void)memory.EndAccess(texture, &state);
|
|
212
|
-
throw std::runtime_error(
|
|
213
|
-
"GPUExternalTexture::Create(): CreateExternalTexture returned "
|
|
214
|
-
"null");
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
return std::make_shared<GPUExternalTexture>(
|
|
218
|
-
std::move(external), std::move(memory), std::move(texture),
|
|
219
|
-
std::move(descriptor->source), std::move(label));
|
|
220
|
-
#elif defined(__ANDROID__)
|
|
221
|
-
// 1. Import the AHardwareBuffer as SharedTextureMemory. For YUV AHBs this
|
|
222
|
-
// yields a Dawn texture in the implementation-defined OpaqueYCbCrAndroid
|
|
223
|
-
// format; for RGBA AHBs, a regular single-plane texture.
|
|
224
|
-
wgpu::SharedTextureMemoryDescriptor memDesc{};
|
|
225
|
-
std::string label = descriptor->label.value_or("external-texture");
|
|
226
|
-
if (!label.empty()) {
|
|
227
|
-
memDesc.label = wgpu::StringView(label.c_str(), label.size());
|
|
228
|
-
}
|
|
229
|
-
wgpu::SharedTextureMemoryAHardwareBufferDescriptor platformDesc{};
|
|
230
|
-
platformDesc.handle = frame.handle;
|
|
231
|
-
memDesc.nextInChain = &platformDesc;
|
|
232
|
-
auto memory = device.ImportSharedTextureMemory(&memDesc);
|
|
233
|
-
if (memory == nullptr) {
|
|
234
|
-
throw std::runtime_error(
|
|
235
|
-
"GPUExternalTexture::Create(): ImportSharedTextureMemory "
|
|
236
|
-
"returned null. Is 'shared-texture-memory-ahardware-buffer' enabled?");
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// 2. Create the texture. No descriptor: Dawn picks the right format
|
|
240
|
-
// (OpaqueYCbCrAndroid for YUV, R8 / RGBA8 / ... for color AHBs).
|
|
241
|
-
auto texture = memory.CreateTexture();
|
|
242
|
-
if (texture == nullptr) {
|
|
243
|
-
throw std::runtime_error(
|
|
244
|
-
"GPUExternalTexture::Create(): CreateTexture returned null");
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// 3. Begin access. Vulkan requires us to advertise the incoming VkImage
|
|
248
|
-
// layout (UNDEFINED is fine for the first acquisition of an AHB whose
|
|
249
|
-
// contents we expect Dawn to read as-is).
|
|
250
|
-
wgpu::SharedTextureMemoryBeginAccessDescriptor begin{};
|
|
251
|
-
begin.initialized = true;
|
|
252
|
-
begin.concurrentRead = false;
|
|
253
|
-
wgpu::SharedTextureMemoryVkImageLayoutBeginState beginLayout{};
|
|
254
|
-
begin.nextInChain = &beginLayout;
|
|
255
|
-
if (!memory.BeginAccess(texture, &begin)) {
|
|
256
|
-
throw std::runtime_error(
|
|
257
|
-
"GPUExternalTexture::Create(): BeginAccess failed");
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// 4. Build the ExternalTextureDescriptor. There are two cases depending on
|
|
261
|
-
// how Dawn imported the AHB (see SharedTextureMemoryVk.cpp):
|
|
262
|
-
//
|
|
263
|
-
// a. *External* format (camera buffers whose layout has no Vulkan
|
|
264
|
-
// equivalent) -> OpaqueYCbCrAndroid, a single opaque plane. Sampling
|
|
265
|
-
// routes through a Vulkan SamplerYcbcrConversion whose model Dawn
|
|
266
|
-
// copies verbatim from the AHB's suggestedYcbcrModel. We pass a single
|
|
267
|
-
// plane + identity transfer and let that conversion (if any) run. NOTE:
|
|
268
|
-
// when the driver reports RGB_IDENTITY the sample comes back as raw
|
|
269
|
-
// Y/Cb/Cr; there is no public hook to override the model on this path.
|
|
270
|
-
//
|
|
271
|
-
// b. *Defined* biplanar format (e.g. R8BG8Biplanar420Unorm, exposed by the
|
|
272
|
-
// dawn-multi-planar-formats feature) -> we split Plane0Only (luma) /
|
|
273
|
-
// Plane1Only (chroma) and hand Dawn an explicit BT.709 matrix + sRGB
|
|
274
|
-
// transfer, exactly like the iOS NV12 path. This makes numPlanes == 2
|
|
275
|
-
// so the matrix is actually applied (the single-plane branch in Dawn's
|
|
276
|
-
// Tint transform ignores yuvToRgbConversionMatrix).
|
|
277
|
-
//
|
|
278
|
-
// Either way we must pass non-null gamut/transfer arrays:
|
|
279
|
-
// ComputeExternalTextureParams dereferences them unconditionally
|
|
280
|
-
// (kIdentityTransferParams is defined at file scope).
|
|
281
|
-
const bool isBiplanar = frame.pixelFormat == VideoPixelFormat::NV12 &&
|
|
282
|
-
isBiplanarYuvFormat(texture.GetFormat());
|
|
283
|
-
|
|
284
|
-
wgpu::TextureView plane0;
|
|
285
|
-
wgpu::TextureView plane1;
|
|
286
|
-
wgpu::ExternalTextureDescriptor extDesc{};
|
|
287
|
-
if (!label.empty()) {
|
|
288
|
-
extDesc.label = wgpu::StringView(label.c_str(), label.size());
|
|
289
|
-
}
|
|
290
|
-
extDesc.cropOrigin = {0, 0};
|
|
291
|
-
extDesc.cropSize = {frame.width, frame.height};
|
|
292
|
-
extDesc.apparentSize = {frame.width, frame.height};
|
|
293
|
-
extDesc.gamutConversionMatrix = kIdentityGamutMatrix;
|
|
294
|
-
if (isBiplanar) {
|
|
295
|
-
wgpu::TextureViewDescriptor v0{};
|
|
296
|
-
v0.aspect = wgpu::TextureAspect::Plane0Only;
|
|
297
|
-
plane0 = texture.CreateView(&v0);
|
|
298
|
-
wgpu::TextureViewDescriptor v1{};
|
|
299
|
-
v1.aspect = wgpu::TextureAspect::Plane1Only;
|
|
300
|
-
plane1 = texture.CreateView(&v1);
|
|
301
|
-
extDesc.plane0 = plane0;
|
|
302
|
-
extDesc.plane1 = plane1;
|
|
303
|
-
extDesc.yuvToRgbConversionMatrix = kBT709LimitedToRgb;
|
|
304
|
-
extDesc.srcTransferFunctionParameters = kSrgbDecodeParams;
|
|
305
|
-
extDesc.dstTransferFunctionParameters = kSrgbEncodeParams;
|
|
306
|
-
} else {
|
|
307
|
-
plane0 = texture.CreateView();
|
|
308
|
-
extDesc.plane0 = plane0;
|
|
309
|
-
extDesc.srcTransferFunctionParameters = kIdentityTransferParams;
|
|
310
|
-
extDesc.dstTransferFunctionParameters = kIdentityTransferParams;
|
|
311
|
-
}
|
|
312
|
-
extDesc.mirrored = descriptor->mirrored.value_or(false);
|
|
313
|
-
extDesc.rotation =
|
|
314
|
-
toExternalTextureRotation(descriptor->rotation.value_or(0));
|
|
315
|
-
|
|
316
|
-
auto external = device.CreateExternalTexture(&extDesc);
|
|
317
|
-
if (external == nullptr) {
|
|
318
|
-
wgpu::SharedTextureMemoryEndAccessState state{};
|
|
319
|
-
(void)memory.EndAccess(texture, &state);
|
|
320
|
-
throw std::runtime_error(
|
|
321
|
-
"GPUExternalTexture::Create(): CreateExternalTexture returned "
|
|
322
|
-
"null");
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
return std::make_shared<GPUExternalTexture>(
|
|
326
|
-
std::move(external), std::move(memory), std::move(texture),
|
|
327
|
-
std::move(descriptor->source), std::move(label));
|
|
328
|
-
#else
|
|
329
|
-
throw std::runtime_error(
|
|
330
|
-
"GPUExternalTexture::Create(): not yet implemented on this "
|
|
331
|
-
"platform");
|
|
332
|
-
#endif
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
} // namespace rnwgpu
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
#include <string>
|
|
5
|
-
#include <utility>
|
|
6
|
-
|
|
7
|
-
#include "Unions.h"
|
|
8
|
-
|
|
9
|
-
#include "NativeObject.h"
|
|
10
|
-
#include "VideoFrame.h"
|
|
11
|
-
|
|
12
|
-
#include "webgpu/webgpu_cpp.h"
|
|
13
|
-
|
|
14
|
-
namespace rnwgpu {
|
|
15
|
-
|
|
16
|
-
namespace jsi = facebook::jsi;
|
|
17
|
-
|
|
18
|
-
struct GPUExternalTextureDescriptor;
|
|
19
|
-
|
|
20
|
-
class GPUExternalTexture : public NativeObject<GPUExternalTexture> {
|
|
21
|
-
public:
|
|
22
|
-
static constexpr const char *CLASS_NAME = "GPUExternalTexture";
|
|
23
|
-
|
|
24
|
-
// Import a VideoFrame (via descriptor.source) as a GPUExternalTexture on
|
|
25
|
-
// `device`: imports the native surface as SharedTextureMemory, begins access,
|
|
26
|
-
// and wraps the resulting wgpu::ExternalTexture together with the resources
|
|
27
|
-
// whose lifetime it owns. The matching EndAccess runs in destroy() / the
|
|
28
|
-
// destructor. Defined in GPUExternalTexture.cpp.
|
|
29
|
-
static std::shared_ptr<GPUExternalTexture>
|
|
30
|
-
Create(wgpu::Device device,
|
|
31
|
-
std::shared_ptr<GPUExternalTextureDescriptor> descriptor);
|
|
32
|
-
|
|
33
|
-
// Construct from an already-built wgpu::ExternalTexture plus the underlying
|
|
34
|
-
// shared-memory resources we need to keep alive. The wrapper takes ownership
|
|
35
|
-
// of the SharedTextureMemory + Texture and calls EndAccess on destruction so
|
|
36
|
-
// the producer (e.g. AVPlayer) can reclaim the IOSurface.
|
|
37
|
-
GPUExternalTexture(wgpu::ExternalTexture instance,
|
|
38
|
-
wgpu::SharedTextureMemory memory, wgpu::Texture texture,
|
|
39
|
-
std::shared_ptr<VideoFrame> source, std::string label)
|
|
40
|
-
: NativeObject(CLASS_NAME), _instance(std::move(instance)),
|
|
41
|
-
_memory(std::move(memory)), _texture(std::move(texture)),
|
|
42
|
-
_source(std::move(source)), _label(std::move(label)) {}
|
|
43
|
-
|
|
44
|
-
~GPUExternalTexture() override { destroy(); }
|
|
45
|
-
|
|
46
|
-
public:
|
|
47
|
-
std::string getBrand() { return CLASS_NAME; }
|
|
48
|
-
|
|
49
|
-
// End the shared-memory access window and release the underlying resources.
|
|
50
|
-
// Idempotent: safe to call more than once, and the destructor calls it as a
|
|
51
|
-
// garbage-collection fallback. Call it right after the queue.submit() that
|
|
52
|
-
// sampled this texture (never before): a GPUExternalTexture's access window
|
|
53
|
-
// is owned by this wrapper's lifetime, not by submit, so without an explicit
|
|
54
|
-
// destroy() the producer's surface (e.g. an AVPlayer IOSurface) stays claimed
|
|
55
|
-
// until GC runs. EndAccess is the designed post-submit call: Dawn keeps the
|
|
56
|
-
// texture alive for in-flight GPU work via the fences it returns.
|
|
57
|
-
void destroy() {
|
|
58
|
-
if (_memory && _texture) {
|
|
59
|
-
wgpu::SharedTextureMemoryEndAccessState state{};
|
|
60
|
-
(void)_memory.EndAccess(_texture, &state);
|
|
61
|
-
}
|
|
62
|
-
_texture = nullptr;
|
|
63
|
-
_memory = nullptr;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
std::string getLabel() { return _label; }
|
|
67
|
-
void setLabel(const std::string &label) {
|
|
68
|
-
_label = label;
|
|
69
|
-
_instance.SetLabel(_label.c_str());
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
73
|
-
installGetter(runtime, prototype, "__brand", &GPUExternalTexture::getBrand);
|
|
74
|
-
installGetterSetter(runtime, prototype, "label",
|
|
75
|
-
&GPUExternalTexture::getLabel,
|
|
76
|
-
&GPUExternalTexture::setLabel);
|
|
77
|
-
installMethod(runtime, prototype, "destroy", &GPUExternalTexture::destroy);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
inline const wgpu::ExternalTexture get() { return _instance; }
|
|
81
|
-
|
|
82
|
-
private:
|
|
83
|
-
wgpu::ExternalTexture _instance;
|
|
84
|
-
wgpu::SharedTextureMemory _memory;
|
|
85
|
-
wgpu::Texture _texture;
|
|
86
|
-
std::shared_ptr<VideoFrame> _source;
|
|
87
|
-
std::string _label;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
} // namespace rnwgpu
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <string>
|
|
4
|
-
|
|
5
|
-
#include <cstdio>
|
|
6
|
-
|
|
7
|
-
#include "webgpu/webgpu_cpp.h"
|
|
8
|
-
|
|
9
|
-
namespace rnwgpu {
|
|
10
|
-
|
|
11
|
-
static void convertEnumToJSUnion(wgpu::FeatureName inEnum,
|
|
12
|
-
std::string *outUnion) {
|
|
13
|
-
switch (inEnum) {
|
|
14
|
-
case wgpu::FeatureName::DepthClipControl:
|
|
15
|
-
*outUnion = "depth-clip-control";
|
|
16
|
-
break;
|
|
17
|
-
case wgpu::FeatureName::Depth32FloatStencil8:
|
|
18
|
-
*outUnion = "depth32float-stencil8";
|
|
19
|
-
break;
|
|
20
|
-
case wgpu::FeatureName::TimestampQuery:
|
|
21
|
-
*outUnion = "timestamp-query";
|
|
22
|
-
break;
|
|
23
|
-
case wgpu::FeatureName::TextureCompressionBC:
|
|
24
|
-
*outUnion = "texture-compression-bc";
|
|
25
|
-
break;
|
|
26
|
-
case wgpu::FeatureName::TextureCompressionETC2:
|
|
27
|
-
*outUnion = "texture-compression-etc2";
|
|
28
|
-
break;
|
|
29
|
-
case wgpu::FeatureName::TextureCompressionASTC:
|
|
30
|
-
*outUnion = "texture-compression-astc";
|
|
31
|
-
break;
|
|
32
|
-
case wgpu::FeatureName::IndirectFirstInstance:
|
|
33
|
-
*outUnion = "indirect-first-instance";
|
|
34
|
-
break;
|
|
35
|
-
case wgpu::FeatureName::ShaderF16:
|
|
36
|
-
*outUnion = "shader-f16";
|
|
37
|
-
break;
|
|
38
|
-
case wgpu::FeatureName::RG11B10UfloatRenderable:
|
|
39
|
-
*outUnion = "rg11b10ufloat-renderable";
|
|
40
|
-
break;
|
|
41
|
-
case wgpu::FeatureName::BGRA8UnormStorage:
|
|
42
|
-
*outUnion = "bgra8unorm-storage";
|
|
43
|
-
break;
|
|
44
|
-
case wgpu::FeatureName::Float32Filterable:
|
|
45
|
-
*outUnion = "float32-filterable";
|
|
46
|
-
break;
|
|
47
|
-
case wgpu::FeatureName::Subgroups:
|
|
48
|
-
*outUnion = "subgroups";
|
|
49
|
-
break;
|
|
50
|
-
case wgpu::FeatureName::DawnInternalUsages:
|
|
51
|
-
*outUnion = "dawn-internal-usages";
|
|
52
|
-
break;
|
|
53
|
-
case wgpu::FeatureName::DawnMultiPlanarFormats:
|
|
54
|
-
*outUnion = "dawn-multi-planar-formats";
|
|
55
|
-
break;
|
|
56
|
-
case wgpu::FeatureName::DawnNative:
|
|
57
|
-
*outUnion = "dawn-native";
|
|
58
|
-
break;
|
|
59
|
-
case wgpu::FeatureName::ChromiumExperimentalTimestampQueryInsidePasses:
|
|
60
|
-
*outUnion = "chromium-experimental-timestamp-query-inside-passes";
|
|
61
|
-
break;
|
|
62
|
-
case wgpu::FeatureName::ImplicitDeviceSynchronization:
|
|
63
|
-
*outUnion = "implicit-device-synchronization";
|
|
64
|
-
break;
|
|
65
|
-
case wgpu::FeatureName::TransientAttachments:
|
|
66
|
-
*outUnion = "transient-attachments";
|
|
67
|
-
break;
|
|
68
|
-
case wgpu::FeatureName::MSAARenderToSingleSampled:
|
|
69
|
-
*outUnion = "msaa-render-to-single-sampled";
|
|
70
|
-
break;
|
|
71
|
-
case wgpu::FeatureName::DualSourceBlending:
|
|
72
|
-
*outUnion = "dual-source-blending";
|
|
73
|
-
break;
|
|
74
|
-
case wgpu::FeatureName::D3D11MultithreadProtected:
|
|
75
|
-
*outUnion = "d3d11-multithread-protected";
|
|
76
|
-
break;
|
|
77
|
-
case wgpu::FeatureName::ANGLETextureSharing:
|
|
78
|
-
*outUnion = "angle-texture-sharing";
|
|
79
|
-
break;
|
|
80
|
-
case wgpu::FeatureName::ChromiumExperimentalSubgroupMatrix:
|
|
81
|
-
*outUnion = "chromium-experimental-subgroups-matrix";
|
|
82
|
-
break;
|
|
83
|
-
case wgpu::FeatureName::PixelLocalStorageCoherent:
|
|
84
|
-
*outUnion = "pixel-local-storage-coherent";
|
|
85
|
-
break;
|
|
86
|
-
case wgpu::FeatureName::PixelLocalStorageNonCoherent:
|
|
87
|
-
*outUnion = "pixel-local-storage-non-coherent";
|
|
88
|
-
break;
|
|
89
|
-
case wgpu::FeatureName::Unorm16TextureFormats:
|
|
90
|
-
*outUnion = "unorm16-texture-formats";
|
|
91
|
-
break;
|
|
92
|
-
case wgpu::FeatureName::MultiPlanarFormatExtendedUsages:
|
|
93
|
-
*outUnion = "multi-planar-format-extended-usages";
|
|
94
|
-
break;
|
|
95
|
-
case wgpu::FeatureName::MultiPlanarFormatP010:
|
|
96
|
-
*outUnion = "multi-planar-format-p010";
|
|
97
|
-
break;
|
|
98
|
-
case wgpu::FeatureName::HostMappedPointer:
|
|
99
|
-
*outUnion = "host-mapped-pointer";
|
|
100
|
-
break;
|
|
101
|
-
case wgpu::FeatureName::MultiPlanarRenderTargets:
|
|
102
|
-
*outUnion = "multi-planar-render-targets";
|
|
103
|
-
break;
|
|
104
|
-
case wgpu::FeatureName::MultiPlanarFormatNv12a:
|
|
105
|
-
*outUnion = "multi-planar-format-nv12a";
|
|
106
|
-
break;
|
|
107
|
-
case wgpu::FeatureName::FramebufferFetch:
|
|
108
|
-
*outUnion = "framebuffer-fetch";
|
|
109
|
-
break;
|
|
110
|
-
case wgpu::FeatureName::BufferMapExtendedUsages:
|
|
111
|
-
*outUnion = "buffer-map-extended-usages";
|
|
112
|
-
break;
|
|
113
|
-
case wgpu::FeatureName::AdapterPropertiesMemoryHeaps:
|
|
114
|
-
*outUnion = "adapter-properties-memory-heaps";
|
|
115
|
-
break;
|
|
116
|
-
case wgpu::FeatureName::AdapterPropertiesD3D:
|
|
117
|
-
*outUnion = "adapter-properties-d3d";
|
|
118
|
-
break;
|
|
119
|
-
case wgpu::FeatureName::AdapterPropertiesVk:
|
|
120
|
-
*outUnion = "adapter-properties-vk";
|
|
121
|
-
break;
|
|
122
|
-
case wgpu::FeatureName::DawnFormatCapabilities:
|
|
123
|
-
*outUnion = "format-capabilities";
|
|
124
|
-
break;
|
|
125
|
-
case wgpu::FeatureName::DawnDrmFormatCapabilities:
|
|
126
|
-
*outUnion = "drm-format-capabilities";
|
|
127
|
-
break;
|
|
128
|
-
case wgpu::FeatureName::MultiPlanarFormatNv16:
|
|
129
|
-
*outUnion = "multi-planar-format-nv16";
|
|
130
|
-
break;
|
|
131
|
-
case wgpu::FeatureName::MultiPlanarFormatNv24:
|
|
132
|
-
*outUnion = "multi-planar-format-nv24";
|
|
133
|
-
break;
|
|
134
|
-
case wgpu::FeatureName::MultiPlanarFormatP210:
|
|
135
|
-
*outUnion = "multi-planar-format-p210";
|
|
136
|
-
break;
|
|
137
|
-
case wgpu::FeatureName::MultiPlanarFormatP410:
|
|
138
|
-
*outUnion = "multi-planar-format-p410";
|
|
139
|
-
break;
|
|
140
|
-
case wgpu::FeatureName::SharedTextureMemoryVkDedicatedAllocation:
|
|
141
|
-
*outUnion = "shared-texture-memory-vk-dedicated-allocation";
|
|
142
|
-
break;
|
|
143
|
-
case wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer:
|
|
144
|
-
*outUnion = "shared-texture-memory-ahardware-buffer";
|
|
145
|
-
break;
|
|
146
|
-
case wgpu::FeatureName::SharedTextureMemoryDmaBuf:
|
|
147
|
-
*outUnion = "shared-texture-memory-dma-buf";
|
|
148
|
-
break;
|
|
149
|
-
case wgpu::FeatureName::SharedTextureMemoryOpaqueFD:
|
|
150
|
-
*outUnion = "shared-texture-memory-opaque-fd";
|
|
151
|
-
break;
|
|
152
|
-
case wgpu::FeatureName::SharedTextureMemoryZirconHandle:
|
|
153
|
-
*outUnion = "shared-texture-memory-zircon-handle";
|
|
154
|
-
break;
|
|
155
|
-
case wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle:
|
|
156
|
-
*outUnion = "shared-texture-memory-dxgi-shared-handle";
|
|
157
|
-
break;
|
|
158
|
-
case wgpu::FeatureName::SharedTextureMemoryD3D11Texture2D:
|
|
159
|
-
*outUnion = "shared-texture-memory-d3d11-texture2d";
|
|
160
|
-
break;
|
|
161
|
-
case wgpu::FeatureName::SharedTextureMemoryIOSurface:
|
|
162
|
-
*outUnion = "shared-texture-memory-iosurface";
|
|
163
|
-
break;
|
|
164
|
-
case wgpu::FeatureName::SharedTextureMemoryEGLImage:
|
|
165
|
-
*outUnion = "shared-texture-memory-egl-image";
|
|
166
|
-
break;
|
|
167
|
-
case wgpu::FeatureName::SharedFenceVkSemaphoreOpaqueFD:
|
|
168
|
-
*outUnion = "shared-fence-vk-semaphore-opaque-fd";
|
|
169
|
-
break;
|
|
170
|
-
case wgpu::FeatureName::SharedFenceSyncFD:
|
|
171
|
-
*outUnion = "shared-fence-sync-fd";
|
|
172
|
-
break;
|
|
173
|
-
case wgpu::FeatureName::SharedFenceVkSemaphoreZirconHandle:
|
|
174
|
-
*outUnion = "shared-fence-vk-semaphore-zircon-handle";
|
|
175
|
-
break;
|
|
176
|
-
case wgpu::FeatureName::SharedFenceDXGISharedHandle:
|
|
177
|
-
*outUnion = "shared-fence-dxgi-shared-handle";
|
|
178
|
-
break;
|
|
179
|
-
case wgpu::FeatureName::SharedFenceMTLSharedEvent:
|
|
180
|
-
*outUnion = "shared-fence-mtl-shared-event";
|
|
181
|
-
break;
|
|
182
|
-
case wgpu::FeatureName::SharedBufferMemoryD3D12Resource:
|
|
183
|
-
*outUnion = "shared-buffer-memory-d3d12-resource";
|
|
184
|
-
break;
|
|
185
|
-
case wgpu::FeatureName::StaticSamplers:
|
|
186
|
-
*outUnion = "static-samplers";
|
|
187
|
-
break;
|
|
188
|
-
case wgpu::FeatureName::YCbCrVulkanSamplers:
|
|
189
|
-
*outUnion = "ycbcr-vulkan-samplers";
|
|
190
|
-
break;
|
|
191
|
-
case wgpu::FeatureName::OpaqueYCbCrAndroidForExternalTexture:
|
|
192
|
-
*outUnion = "opaque-ycbcr-android-for-external-texture";
|
|
193
|
-
break;
|
|
194
|
-
case wgpu::FeatureName::ShaderModuleCompilationOptions:
|
|
195
|
-
*outUnion = "shader-module-compilation-options";
|
|
196
|
-
break;
|
|
197
|
-
case wgpu::FeatureName::DawnLoadResolveTexture:
|
|
198
|
-
*outUnion = "dawn-load-resolve-texture";
|
|
199
|
-
break;
|
|
200
|
-
default:
|
|
201
|
-
fprintf(stderr, "Unknown feature name %d\n", static_cast<int>(inEnum));
|
|
202
|
-
*outUnion = "";
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
} // namespace rnwgpu
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <string>
|
|
4
|
-
|
|
5
|
-
#include "NativeObject.h"
|
|
6
|
-
|
|
7
|
-
namespace rnwgpu {
|
|
8
|
-
|
|
9
|
-
namespace jsi = facebook::jsi;
|
|
10
|
-
|
|
11
|
-
class GPUInternalError : public NativeObject<GPUInternalError> {
|
|
12
|
-
public:
|
|
13
|
-
static constexpr const char *CLASS_NAME = "GPUInternalError";
|
|
14
|
-
|
|
15
|
-
explicit GPUInternalError(std::string message)
|
|
16
|
-
: NativeObject(CLASS_NAME), _message(std::move(message)) {}
|
|
17
|
-
|
|
18
|
-
public:
|
|
19
|
-
std::string getBrand() { return CLASS_NAME; }
|
|
20
|
-
std::string getMessage() { return _message; }
|
|
21
|
-
|
|
22
|
-
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
23
|
-
installGetter(runtime, prototype, "__brand", &GPUInternalError::getBrand);
|
|
24
|
-
installGetter(runtime, prototype, "message", &GPUInternalError::getMessage);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
private:
|
|
28
|
-
std::string _message;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
} // namespace rnwgpu
|