@shopify/react-native-skia 2.9.1 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/android/CMakeLists.txt +8 -46
  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 +23 -24
  5. package/cpp/api/JsiSkAnimatedImage.h +24 -25
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +18 -17
  7. package/cpp/api/JsiSkApi.h +254 -96
  8. package/cpp/api/JsiSkCanvas.h +141 -266
  9. package/cpp/api/JsiSkColor.h +7 -5
  10. package/cpp/api/JsiSkColorFilter.h +15 -8
  11. package/cpp/api/JsiSkColorFilterFactory.h +49 -67
  12. package/cpp/api/JsiSkContourMeasure.h +31 -38
  13. package/cpp/api/JsiSkContourMeasureIter.h +20 -23
  14. package/cpp/api/JsiSkConverters.h +410 -0
  15. package/cpp/api/JsiSkData.h +13 -7
  16. package/cpp/api/JsiSkDataFactory.h +27 -32
  17. package/cpp/api/JsiSkFont.h +123 -192
  18. package/cpp/api/JsiSkFontMgr.h +33 -26
  19. package/cpp/api/JsiSkFontMgrFactory.h +12 -11
  20. package/cpp/api/JsiSkFontStyle.h +14 -12
  21. package/cpp/api/JsiSkImage.h +90 -79
  22. package/cpp/api/JsiSkImageFactory.h +93 -95
  23. package/cpp/api/JsiSkImageFilter.h +21 -11
  24. package/cpp/api/JsiSkImageFilterFactory.h +375 -629
  25. package/cpp/api/JsiSkImageInfo.h +25 -25
  26. package/cpp/api/JsiSkMaskFilter.h +21 -11
  27. package/cpp/api/JsiSkMaskFilterFactory.h +17 -17
  28. package/cpp/api/JsiSkMatrix.h +51 -88
  29. package/cpp/api/JsiSkNativeObjects.h +387 -0
  30. package/cpp/api/JsiSkPaint.h +104 -142
  31. package/cpp/api/JsiSkParagraph.h +54 -64
  32. package/cpp/api/JsiSkParagraphBuilder.h +43 -68
  33. package/cpp/api/JsiSkParagraphBuilderFactory.h +20 -24
  34. package/cpp/api/JsiSkPath.h +242 -350
  35. package/cpp/api/JsiSkPathBuilder.h +153 -273
  36. package/cpp/api/JsiSkPathBuilderFactory.h +19 -20
  37. package/cpp/api/JsiSkPathEffect.h +21 -11
  38. package/cpp/api/JsiSkPathEffectFactory.h +61 -80
  39. package/cpp/api/JsiSkPathFactory.h +148 -238
  40. package/cpp/api/JsiSkPicture.h +32 -27
  41. package/cpp/api/JsiSkPictureFactory.h +21 -26
  42. package/cpp/api/JsiSkPictureRecorder.h +27 -29
  43. package/cpp/api/JsiSkPoint.h +20 -23
  44. package/cpp/api/JsiSkRRect.h +24 -32
  45. package/cpp/api/JsiSkRSXform.h +31 -48
  46. package/cpp/api/JsiSkRect.h +40 -50
  47. package/cpp/api/JsiSkRuntimeEffect.h +85 -92
  48. package/cpp/api/JsiSkRuntimeEffectFactory.h +14 -18
  49. package/cpp/api/JsiSkRuntimeShaderBuilder.h +28 -30
  50. package/cpp/api/JsiSkSVG.h +15 -15
  51. package/cpp/api/JsiSkSVGFactory.h +17 -20
  52. package/cpp/api/JsiSkShader.h +15 -8
  53. package/cpp/api/JsiSkShaderFactory.h +159 -238
  54. package/cpp/api/JsiSkSkottie.h +131 -143
  55. package/cpp/api/JsiSkSurface.h +29 -32
  56. package/cpp/api/JsiSkSurfaceFactory.h +18 -20
  57. package/cpp/api/JsiSkTextBlob.h +15 -8
  58. package/cpp/api/JsiSkTextBlobFactory.h +40 -66
  59. package/cpp/api/JsiSkTypeface.h +25 -22
  60. package/cpp/api/JsiSkTypefaceFactory.h +17 -15
  61. package/cpp/api/JsiSkTypefaceFontProvider.h +43 -39
  62. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +13 -12
  63. package/cpp/api/JsiSkVertices.h +23 -22
  64. package/cpp/api/JsiSkiaContext.h +22 -23
  65. package/cpp/api/JsiSkottieFactory.h +16 -17
  66. package/cpp/api/JsiVideo.h +43 -81
  67. package/cpp/api/recorder/Convertor.h +31 -61
  68. package/cpp/api/recorder/DataTypes.h +8 -16
  69. package/cpp/api/recorder/JsiRecorder.h +83 -55
  70. package/cpp/api/recorder/RNRecorder.h +1 -1
  71. package/cpp/jsi/BoxedNativeObject.h +146 -0
  72. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  73. package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -31
  74. package/cpp/{jsi2 → jsi}/NativeObject.h +131 -152
  75. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  76. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  77. package/cpp/jsi/ViewProperty.h +5 -11
  78. package/cpp/rnskia/RNDawnContext.h +18 -2
  79. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  80. package/cpp/rnskia/RNDawnUtils.h +18 -1
  81. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  82. package/cpp/rnskia/RNSkManager.cpp +9 -168
  83. package/cpp/rnskia/RNSkPictureView.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  85. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  86. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  87. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  88. package/lib/commonjs/mock/index.js +0 -1
  89. package/lib/commonjs/mock/index.js.map +1 -1
  90. package/lib/commonjs/skia/NativeSetup.js +4 -0
  91. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  92. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  93. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  94. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  95. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  96. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  97. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  98. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  99. package/lib/commonjs/skia/types/index.d.ts +0 -1
  100. package/lib/commonjs/skia/types/index.js +0 -11
  101. package/lib/commonjs/skia/types/index.js.map +1 -1
  102. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  103. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  104. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  105. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  106. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  107. package/lib/commonjs/sksg/Container.native.js +20 -1
  108. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  109. package/lib/commonjs/views/index.d.ts +0 -1
  110. package/lib/commonjs/views/index.js +0 -11
  111. package/lib/commonjs/views/index.js.map +1 -1
  112. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  113. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  114. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  115. package/lib/module/mock/index.js +0 -1
  116. package/lib/module/mock/index.js.map +1 -1
  117. package/lib/module/skia/NativeSetup.js +4 -0
  118. package/lib/module/skia/NativeSetup.js.map +1 -1
  119. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  120. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  121. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  122. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  123. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  124. package/lib/module/skia/types/Skia.d.ts +5 -15
  125. package/lib/module/skia/types/Skia.js.map +1 -1
  126. package/lib/module/skia/types/index.d.ts +0 -1
  127. package/lib/module/skia/types/index.js +0 -1
  128. package/lib/module/skia/types/index.js.map +1 -1
  129. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  130. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  131. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  132. package/lib/module/skia/web/JsiSkia.js +1 -4
  133. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  134. package/lib/module/sksg/Container.native.js +21 -2
  135. package/lib/module/sksg/Container.native.js.map +1 -1
  136. package/lib/module/views/index.d.ts +0 -1
  137. package/lib/module/views/index.js +0 -1
  138. package/lib/module/views/index.js.map +1 -1
  139. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  140. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  141. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  142. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  143. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  144. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  145. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  146. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  147. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  148. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  149. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  150. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  151. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  152. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  153. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  154. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  155. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  156. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  157. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  158. package/lib/typescript/src/views/index.d.ts +0 -1
  159. package/package.json +8 -5
  160. package/react-native-skia.podspec +38 -5
  161. package/src/external/reanimated/renderHelpers.ts +30 -0
  162. package/src/mock/index.ts +0 -1
  163. package/src/skia/NativeSetup.ts +5 -0
  164. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  165. package/src/skia/types/Image/ImageFactory.ts +15 -6
  166. package/src/skia/types/Skia.ts +5 -15
  167. package/src/skia/types/index.ts +0 -1
  168. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  169. package/src/skia/web/JsiSkia.ts +2 -5
  170. package/src/sksg/Container.native.ts +40 -2
  171. package/src/views/index.ts +0 -1
  172. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  173. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  174. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  175. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  176. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  177. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  178. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  179. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  180. package/apple/SkiaPlatformContext.h +0 -20
  181. package/apple/SkiaPlatformContext.mm +0 -21
  182. package/apple/SkiaWebGPUView.mm +0 -81
  183. package/apple/WebGPUMetalView.mm +0 -136
  184. package/cpp/api/JsiSkHostObjects.h +0 -257
  185. package/cpp/jsi/JsiHostObject.cpp +0 -137
  186. package/cpp/jsi/JsiHostObject.h +0 -385
  187. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  188. package/cpp/rnwgpu/Canvas.h +0 -50
  189. package/cpp/rnwgpu/PlatformContext.h +0 -18
  190. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  191. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  192. package/cpp/rnwgpu/api/Convertors.h +0 -783
  193. package/cpp/rnwgpu/api/External.h +0 -12
  194. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  195. package/cpp/rnwgpu/api/GPU.h +0 -60
  196. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -240
  197. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  198. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  199. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  200. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  201. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  202. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  203. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  204. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  205. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  206. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  207. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  208. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  209. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  210. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  211. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  212. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  213. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  214. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  215. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -614
  216. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  217. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  218. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  219. package/cpp/rnwgpu/api/GPUError.h +0 -35
  220. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  221. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  222. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  223. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  224. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  225. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  226. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  227. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  228. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  229. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  230. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  231. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  232. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  233. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  234. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  235. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  236. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  237. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  238. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  239. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  240. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  241. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  242. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  243. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  244. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  245. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  246. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  247. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  248. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  249. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  250. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  251. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  252. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  253. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  254. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  255. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  256. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  257. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  258. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  259. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  260. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  261. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  262. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  263. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  264. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  265. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  266. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  267. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  268. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  269. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  270. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  271. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  272. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  273. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  274. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  275. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  276. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  277. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  278. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  279. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  280. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  281. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  282. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  283. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  284. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  285. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  286. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  287. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  288. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  289. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  290. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  291. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  292. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  293. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  294. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  295. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  296. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  297. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  298. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  299. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  300. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  301. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  302. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  303. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  304. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  305. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  306. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  307. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  308. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  309. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  310. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  311. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  312. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  313. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  314. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  315. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  316. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  317. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  318. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  319. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  320. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  321. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  322. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -214
  323. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  324. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  325. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  326. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  327. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  328. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  329. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  330. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  331. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  332. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  333. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  334. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  335. package/lib/commonjs/specs/utils.d.ts +0 -1
  336. package/lib/commonjs/specs/utils.js +0 -11
  337. package/lib/commonjs/specs/utils.js.map +0 -1
  338. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  339. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  340. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  341. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  342. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  343. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  344. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  345. package/lib/module/skia/types/WebGPU.js +0 -99
  346. package/lib/module/skia/types/WebGPU.js.map +0 -1
  347. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  348. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  349. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  350. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  351. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  352. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  353. package/lib/module/specs/utils.d.ts +0 -1
  354. package/lib/module/specs/utils.js +0 -5
  355. package/lib/module/specs/utils.js.map +0 -1
  356. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  357. package/lib/module/views/WebGPUCanvas.js +0 -70
  358. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  359. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  360. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  361. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  362. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  363. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  364. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  365. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  366. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  367. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  368. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  369. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  370. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  371. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  372. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  373. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  374. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  375. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  376. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  377. package/lib/typescript/src/specs/utils.d.ts +0 -1
  378. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  379. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  380. package/src/skia/types/WebGPU.ts +0 -226
  381. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  382. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  383. package/src/specs/utils.ts +0 -4
  384. package/src/views/WebGPUCanvas.tsx +0 -125
  385. package/src/views/WebGPUCanvas.web.tsx +0 -36
  386. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  387. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -1,112 +0,0 @@
1
- #include <android/native_window_jni.h>
2
- #include <jni.h>
3
-
4
- #ifdef SK_GRAPHITE
5
- #include <memory>
6
- #include <utility>
7
-
8
- #include <ReactCommon/CallInvoker.h>
9
-
10
- #include "rnskia/RNDawnContext.h"
11
- #include "rnwgpu/SurfaceRegistry.h"
12
- #include "rnwgpu/async/RuntimeContext.h"
13
- #include "webgpu/webgpu_cpp.h"
14
-
15
- namespace {
16
- // Applies a surface attach latched by the platform UI thread (see
17
- // SurfaceInfo::applyPendingAttach) from the JS thread. Surface attaches are
18
- // normally adopted at the next frame boundary by whichever thread renders;
19
- // this flush covers contexts that are not actively rendering (static
20
- // content), so the last offscreen frame still makes it on screen. Mirrors
21
- // react-native-webgpu's RNWebGPUManager::flushPendingSurfaceTransition.
22
- void flushPendingSurfaceTransition(std::shared_ptr<rnwgpu::SurfaceInfo> info) {
23
- if (info == nullptr) {
24
- return;
25
- }
26
- auto invoker = rnwgpu::async::RuntimeContext::mainCallInvoker();
27
- if (invoker == nullptr) {
28
- return;
29
- }
30
- invoker->invokeAsync(
31
- [info = std::move(info)] { info->applyPendingAttach(); });
32
- }
33
- } // namespace
34
- #endif
35
-
36
- extern "C" JNIEXPORT void JNICALL
37
- Java_com_shopify_reactnative_skia_WebGPUView_onSurfaceCreate(
38
- JNIEnv *env, jobject thiz, jobject jSurface, jint contextId, jfloat width,
39
- jfloat height) {
40
- #ifdef SK_GRAPHITE
41
- // ANativeWindow_fromSurface acquires a reference; SurfaceInfo releases it
42
- // (via the releaser below) once it is done with the window.
43
- auto window = ANativeWindow_fromSurface(env, jSurface);
44
- if (window == nullptr) {
45
- return;
46
- }
47
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
48
- auto &dawnContext = RNSkia::DawnContext::getInstance();
49
- auto gpu = dawnContext.getWGPUInstance();
50
-
51
- // Create surface from ANativeWindow
52
- wgpu::SurfaceSourceAndroidNativeWindow androidSurfaceDesc;
53
- androidSurfaceDesc.window = window;
54
- wgpu::SurfaceDescriptor surfaceDescriptor;
55
- surfaceDescriptor.nextInChain = &androidSurfaceDesc;
56
- auto surface = gpu.CreateSurface(&surfaceDescriptor);
57
-
58
- // Find-or-create + attach runs atomically under the registry lock so a
59
- // concurrent destroyContext cannot orphan this surface.
60
- auto info = registry.attachSurface(
61
- contextId, gpu, static_cast<int>(width), static_cast<int>(height), window,
62
- surface, [](void *nativeSurface) {
63
- ANativeWindow_release(static_cast<ANativeWindow *>(nativeSurface));
64
- });
65
- // The attach is adopted at the next frame boundary by the rendering thread;
66
- // schedule a flush so contexts that are not currently rendering still pick
67
- // it up (and present their last offscreen frame).
68
- flushPendingSurfaceTransition(info);
69
- #endif
70
- }
71
-
72
- extern "C" JNIEXPORT void JNICALL
73
- Java_com_shopify_reactnative_skia_WebGPUView_onSurfaceChanged(
74
- JNIEnv *env, jobject thiz, jobject surface, jint contextId, jfloat width,
75
- jfloat height) {
76
- #ifdef SK_GRAPHITE
77
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
78
- auto surfaceInfo = registry.getSurfaceInfo(contextId);
79
- if (surfaceInfo) {
80
- surfaceInfo->resize(static_cast<int>(width), static_cast<int>(height));
81
- }
82
- #endif
83
- }
84
-
85
- extern "C" JNIEXPORT void JNICALL
86
- Java_com_shopify_reactnative_skia_WebGPUView_switchToOffscreenSurface(
87
- JNIEnv *env, jobject thiz, jint contextId) {
88
- #ifdef SK_GRAPHITE
89
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
90
- auto surfaceInfo = registry.getSurfaceInfo(contextId);
91
- if (surfaceInfo) {
92
- surfaceInfo->switchToOffscreen();
93
- }
94
- #endif
95
- }
96
-
97
- extern "C" JNIEXPORT void JNICALL
98
- Java_com_shopify_reactnative_skia_WebGPUView_onViewDestroyed(JNIEnv *env,
99
- jobject thiz,
100
- jint contextId) {
101
- #ifdef SK_GRAPHITE
102
- // The view dies with its Canvas (contextIds are never reused), so view
103
- // teardown retires the registry entry. The JS-side cleanup
104
- // (RNWebGPU.destroyContext) only handles entries that never had a native
105
- // surface; see RNWebGPU::destroyContext for the ownership split.
106
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
107
- if (auto info = registry.getSurfaceInfo(contextId)) {
108
- info->detachSurface();
109
- }
110
- registry.removeSurfaceInfo(contextId);
111
- #endif
112
- }
@@ -1,26 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef SK_GRAPHITE
4
-
5
- #include "rnwgpu/PlatformContext.h"
6
-
7
- namespace rnwgpu {
8
-
9
- class SkiaPlatformContext : public PlatformContext {
10
- public:
11
- SkiaPlatformContext() = default;
12
- ~SkiaPlatformContext() = default;
13
-
14
- wgpu::Surface makeSurface(wgpu::Instance instance, void *surface, int width,
15
- int height) override {
16
- wgpu::SurfaceDescriptorFromAndroidNativeWindow androidSurfaceDesc;
17
- androidSurfaceDesc.window = surface;
18
- wgpu::SurfaceDescriptor surfaceDescriptor;
19
- surfaceDescriptor.nextInChain = &androidSurfaceDesc;
20
- return instance.CreateSurface(&surfaceDescriptor);
21
- }
22
- };
23
-
24
- } // namespace rnwgpu
25
-
26
- #endif // SK_GRAPHITE
@@ -1,43 +0,0 @@
1
- package com.shopify.reactnative.skia;
2
-
3
- import android.annotation.SuppressLint;
4
- import android.content.Context;
5
- import android.view.SurfaceHolder;
6
- import android.view.SurfaceView;
7
-
8
- import androidx.annotation.NonNull;
9
-
10
- @SuppressLint("ViewConstructor")
11
- public class WebGPUSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
12
-
13
- WebGPUViewAPI mApi;
14
-
15
- public WebGPUSurfaceView(Context context, WebGPUViewAPI api) {
16
- super(context);
17
- mApi = api;
18
- getHolder().addCallback(this);
19
- }
20
-
21
- @Override
22
- protected void onDetachedFromWindow() {
23
- super.onDetachedFromWindow();
24
- // surfaceDestroyed() normally fires during detach as well; going offscreen
25
- // is idempotent, so this is just a safety net for paths where it does not.
26
- mApi.surfaceOffscreen();
27
- }
28
-
29
- @Override
30
- public void surfaceCreated(@NonNull SurfaceHolder holder) {
31
- mApi.surfaceCreated(holder.getSurface());
32
- }
33
-
34
- @Override
35
- public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
36
- mApi.surfaceChanged(holder.getSurface());
37
- }
38
-
39
- @Override
40
- public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
41
- mApi.surfaceOffscreen();
42
- }
43
- }
@@ -1,50 +0,0 @@
1
- package com.shopify.reactnative.skia;
2
-
3
- import android.annotation.SuppressLint;
4
- import android.content.Context;
5
- import android.graphics.SurfaceTexture;
6
- import android.view.Surface;
7
- import android.view.TextureView;
8
- import androidx.annotation.NonNull;
9
-
10
- @SuppressLint("ViewConstructor")
11
- public class WebGPUTextureView extends TextureView implements TextureView.SurfaceTextureListener {
12
-
13
- WebGPUViewAPI mApi;
14
- private Surface mSurface;
15
-
16
- public WebGPUTextureView(Context context, WebGPUViewAPI api) {
17
- super(context);
18
- mApi = api;
19
- setOpaque(false);
20
- setSurfaceTextureListener(this);
21
- }
22
-
23
- @Override
24
- public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surfaceTexture, int width, int height) {
25
- mSurface = new Surface(surfaceTexture);
26
- mApi.surfaceCreated(mSurface);
27
- }
28
-
29
- @Override
30
- public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surfaceTexture, int width, int height) {
31
- mApi.surfaceChanged(mSurface);
32
- }
33
-
34
- @Override
35
- public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surfaceTexture) {
36
- // Detach first (synchronous through JNI) so the native side has dropped
37
- // its window reference before we release ours.
38
- mApi.surfaceOffscreen();
39
- if (mSurface != null) {
40
- mSurface.release();
41
- mSurface = null;
42
- }
43
- return true;
44
- }
45
-
46
- @Override
47
- public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surfaceTexture) {
48
- // No implementation needed
49
- }
50
- }
@@ -1,98 +0,0 @@
1
- package com.shopify.reactnative.skia;
2
-
3
- import android.content.Context;
4
- import android.view.Surface;
5
- import android.view.View;
6
-
7
- import com.facebook.proguard.annotations.DoNotStrip;
8
- import com.facebook.react.views.view.ReactViewGroup;
9
-
10
- public class WebGPUView extends ReactViewGroup implements WebGPUViewAPI {
11
-
12
- private int mContextId;
13
- private boolean mTransparent = false;
14
- private View mView = null;
15
-
16
- WebGPUView(Context context) {
17
- super(context);
18
- }
19
-
20
- public void setContextId(int contextId) {
21
- mContextId = contextId;
22
- }
23
-
24
- public void setTransparent(boolean value) {
25
- Context ctx = getContext();
26
- if (value != mTransparent || mView == null) {
27
- if (mView != null) {
28
- removeView(mView);
29
- }
30
- mTransparent = value;
31
- if (mTransparent) {
32
- mView = new WebGPUTextureView(ctx, this);
33
- } else {
34
- mView = new WebGPUSurfaceView(ctx, this);
35
- }
36
- addView(mView);
37
- }
38
- }
39
-
40
- @Override
41
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
42
- super.onLayout(changed, left, top, right, bottom);
43
- if (mView != null) {
44
- mView.layout(0, 0, this.getMeasuredWidth(), this.getMeasuredHeight());
45
- }
46
- }
47
-
48
- @Override
49
- public void surfaceCreated(Surface surface) {
50
- float density = getResources().getDisplayMetrics().density;
51
- float width = getWidth() / density;
52
- float height = getHeight() / density;
53
- onSurfaceCreate(surface, mContextId, width, height);
54
- }
55
-
56
- @Override
57
- public void surfaceChanged(Surface surface) {
58
- float density = getResources().getDisplayMetrics().density;
59
- float width = getWidth() / density;
60
- float height = getHeight() / density;
61
- onSurfaceChanged(surface, mContextId, width, height);
62
- }
63
-
64
- @Override
65
- public void surfaceOffscreen() {
66
- switchToOffscreenSurface(mContextId);
67
- }
68
-
69
- /**
70
- * Called from WebGPUViewManager.onDropViewInstance when React removes this
71
- * view: the view dies with its Canvas, so it retires the registry entry.
72
- */
73
- public void destroy() {
74
- onViewDestroyed(mContextId);
75
- }
76
-
77
- @DoNotStrip
78
- private native void onSurfaceCreate(
79
- Surface surface,
80
- int contextId,
81
- float width,
82
- float height
83
- );
84
-
85
- @DoNotStrip
86
- private native void onSurfaceChanged(
87
- Surface surface,
88
- int contextId,
89
- float width,
90
- float height
91
- );
92
-
93
- @DoNotStrip
94
- private native void switchToOffscreenSurface(int contextId);
95
-
96
- @DoNotStrip
97
- private native void onViewDestroyed(int contextId);
98
- }
@@ -1,19 +0,0 @@
1
- package com.shopify.reactnative.skia;
2
-
3
- import android.view.Surface;
4
-
5
- /**
6
- * Surface lifecycle events a WebGPU child view reports. The registry entry
7
- * itself is owned by the JS Canvas component (created lazily, removed via
8
- * RNWebGPU.destroyContext on unmount); views only attach and detach surfaces.
9
- * A detached context keeps rendering into an offscreen texture whose content
10
- * is blitted onto the next attached surface.
11
- */
12
- public interface WebGPUViewAPI {
13
-
14
- void surfaceCreated(Surface surface);
15
-
16
- void surfaceChanged(Surface surface);
17
-
18
- void surfaceOffscreen();
19
- }
@@ -1,58 +0,0 @@
1
- package com.shopify.reactnative.skia;
2
-
3
- import com.facebook.react.module.annotations.ReactModule;
4
- import com.facebook.react.uimanager.ThemedReactContext;
5
- import com.facebook.react.uimanager.annotations.ReactProp;
6
- import com.facebook.react.views.view.ReactViewGroup;
7
- import com.facebook.react.views.view.ReactViewManager;
8
- import com.facebook.react.viewmanagers.SkiaWebGPUViewManagerDelegate;
9
- import com.facebook.react.viewmanagers.SkiaWebGPUViewManagerInterface;
10
-
11
- import androidx.annotation.NonNull;
12
- import androidx.annotation.Nullable;
13
-
14
- @ReactModule(name = WebGPUViewManager.NAME)
15
- public class WebGPUViewManager extends ReactViewManager implements SkiaWebGPUViewManagerInterface<WebGPUView> {
16
-
17
- public static final String NAME = "SkiaWebGPUView";
18
-
19
- protected SkiaWebGPUViewManagerDelegate mDelegate;
20
-
21
- public WebGPUViewManager() {
22
- mDelegate = new SkiaWebGPUViewManagerDelegate(this);
23
- }
24
-
25
- protected SkiaWebGPUViewManagerDelegate getDelegate() {
26
- return mDelegate;
27
- }
28
-
29
- @NonNull
30
- @Override
31
- public String getName() {
32
- return NAME;
33
- }
34
-
35
- @NonNull
36
- @Override
37
- public WebGPUView createViewInstance(@NonNull ThemedReactContext context) {
38
- return new WebGPUView(context);
39
- }
40
-
41
- @Override
42
- @ReactProp(name = "transparent")
43
- public void setTransparent(WebGPUView view, boolean value) {
44
- view.setTransparent(value);
45
- }
46
-
47
- @Override
48
- @ReactProp(name = "contextId")
49
- public void setContextId(WebGPUView view, int value) {
50
- view.setContextId(value);
51
- }
52
-
53
- @Override
54
- public void onDropViewInstance(@NonNull ReactViewGroup view) {
55
- super.onDropViewInstance(view);
56
- ((WebGPUView) view).destroy();
57
- }
58
- }
@@ -1,33 +0,0 @@
1
- #ifdef SK_GRAPHITE
2
-
3
- #import <CoreVideo/CoreVideo.h>
4
-
5
- #include "rnwgpu/api/AppleNativeBuffer.h"
6
-
7
- namespace rnwgpu {
8
-
9
- void *GetIOSurfaceFromNativeBuffer(void *cvPixelBuffer, uint32_t *outWidth,
10
- uint32_t *outHeight) {
11
- auto pixelBuffer = reinterpret_cast<CVPixelBufferRef>(cvPixelBuffer);
12
- if (pixelBuffer == nullptr) {
13
- if (outWidth != nullptr) {
14
- *outWidth = 0;
15
- }
16
- if (outHeight != nullptr) {
17
- *outHeight = 0;
18
- }
19
- return nullptr;
20
- }
21
- if (outWidth != nullptr) {
22
- *outWidth = static_cast<uint32_t>(CVPixelBufferGetWidth(pixelBuffer));
23
- }
24
- if (outHeight != nullptr) {
25
- *outHeight = static_cast<uint32_t>(CVPixelBufferGetHeight(pixelBuffer));
26
- }
27
- // The IOSurface is owned by the CVPixelBuffer; we don't retain it here.
28
- return CVPixelBufferGetIOSurface(pixelBuffer);
29
- }
30
-
31
- } // namespace rnwgpu
32
-
33
- #endif // SK_GRAPHITE
@@ -1,20 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef SK_GRAPHITE
4
-
5
- #include "rnwgpu/PlatformContext.h"
6
-
7
- namespace rnwgpu {
8
-
9
- class SkiaPlatformContext : public PlatformContext {
10
- public:
11
- SkiaPlatformContext() = default;
12
- ~SkiaPlatformContext() = default;
13
-
14
- wgpu::Surface makeSurface(wgpu::Instance instance, void *surface, int width,
15
- int height) override;
16
- };
17
-
18
- } // namespace rnwgpu
19
-
20
- #endif // SK_GRAPHITE
@@ -1,21 +0,0 @@
1
- #ifdef SK_GRAPHITE
2
-
3
- #include "SkiaPlatformContext.h"
4
-
5
- #include <TargetConditionals.h>
6
-
7
- namespace rnwgpu {
8
-
9
- wgpu::Surface SkiaPlatformContext::makeSurface(wgpu::Instance instance,
10
- void *surface, int width,
11
- int height) {
12
- wgpu::SurfaceSourceMetalLayer metalSurfaceDesc;
13
- metalSurfaceDesc.layer = surface;
14
- wgpu::SurfaceDescriptor surfaceDescriptor;
15
- surfaceDescriptor.nextInChain = &metalSurfaceDesc;
16
- return instance.CreateSurface(&surfaceDescriptor);
17
- }
18
-
19
- } // namespace rnwgpu
20
-
21
- #endif // SK_GRAPHITE
@@ -1,81 +0,0 @@
1
- #ifdef RCT_NEW_ARCH_ENABLED
2
-
3
- #import "SkiaWebGPUView.h"
4
-
5
- #import <react/renderer/components/rnskia/ComponentDescriptors.h>
6
- #import <react/renderer/components/rnskia/EventEmitters.h>
7
- #import <react/renderer/components/rnskia/Props.h>
8
- #import <react/renderer/components/rnskia/RCTComponentViewHelpers.h>
9
-
10
- #import "RCTFabricComponentsPlugins.h"
11
- #import "WebGPUMetalView.h"
12
-
13
- using namespace facebook::react;
14
-
15
- @implementation SkiaWebGPUView
16
-
17
- - (instancetype)initWithFrame:(CGRect)frame {
18
- if (self = [super initWithFrame:frame]) {
19
- static const auto defaultProps =
20
- std::make_shared<const SkiaWebGPUViewProps>();
21
- _props = defaultProps;
22
- }
23
- return self;
24
- }
25
-
26
- + (ComponentDescriptorProvider)componentDescriptorProvider {
27
- return concreteComponentDescriptorProvider<
28
- SkiaWebGPUViewComponentDescriptor>();
29
- }
30
-
31
- - (void)prepareForRecycle {
32
- [super prepareForRecycle];
33
- /*
34
- It's important to destroy the Metal Layer before releasing a view
35
- to the recycled pool to prevent displaying outdated content from
36
- the last usage in the new context.
37
- */
38
- self.contentView = nil;
39
- }
40
-
41
- - (WebGPUMetalView *)getContentView {
42
- if (!self.contentView) {
43
- self.contentView = [WebGPUMetalView new];
44
- }
45
- return (WebGPUMetalView *)self.contentView;
46
- }
47
-
48
- - (void)updateProps:(const Props::Shared &)props
49
- oldProps:(const Props::Shared &)oldProps {
50
- const auto &oldViewProps =
51
- *std::static_pointer_cast<const SkiaWebGPUViewProps>(_props);
52
- const auto &newViewProps =
53
- *std::static_pointer_cast<const SkiaWebGPUViewProps>(props);
54
-
55
- if (newViewProps.contextId != oldViewProps.contextId) {
56
- /*
57
- The context is set only once during mounting the component
58
- and never changes because it isn't available for users to modify.
59
- */
60
- WebGPUMetalView *metalView = [WebGPUMetalView new];
61
- self.contentView = metalView;
62
- [metalView setContextId:@(newViewProps.contextId)];
63
- [metalView configure];
64
- }
65
-
66
- [super updateProps:props oldProps:oldProps];
67
- }
68
-
69
- - (void)updateLayoutMetrics:(const LayoutMetrics &)layoutMetrics
70
- oldLayoutMetrics:(const LayoutMetrics &)oldLayoutMetrics {
71
- [super updateLayoutMetrics:layoutMetrics oldLayoutMetrics:oldLayoutMetrics];
72
- [(WebGPUMetalView *)self.contentView update];
73
- }
74
-
75
- @end
76
-
77
- Class<RCTComponentViewProtocol> SkiaWebGPUViewCls(void) {
78
- return SkiaWebGPUView.class;
79
- }
80
-
81
- #endif // RCT_NEW_ARCH_ENABLED