@shopify/react-native-skia 2.10.0 → 2.11.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/android/CMakeLists.txt +7 -41
  2. package/android/build.gradle +33 -0
  3. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
  4. package/cpp/api/JsiNativeBuffer.h +14 -20
  5. package/cpp/api/JsiSkAnimatedImage.h +13 -16
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +9 -7
  7. package/cpp/api/JsiSkApi.h +94 -90
  8. package/cpp/api/JsiSkCanvas.h +108 -251
  9. package/cpp/api/JsiSkColorFilterFactory.h +45 -63
  10. package/cpp/api/JsiSkContourMeasure.h +19 -29
  11. package/cpp/api/JsiSkContourMeasureIter.h +6 -6
  12. package/cpp/api/JsiSkConverters.h +410 -0
  13. package/cpp/api/JsiSkDataFactory.h +9 -15
  14. package/cpp/api/JsiSkFont.h +99 -180
  15. package/cpp/api/JsiSkFontMgr.h +19 -21
  16. package/cpp/api/JsiSkFontMgrFactory.h +4 -5
  17. package/cpp/api/JsiSkImage.h +66 -66
  18. package/cpp/api/JsiSkImageFactory.h +66 -63
  19. package/cpp/api/JsiSkImageFilterFactory.h +354 -608
  20. package/cpp/api/JsiSkImageInfo.h +10 -13
  21. package/cpp/api/JsiSkMaskFilterFactory.h +8 -11
  22. package/cpp/api/JsiSkMatrix.h +36 -73
  23. package/cpp/api/JsiSkNativeObjects.h +60 -92
  24. package/cpp/api/JsiSkPaint.h +73 -131
  25. package/cpp/api/JsiSkParagraph.h +36 -53
  26. package/cpp/api/JsiSkParagraphBuilder.h +36 -64
  27. package/cpp/api/JsiSkParagraphBuilderFactory.h +11 -16
  28. package/cpp/api/JsiSkPath.h +216 -349
  29. package/cpp/api/JsiSkPathBuilder.h +133 -269
  30. package/cpp/api/JsiSkPathBuilderFactory.h +11 -11
  31. package/cpp/api/JsiSkPathEffectFactory.h +52 -72
  32. package/cpp/api/JsiSkPathFactory.h +129 -195
  33. package/cpp/api/JsiSkPicture.h +12 -18
  34. package/cpp/api/JsiSkPictureRecorder.h +14 -15
  35. package/cpp/api/JsiSkPoint.h +4 -4
  36. package/cpp/api/JsiSkRRect.h +7 -8
  37. package/cpp/api/JsiSkRSXform.h +10 -23
  38. package/cpp/api/JsiSkRect.h +23 -31
  39. package/cpp/api/JsiSkRuntimeEffect.h +67 -83
  40. package/cpp/api/JsiSkRuntimeEffectFactory.h +6 -10
  41. package/cpp/api/JsiSkRuntimeShaderBuilder.h +5 -14
  42. package/cpp/api/JsiSkSVG.h +4 -4
  43. package/cpp/api/JsiSkShaderFactory.h +153 -225
  44. package/cpp/api/JsiSkSkottie.h +104 -126
  45. package/cpp/api/JsiSkSurface.h +11 -14
  46. package/cpp/api/JsiSkSurfaceFactory.h +6 -7
  47. package/cpp/api/JsiSkTextBlobFactory.h +31 -54
  48. package/cpp/api/JsiSkTypeface.h +8 -12
  49. package/cpp/api/JsiSkTypefaceFactory.h +9 -7
  50. package/cpp/api/JsiSkTypefaceFontProvider.h +22 -23
  51. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +5 -6
  52. package/cpp/api/JsiSkVertices.h +6 -8
  53. package/cpp/api/JsiSkiaContext.h +10 -11
  54. package/cpp/api/JsiVideo.h +31 -71
  55. package/cpp/dawn/include/dawn/dawn_proc.h +53 -0
  56. package/cpp/dawn/include/dawn/dawn_proc_table.h +330 -0
  57. package/cpp/dawn/include/dawn/dawn_thread_dispatch_proc.h +47 -0
  58. package/cpp/dawn/include/dawn/dawn_version.h +41 -0
  59. package/cpp/dawn/include/dawn/native/D3D11Backend.h +65 -0
  60. package/cpp/dawn/include/dawn/native/D3D12Backend.h +86 -0
  61. package/cpp/dawn/include/dawn/native/D3DBackend.h +56 -0
  62. package/cpp/dawn/include/dawn/native/DawnNative.h +369 -0
  63. package/cpp/dawn/include/dawn/native/MetalBackend.h +56 -0
  64. package/cpp/dawn/include/dawn/native/NullBackend.h +39 -0
  65. package/cpp/dawn/include/dawn/native/OpenGLBackend.h +89 -0
  66. package/cpp/dawn/include/dawn/native/VulkanBackend.h +183 -0
  67. package/cpp/dawn/include/dawn/native/WebGPUBackend.h +49 -0
  68. package/cpp/dawn/include/dawn/native/dawn_native_export.h +49 -0
  69. package/cpp/dawn/include/dawn/platform/DawnPlatform.h +210 -0
  70. package/cpp/dawn/include/dawn/platform/dawn_platform_export.h +49 -0
  71. package/cpp/dawn/include/dawn/replay/Replay.h +99 -0
  72. package/cpp/dawn/include/dawn/replay/dawn_replay_export.h +49 -0
  73. package/cpp/dawn/include/dawn/webgpu_cpp_print.h +2844 -0
  74. package/cpp/dawn/include/tint/tint.h +90 -0
  75. package/cpp/dawn/include/webgpu/webgpu.h +4987 -0
  76. package/cpp/dawn/include/webgpu/webgpu_cpp.h +10080 -0
  77. package/cpp/dawn/include/webgpu/webgpu_cpp_chained_struct.h +57 -0
  78. package/cpp/dawn/include/webgpu/webgpu_enum_class_bitmasks.h +161 -0
  79. package/cpp/dawn/include/webgpu/webgpu_glfw.h +88 -0
  80. package/cpp/jsi/JSIConverter.h +0 -31
  81. package/cpp/jsi/NativeObject.h +11 -6
  82. package/cpp/rnskia/RNDawnContext.h +18 -2
  83. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  84. package/cpp/rnskia/RNDawnUtils.h +18 -1
  85. package/cpp/rnskia/RNSkManager.cpp +5 -162
  86. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  87. package/cpp/skia/src/gpu/graphite/ContextOptionsPriv.h +45 -0
  88. package/cpp/skia/src/gpu/graphite/ResourceTypes.h +360 -0
  89. package/cpp/skia/src/gpu/graphite/TextureProxyView.h +105 -0
  90. package/lib/commonjs/mock/index.js +0 -1
  91. package/lib/commonjs/mock/index.js.map +1 -1
  92. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  93. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  94. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  95. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  96. package/lib/commonjs/skia/types/index.d.ts +0 -1
  97. package/lib/commonjs/skia/types/index.js +0 -11
  98. package/lib/commonjs/skia/types/index.js.map +1 -1
  99. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  100. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  101. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  102. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  103. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  104. package/lib/commonjs/views/index.d.ts +0 -1
  105. package/lib/commonjs/views/index.js +0 -11
  106. package/lib/commonjs/views/index.js.map +1 -1
  107. package/lib/module/mock/index.js +0 -1
  108. package/lib/module/mock/index.js.map +1 -1
  109. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  110. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  111. package/lib/module/skia/types/Skia.d.ts +5 -15
  112. package/lib/module/skia/types/Skia.js.map +1 -1
  113. package/lib/module/skia/types/index.d.ts +0 -1
  114. package/lib/module/skia/types/index.js +0 -1
  115. package/lib/module/skia/types/index.js.map +1 -1
  116. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  117. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  118. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  119. package/lib/module/skia/web/JsiSkia.js +1 -4
  120. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  121. package/lib/module/views/index.d.ts +0 -1
  122. package/lib/module/views/index.js +0 -1
  123. package/lib/module/views/index.js.map +1 -1
  124. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  125. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  126. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  127. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  128. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  129. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  130. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  131. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  132. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  133. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  134. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  135. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  136. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  137. package/lib/typescript/src/views/index.d.ts +0 -1
  138. package/libs/.graphite +1 -0
  139. package/package.json +8 -9
  140. package/react-native-skia.podspec +38 -4
  141. package/src/mock/index.ts +0 -1
  142. package/src/skia/types/Image/ImageFactory.ts +15 -6
  143. package/src/skia/types/Skia.ts +5 -15
  144. package/src/skia/types/index.ts +0 -1
  145. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  146. package/src/skia/web/JsiSkia.ts +2 -5
  147. package/src/views/index.ts +0 -1
  148. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  149. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  150. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  151. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  152. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  153. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  154. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  155. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  156. package/apple/SkiaPlatformContext.h +0 -20
  157. package/apple/SkiaPlatformContext.mm +0 -21
  158. package/apple/SkiaWebGPUView.mm +0 -81
  159. package/apple/WebGPUMetalView.mm +0 -136
  160. package/cpp/rnwgpu/ArrayBuffer.h +0 -116
  161. package/cpp/rnwgpu/Canvas.h +0 -52
  162. package/cpp/rnwgpu/PlatformContext.h +0 -18
  163. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  164. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  165. package/cpp/rnwgpu/api/Convertors.h +0 -783
  166. package/cpp/rnwgpu/api/External.h +0 -12
  167. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  168. package/cpp/rnwgpu/api/GPU.h +0 -60
  169. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -239
  170. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  171. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  172. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  173. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  174. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  175. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  176. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  177. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  178. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  179. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  180. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  181. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  182. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  183. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  184. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  185. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  186. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  187. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  188. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -613
  189. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  190. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  191. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  192. package/cpp/rnwgpu/api/GPUError.h +0 -35
  193. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  194. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  195. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  196. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  197. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  198. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  199. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  200. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  201. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  202. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  203. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  204. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  205. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  206. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  207. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  208. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  209. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  210. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  211. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  212. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  213. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  214. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  215. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  216. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  217. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  218. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  219. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  220. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  221. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  222. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  223. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  224. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  225. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  226. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  227. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  228. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  229. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  230. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  231. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  232. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  233. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  234. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  235. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  236. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  237. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  238. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  239. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  240. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  241. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  242. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  243. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  244. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  245. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  246. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  247. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  248. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  249. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  250. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  251. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  252. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  253. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  254. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  255. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  256. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  257. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  258. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  259. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  260. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  261. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  262. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  263. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  264. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  265. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  266. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  267. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  268. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  269. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  270. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  271. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  272. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  273. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  274. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  275. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  276. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  277. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  278. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  279. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  280. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  281. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  282. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  283. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  284. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  285. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  286. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  287. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  288. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  289. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  290. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  291. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  292. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  293. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  294. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  295. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -213
  296. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  297. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  298. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  299. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  300. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  301. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  302. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  303. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  304. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  305. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  306. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  307. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  308. package/lib/commonjs/specs/utils.d.ts +0 -1
  309. package/lib/commonjs/specs/utils.js +0 -11
  310. package/lib/commonjs/specs/utils.js.map +0 -1
  311. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  312. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  313. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  314. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  315. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  316. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  317. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  318. package/lib/module/skia/types/WebGPU.js +0 -99
  319. package/lib/module/skia/types/WebGPU.js.map +0 -1
  320. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  321. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  322. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  323. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  324. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  325. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  326. package/lib/module/specs/utils.d.ts +0 -1
  327. package/lib/module/specs/utils.js +0 -5
  328. package/lib/module/specs/utils.js.map +0 -1
  329. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  330. package/lib/module/views/WebGPUCanvas.js +0 -70
  331. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  332. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  333. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  334. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  335. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  336. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  337. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  338. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  339. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  340. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  341. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  342. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  343. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  344. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  345. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  346. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  347. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  348. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  349. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  350. package/lib/typescript/src/specs/utils.d.ts +0 -1
  351. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  352. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  353. package/src/skia/types/WebGPU.ts +0 -226
  354. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  355. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  356. package/src/specs/utils.ts +0 -4
  357. package/src/views/WebGPUCanvas.tsx +0 -125
  358. package/src/views/WebGPUCanvas.web.tsx +0 -36
@@ -1,9 +1,12 @@
1
1
  #pragma once
2
2
 
3
3
  #include <memory>
4
+ #include <optional>
4
5
  #include <string>
5
6
  #include <utility>
7
+ #include <variant>
6
8
 
9
+ #include "JsiSkConverters.h"
7
10
  #include "JsiSkDispatcher.h"
8
11
  #include "JsiSkImageInfo.h"
9
12
  #include "JsiSkMatrix.h"
@@ -148,53 +151,42 @@ public:
148
151
  static constexpr const char *CLASS_NAME = "Image";
149
152
 
150
153
  // TODO-API: Properties?
151
- JSI_HOST_FUNCTION(width) { return static_cast<double>(getObject()->width()); }
152
- JSI_HOST_FUNCTION(height) {
153
- return static_cast<double>(getObject()->height());
154
- }
154
+ double width() { return static_cast<double>(getObject()->width()); }
155
+ double height() { return static_cast<double>(getObject()->height()); }
155
156
 
156
- JSI_HOST_FUNCTION(getImageInfo) {
157
- return JsiSkImageInfo::toValue(runtime, getContext(),
158
- getObject()->imageInfo());
157
+ std::shared_ptr<JsiSkImageInfo> getImageInfo() {
158
+ return std::make_shared<JsiSkImageInfo>(getContext(),
159
+ getObject()->imageInfo());
159
160
  }
160
161
 
161
- JSI_HOST_FUNCTION(makeShaderOptions) {
162
- auto tmx = (SkTileMode)arguments[0].asNumber();
163
- auto tmy = (SkTileMode)arguments[1].asNumber();
164
- auto fm = (SkFilterMode)arguments[2].asNumber();
165
- auto mm = (SkMipmapMode)arguments[3].asNumber();
166
- auto m = count > 4 && !arguments[4].isUndefined()
167
- ? JsiSkMatrix::fromValue(runtime, arguments[4]).get()
168
- : nullptr;
169
- auto shader =
170
- getObject()->makeShader(tmx, tmy, SkSamplingOptions(fm, mm), m);
171
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
172
- getContext(), std::move(shader)));
162
+ std::shared_ptr<JsiSkShader>
163
+ makeShaderOptions(double tmx, double tmy, double fm, double mm,
164
+ std::optional<std::shared_ptr<SkMatrix>> m) {
165
+ auto shader = getObject()->makeShader(
166
+ static_cast<SkTileMode>(tmx), static_cast<SkTileMode>(tmy),
167
+ SkSamplingOptions(static_cast<SkFilterMode>(fm),
168
+ static_cast<SkMipmapMode>(mm)),
169
+ m.has_value() ? m->get() : nullptr);
170
+ return std::make_shared<JsiSkShader>(getContext(), std::move(shader));
173
171
  }
174
172
 
175
- JSI_HOST_FUNCTION(makeShaderCubic) {
176
- auto tmx = (SkTileMode)arguments[0].asNumber();
177
- auto tmy = (SkTileMode)arguments[1].asNumber();
178
- auto B = SkDoubleToScalar(arguments[2].asNumber());
179
- auto C = SkDoubleToScalar(arguments[3].asNumber());
180
- auto m = count > 4 && !arguments[4].isUndefined()
181
- ? JsiSkMatrix::fromValue(runtime, arguments[4]).get()
182
- : nullptr;
183
- auto shader =
184
- getObject()->makeShader(tmx, tmy, SkSamplingOptions({B, C}), m);
185
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
186
- getContext(), std::move(shader)));
173
+ std::shared_ptr<JsiSkShader>
174
+ makeShaderCubic(double tmx, double tmy, double B, double C,
175
+ std::optional<std::shared_ptr<SkMatrix>> m) {
176
+ auto shader = getObject()->makeShader(
177
+ static_cast<SkTileMode>(tmx), static_cast<SkTileMode>(tmy),
178
+ SkSamplingOptions({SkDoubleToScalar(B), SkDoubleToScalar(C)}),
179
+ m.has_value() ? m->get() : nullptr);
180
+ return std::make_shared<JsiSkShader>(getContext(), std::move(shader));
187
181
  }
188
182
 
189
- sk_sp<SkData> encodeImageData(const jsi::Value *arguments, size_t count) {
183
+ sk_sp<SkData> encodeImageData(JsiOptional<double> formatParam,
184
+ JsiOptional<double> qualityParam) {
190
185
  // Get optional parameters
191
- auto format =
192
- count >= 1 ? static_cast<SkEncodedImageFormat>(arguments[0].asNumber())
193
- : SkEncodedImageFormat::kPNG;
194
-
195
- auto quality = (count >= 2 && arguments[1].isNumber())
196
- ? arguments[1].asNumber()
197
- : 100.0;
186
+ auto format = formatParam.has_value()
187
+ ? static_cast<SkEncodedImageFormat>(*formatParam)
188
+ : SkEncodedImageFormat::kPNG;
189
+ auto quality = qualityParam.has_value() ? *qualityParam : 100.0;
198
190
  auto image = getObject();
199
191
  #if defined(SK_GRAPHITE)
200
192
  image = DawnContext::getInstance().MakeRasterImage(image);
@@ -238,8 +230,17 @@ public:
238
230
  return data;
239
231
  }
240
232
 
233
+ // Stays raw: constructs a Uint8Array result.
241
234
  JSI_HOST_FUNCTION(encodeToBytes) {
242
- auto data = encodeImageData(arguments, count);
235
+ JsiOptional<double> format =
236
+ count >= 1 && !arguments[0].isUndefined() && !arguments[0].isNull()
237
+ ? JsiOptional<double>(arguments[0].asNumber())
238
+ : JsiOptional<double>();
239
+ JsiOptional<double> quality = count >= 2 && arguments[1].isNumber()
240
+ ? JsiOptional<double>(
241
+ arguments[1].asNumber())
242
+ : JsiOptional<double>();
243
+ auto data = encodeImageData(format, quality);
243
244
  if (!data) {
244
245
  return jsi::Value::null();
245
246
  }
@@ -261,17 +262,18 @@ public:
261
262
  return array;
262
263
  }
263
264
 
264
- JSI_HOST_FUNCTION(encodeToBase64) {
265
- auto data = encodeImageData(arguments, count);
265
+ std::variant<std::nullptr_t, std::string>
266
+ encodeToBase64(JsiOptional<double> format, JsiOptional<double> quality) {
267
+ auto data = encodeImageData(format, quality);
266
268
  if (!data) {
267
- return jsi::Value::null();
269
+ return nullptr;
268
270
  }
269
271
 
270
272
  auto len = Base64::Encode(data->bytes(), data->size(), nullptr);
271
273
  auto buffer = std::string(len, 0);
272
274
  Base64::Encode(data->bytes(), data->size(),
273
275
  reinterpret_cast<void *>(&buffer[0]));
274
- return jsi::String::createFromAscii(runtime, buffer);
276
+ return buffer;
275
277
  }
276
278
 
277
279
  JSI_HOST_FUNCTION(readPixels) {
@@ -328,22 +330,22 @@ public:
328
330
  return dest;
329
331
  }
330
332
 
331
- JSI_HOST_FUNCTION(makeNonTextureImage) {
333
+ std::variant<std::nullptr_t, std::shared_ptr<JsiSkImage>>
334
+ makeNonTextureImage() {
332
335
  #if defined(SK_GRAPHITE)
333
336
  auto rasterImage = DawnContext::getInstance().MakeRasterImage(getObject());
334
337
  #else
335
338
  auto grContext = getContext()->getDirectContext();
336
339
  auto image = getObject();
337
340
  if (!grContext) {
338
- throw jsi::JSError(runtime, "No GPU context available.");
341
+ throw std::runtime_error("No GPU context available.");
339
342
  }
340
343
  auto rasterImage = image->makeRasterImage(grContext);
341
344
  #endif
342
345
  if (!rasterImage) {
343
- return jsi::Value::null();
346
+ return nullptr;
344
347
  }
345
- return makeJsiObject(runtime, std::make_shared<JsiSkImage>(
346
- getContext(), std::move(rasterImage)));
348
+ return std::make_shared<JsiSkImage>(getContext(), std::move(rasterImage));
347
349
  }
348
350
 
349
351
  JSI_HOST_FUNCTION(getNativeTextureUnstable) {
@@ -355,9 +357,7 @@ public:
355
357
  return JsiTextureInfo::toValue(runtime, texInfo);
356
358
  }
357
359
 
358
- JSI_HOST_FUNCTION(isTextureBacked) {
359
- return jsi::Value(getObject()->isTextureBacked());
360
- }
360
+ bool isTextureBacked() { return getObject()->isTextureBacked(); }
361
361
 
362
362
  /**
363
363
  Returns the underlying object from a host object of this type
@@ -369,26 +369,26 @@ public:
369
369
 
370
370
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
371
371
  installCommon(runtime, prototype);
372
- installHostMethod(runtime, prototype, "width", &JsiSkImage::width);
373
- installHostMethod(runtime, prototype, "height", &JsiSkImage::height);
374
- installHostMethod(runtime, prototype, "getImageInfo",
375
- &JsiSkImage::getImageInfo);
376
- installHostMethod(runtime, prototype, "makeShaderOptions",
377
- &JsiSkImage::makeShaderOptions);
378
- installHostMethod(runtime, prototype, "makeShaderCubic",
379
- &JsiSkImage::makeShaderCubic);
372
+ installMethod(runtime, prototype, "width", &JsiSkImage::width);
373
+ installMethod(runtime, prototype, "height", &JsiSkImage::height);
374
+ installMethod(runtime, prototype, "getImageInfo",
375
+ &JsiSkImage::getImageInfo);
376
+ installMethod(runtime, prototype, "makeShaderOptions",
377
+ &JsiSkImage::makeShaderOptions);
378
+ installMethod(runtime, prototype, "makeShaderCubic",
379
+ &JsiSkImage::makeShaderCubic);
380
380
  installHostMethod(runtime, prototype, "encodeToBytes",
381
381
  &JsiSkImage::encodeToBytes);
382
- installHostMethod(runtime, prototype, "encodeToBase64",
383
- &JsiSkImage::encodeToBase64);
382
+ installMethod(runtime, prototype, "encodeToBase64",
383
+ &JsiSkImage::encodeToBase64);
384
384
  installHostMethod(runtime, prototype, "readPixels",
385
385
  &JsiSkImage::readPixels);
386
- installHostMethod(runtime, prototype, "makeNonTextureImage",
387
- &JsiSkImage::makeNonTextureImage);
386
+ installMethod(runtime, prototype, "makeNonTextureImage",
387
+ &JsiSkImage::makeNonTextureImage);
388
388
  installHostMethod(runtime, prototype, "getNativeTextureUnstable",
389
389
  &JsiSkImage::getNativeTextureUnstable);
390
- installHostMethod(runtime, prototype, "isTextureBacked",
391
- &JsiSkImage::isTextureBacked);
390
+ installMethod(runtime, prototype, "isTextureBacked",
391
+ &JsiSkImage::isTextureBacked);
392
392
  }
393
393
 
394
394
  JsiSkImage(std::shared_ptr<RNSkPlatformContext> context,
@@ -2,9 +2,11 @@
2
2
 
3
3
  #include <memory>
4
4
  #include <utility>
5
+ #include <variant>
5
6
 
6
7
  #include <jsi/jsi.h>
7
8
 
9
+ #include "JsiSkConverters.h"
8
10
  #include "JsiSkData.h"
9
11
  #include "JsiSkImage.h"
10
12
  #include "JsiSkImageInfo.h"
@@ -13,7 +15,6 @@
13
15
 
14
16
  #ifdef SK_GRAPHITE
15
17
  #include "rnskia/RNDawnContext.h"
16
- #include "rnwgpu/api/GPUTexture.h"
17
18
  #endif
18
19
 
19
20
  namespace RNSkia {
@@ -24,43 +25,35 @@ class JsiSkImageFactory : public JsiSkNativeObject<JsiSkImageFactory> {
24
25
  public:
25
26
  static constexpr const char *CLASS_NAME = "ImageFactory";
26
27
 
27
- JSI_HOST_FUNCTION(MakeNull) {
28
- return makeJsiObject(runtime,
29
- std::make_shared<JsiSkImage>(getContext(), nullptr));
28
+ std::shared_ptr<JsiSkImage> MakeNull() {
29
+ return std::make_shared<JsiSkImage>(getContext(), nullptr);
30
30
  }
31
31
 
32
- JSI_HOST_FUNCTION(MakeImageFromEncoded) {
33
- auto data = JsiSkData::fromValue(runtime, arguments[0]);
32
+ std::variant<std::nullptr_t, std::shared_ptr<JsiSkImage>>
33
+ MakeImageFromEncoded(sk_sp<SkData> data) {
34
34
  auto image = SkImages::DeferredFromEncodedData(data);
35
35
  if (image == nullptr) {
36
- return jsi::Value::null();
36
+ return nullptr;
37
37
  }
38
- return makeJsiObject(
39
- runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
38
+ return std::make_shared<JsiSkImage>(getContext(), std::move(image));
40
39
  }
41
40
 
42
- JSI_HOST_FUNCTION(MakeImageFromNativeBuffer) {
43
- jsi::BigInt pointer = arguments[0].asBigInt(runtime);
44
- const uintptr_t nativeBufferPointer = pointer.asUint64(runtime);
45
- void *rawPointer = reinterpret_cast<void *>(nativeBufferPointer);
41
+ std::shared_ptr<JsiSkImage> MakeImageFromNativeBuffer(void *rawPointer) {
46
42
  auto image = getContext()->makeImageFromNativeBuffer(rawPointer);
47
43
  if (image == nullptr) {
48
44
  throw std::runtime_error("Failed to convert NativeBuffer to SkImage!");
49
45
  }
50
- return makeJsiObject(
51
- runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
46
+ return std::make_shared<JsiSkImage>(getContext(), std::move(image));
52
47
  }
53
48
 
54
- JSI_HOST_FUNCTION(MakeImage) {
55
- auto imageInfo = JsiSkImageInfo::fromValue(runtime, arguments[0]);
56
- auto pixelData = JsiSkData::fromValue(runtime, arguments[1]);
57
- auto bytesPerRow = arguments[2].asNumber();
49
+ std::variant<std::nullptr_t, std::shared_ptr<JsiSkImage>>
50
+ MakeImage(std::shared_ptr<SkImageInfo> imageInfo, sk_sp<SkData> pixelData,
51
+ double bytesPerRow) {
58
52
  auto image = SkImages::RasterFromData(*imageInfo, pixelData, bytesPerRow);
59
53
  if (image == nullptr) {
60
- return jsi::Value::null();
54
+ return nullptr;
61
55
  }
62
- return makeJsiObject(
63
- runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
56
+ return std::make_shared<JsiSkImage>(getContext(), std::move(image));
64
57
  }
65
58
 
66
59
  JSI_HOST_FUNCTION(MakeImageFromViewTag) {
@@ -109,84 +102,94 @@ public:
109
102
  runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
110
103
  }
111
104
 
112
- JSI_HOST_FUNCTION(MakeImageFromTexture) {
105
+ // Pointer-based texture interop with react-native-webgpu. The GPUTexture
106
+ // JS objects live in react-native-webgpu, so textures cross the package
107
+ // boundary as raw WGPUTexture pointers (BigInt), exactly like the device
108
+ // handoff (Skia.getNativeDevice / importDevice). Only sound on the shared
109
+ // device: both packages link one Dawn and share one wgpu::Instance.
110
+
111
+ JSI_HOST_FUNCTION(MakeImageFromNativeTexture) {
113
112
  #ifdef SK_GRAPHITE
114
- if (count < 1 || !arguments[0].isObject()) {
115
- throw std::runtime_error(
116
- "MakeImageFromTexture requires a GPUTexture argument");
113
+ if (count < 1 || !arguments[0].isBigInt()) {
114
+ throw std::runtime_error("MakeImageFromNativeTexture requires a "
115
+ "WGPUTexture pointer (BigInt), e.g. "
116
+ "texture.nativePointer");
117
117
  }
118
- auto obj = arguments[0].asObject(runtime);
119
- auto gpuTexture = obj.getNativeState<rnwgpu::GPUTexture>(runtime);
120
- if (!gpuTexture) {
121
- throw std::runtime_error("Invalid GPUTexture object");
118
+ auto raw = reinterpret_cast<WGPUTexture>(
119
+ arguments[0].asBigInt(runtime).asUint64(runtime));
120
+ if (raw == nullptr) {
121
+ throw std::runtime_error(
122
+ "MakeImageFromNativeTexture: pointer must be non-null");
122
123
  }
123
-
124
- wgpu::Texture texture = gpuTexture->get();
125
- int width = static_cast<int>(gpuTexture->getWidth());
126
- int height = static_cast<int>(gpuTexture->getHeight());
127
- wgpu::TextureFormat format = gpuTexture->getFormat();
128
-
124
+ // Borrow: AddRef so our wgpu::Texture holds its own reference; the
125
+ // wrapped SkImage retains the texture for its lifetime (see
126
+ // DawnContext::MakeImageFromTexture) and the caller keeps ownership of
127
+ // the JS GPUTexture.
128
+ wgpuTextureAddRef(raw);
129
+ wgpu::Texture texture = wgpu::Texture::Acquire(raw);
129
130
  auto &dawnContext = DawnContext::getInstance();
130
- auto image =
131
- dawnContext.MakeImageFromTexture(texture, width, height, format);
131
+ auto image = dawnContext.MakeImageFromTexture(
132
+ texture, static_cast<int>(texture.GetWidth()),
133
+ static_cast<int>(texture.GetHeight()), texture.GetFormat());
132
134
  if (image == nullptr) {
133
- throw std::runtime_error("Failed to create SkImage from GPUTexture!");
135
+ throw std::runtime_error(
136
+ "MakeImageFromNativeTexture: failed to wrap the texture");
134
137
  }
135
138
  return makeJsiObject(
136
139
  runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
137
140
  #else
138
141
  throw std::runtime_error(
139
- "MakeImageFromTexture is only available with the Graphite backend. "
140
- "Rebuild with SK_GRAPHITE enabled.");
142
+ "MakeImageFromNativeTexture is only available with the Graphite "
143
+ "backend. Rebuild with SK_GRAPHITE enabled.");
141
144
  #endif
142
145
  }
143
146
 
144
- JSI_HOST_FUNCTION(MakeTextureFromImage) {
147
+ JSI_HOST_FUNCTION(MakeNativeTextureFromImage) {
145
148
  #ifdef SK_GRAPHITE
146
149
  if (count < 1) {
147
150
  throw std::runtime_error(
148
- "MakeTextureFromImage requires an SkImage argument");
151
+ "MakeNativeTextureFromImage requires an SkImage argument");
149
152
  }
150
153
  auto image = JsiSkImage::fromValue(runtime, arguments[0]);
151
154
  if (!image) {
152
155
  throw std::runtime_error("Invalid SkImage object");
153
156
  }
154
-
155
157
  auto &dawnContext = DawnContext::getInstance();
156
158
  wgpu::Texture texture = dawnContext.MakeTextureFromImage(image);
157
159
  if (!texture) {
158
- throw std::runtime_error("Failed to create GPUTexture from SkImage!");
160
+ throw std::runtime_error(
161
+ "MakeNativeTextureFromImage: failed to create the texture");
159
162
  }
160
-
161
- auto gpuTexture =
162
- std::make_shared<rnwgpu::GPUTexture>(texture, "SkImage Texture");
163
- return rnwgpu::GPUTexture::create(runtime, gpuTexture);
163
+ // Transfer ownership: the returned pointer carries one reference and must
164
+ // be adopted exactly once (react-native-webgpu's adoptTexture()), which
165
+ // releases it when the JS GPUTexture is destroyed.
166
+ return jsi::BigInt::fromUint64(
167
+ runtime, reinterpret_cast<uint64_t>(texture.MoveToCHandle()));
164
168
  #else
165
169
  throw std::runtime_error(
166
- "MakeTextureFromImage is only available with the Graphite backend. "
167
- "Rebuild with SK_GRAPHITE enabled.");
170
+ "MakeNativeTextureFromImage is only available with the Graphite "
171
+ "backend. Rebuild with SK_GRAPHITE enabled.");
168
172
  #endif
169
173
  }
170
174
 
171
175
  size_t getMemoryPressure() override { return 1024; }
172
176
 
173
177
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
174
- installHostMethod(runtime, prototype, "MakeImageFromEncoded",
175
- &JsiSkImageFactory::MakeImageFromEncoded);
178
+ installMethod(runtime, prototype, "MakeImageFromEncoded",
179
+ &JsiSkImageFactory::MakeImageFromEncoded);
176
180
  installHostMethod(runtime, prototype, "MakeImageFromViewTag",
177
181
  &JsiSkImageFactory::MakeImageFromViewTag);
178
- installHostMethod(runtime, prototype, "MakeImageFromNativeBuffer",
179
- &JsiSkImageFactory::MakeImageFromNativeBuffer);
182
+ installMethod(runtime, prototype, "MakeImageFromNativeBuffer",
183
+ &JsiSkImageFactory::MakeImageFromNativeBuffer);
180
184
  installHostMethod(runtime, prototype, "MakeImageFromNativeTextureUnstable",
181
185
  &JsiSkImageFactory::MakeImageFromNativeTextureUnstable);
182
- installHostMethod(runtime, prototype, "MakeImage",
183
- &JsiSkImageFactory::MakeImage);
184
- installHostMethod(runtime, prototype, "MakeNull",
185
- &JsiSkImageFactory::MakeNull);
186
- installHostMethod(runtime, prototype, "MakeImageFromTexture",
187
- &JsiSkImageFactory::MakeImageFromTexture);
188
- installHostMethod(runtime, prototype, "MakeTextureFromImage",
189
- &JsiSkImageFactory::MakeTextureFromImage);
186
+ installMethod(runtime, prototype, "MakeImage",
187
+ &JsiSkImageFactory::MakeImage);
188
+ installMethod(runtime, prototype, "MakeNull", &JsiSkImageFactory::MakeNull);
189
+ installHostMethod(runtime, prototype, "MakeImageFromNativeTexture",
190
+ &JsiSkImageFactory::MakeImageFromNativeTexture);
191
+ installHostMethod(runtime, prototype, "MakeNativeTextureFromImage",
192
+ &JsiSkImageFactory::MakeNativeTextureFromImage);
190
193
  }
191
194
 
192
195
  explicit JsiSkImageFactory(std::shared_ptr<RNSkPlatformContext> context)