@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
@@ -75,8 +75,42 @@ framework_names = ['libskia', 'libsvg', 'libskshaper', 'libskparagraph',
75
75
  'libskunicode_core', 'libskunicode_libgrapheme',
76
76
  'libskottie', 'libsksg']
77
77
 
78
- # Add Dawn library for Graphite builds (contains dawn::native symbols)
79
- framework_names += ['libdawn_combined'] if use_graphite
78
+ # Add Dawn library for Graphite builds (contains dawn::native symbols).
79
+ # libwebgpu_dawn is the same artifact react-native-webgpu vendors. When
80
+ # react-native-webgpu is installed, it provides Dawn for the whole app and
81
+ # vendoring the framework here as well would fail CocoaPods'
82
+ # duplicate-framework-name check, so Skia only vendors it when alone. The
83
+ # skia pod's dawn::native references resolve from webgpu's copy at app link.
84
+ webgpu_pkg_dir = resolve_node_package.call('react-native-webgpu', __dir__)
85
+ has_webgpu_pkg = !webgpu_pkg_dir.nil?
86
+ if use_graphite && has_webgpu_pkg
87
+ Pod::UI.puts 'react-native-skia: react-native-webgpu detected, Dawn is provided by its libwebgpu_dawn'
88
+
89
+ # Both packages must link the exact same Dawn artifact. Compare the release
90
+ # tag this Graphite build was installed with (libs/.dawn-version) against
91
+ # the tag react-native-webgpu declares in its package.json `dawn` field.
92
+ dawn_marker = File.join(__dir__, 'libs', '.dawn-version')
93
+ if File.exist?(dawn_marker)
94
+ skia_dawn = File.read(dawn_marker).strip
95
+ webgpu_pkg = JSON.parse(File.read(File.join(webgpu_pkg_dir, 'package.json')))
96
+ webgpu_dawn_field = webgpu_pkg['dawn'].to_s
97
+ if webgpu_dawn_field.empty?
98
+ raise "react-native-skia: the installed react-native-webgpu " \
99
+ "(#{webgpu_pkg['version']}) does not declare a `dawn` field in its " \
100
+ "package.json, so it predates shared-Dawn support and cannot be " \
101
+ "paired with this Graphite build (which links #{skia_dawn}). " \
102
+ "Upgrade react-native-webgpu."
103
+ end
104
+ webgpu_dawn = "dawn-#{webgpu_dawn_field.tr('/', '-')}"
105
+ unless skia_dawn == webgpu_dawn
106
+ raise "react-native-skia: Dawn version mismatch. This Graphite build " \
107
+ "links #{skia_dawn} but react-native-webgpu links #{webgpu_dawn}. " \
108
+ "Align the two packages so the app contains exactly one Dawn."
109
+ end
110
+ Pod::UI.puts "react-native-skia: Dawn versions match (#{skia_dawn})"
111
+ end
112
+ end
113
+ framework_names += ['libwebgpu_dawn'] if use_graphite && !has_webgpu_pkg
80
114
 
81
115
  # Verify that the prebuilt binaries are available (copied in above from the npm
82
116
  # packages, or downloaded by install-skia-graphite for in-repo Graphite builds).
@@ -154,8 +188,8 @@ Pod::Spec.new do |s|
154
188
  'cpp/rnskia/RNMetalLayerColorSpace.h',
155
189
  'cpp/rnskia/RNDawnWindowContext.h',
156
190
  'cpp/rnskia/RNDawnWindowContext.cpp',
157
- 'cpp/rnskia/RNImageProvider.h',
158
- 'cpp/rnwgpu/**/*.{h,cpp}'
191
+ 'cpp/rnskia/RNDawnInterop.cpp',
192
+ 'cpp/rnskia/RNImageProvider.h'
159
193
  ]
160
194
  s.exclude_files = graphite_exclusions unless use_graphite
161
195
 
package/src/mock/index.ts CHANGED
@@ -23,7 +23,6 @@ export const Mock = (CanvasKit: CanvasKit) => {
23
23
  ...require("../dom/types"),
24
24
  ...require("../dom/nodes"),
25
25
  Canvas: require("react-native").View,
26
- WebGPUCanvas: require("react-native").View,
27
26
  getPreferredHighBitDepthCanvasFormat: () => "rgba16float",
28
27
  SkiaPictureView: require("react-native").View,
29
28
  JsiSkImage: JsiSkImage,
@@ -97,23 +97,32 @@ export interface ImageFactory {
97
97
 
98
98
  /**
99
99
  * Creates an SkImage from a WebGPU texture.
100
- * This allows using textures rendered by WebGPU in Skia drawings.
100
+ * This allows using textures rendered by WebGPU in Skia drawings. The
101
+ * texture crosses the package boundary as a raw pointer: pass
102
+ * `texture.nativePointer` from a react-native-webgpu GPUTexture created on
103
+ * the shared device (importDevice(Skia.getNativeDevice())). The native side
104
+ * takes its own reference, so the handle stays valid even if the JS
105
+ * GPUTexture is garbage collected — but do not call texture.destroy()
106
+ * while the image is in use: destroy() releases the underlying GPU
107
+ * resource regardless of reference counts.
101
108
  *
102
109
  * Note: This method is only available when the Graphite backend is enabled.
103
110
  *
104
- * @param texture - A GPUTexture object from the WebGPU API
111
+ * @param pointer - The WGPUTexture pointer (texture.nativePointer)
105
112
  * @returns An SkImage wrapping the texture, or throws if the texture is invalid
106
113
  */
107
- MakeImageFromTexture(texture: GPUTexture): SkImage;
114
+ MakeImageFromNativeTexture(pointer: bigint): SkImage;
108
115
 
109
116
  /**
110
117
  * Creates a WebGPU texture from an SkImage.
111
- * This allows using Skia images in WebGPU rendering pipelines.
118
+ * This allows using Skia images in WebGPU rendering pipelines. The
119
+ * returned pointer carries one reference and must be adopted exactly once
120
+ * with react-native-webgpu's adoptTexture(), which owns it from then on.
112
121
  *
113
122
  * Note: This method is only available when the Graphite backend is enabled.
114
123
  *
115
124
  * @param image - An SkImage to convert to a texture
116
- * @returns A GPUTexture containing the image data, or throws if conversion fails
125
+ * @returns A WGPUTexture pointer for adoptTexture(), or throws on failure
117
126
  */
118
- MakeTextureFromImage(image: SkImage): GPUTexture;
127
+ MakeNativeTextureFromImage(image: SkImage): bigint;
119
128
  }
@@ -110,20 +110,10 @@ export interface Skia {
110
110
  NativeBuffer: NativeBufferFactory;
111
111
  Recorder(): JsiRecorder;
112
112
  /**
113
- * Returns whether the Graphite backend is enabled and WebGPU is available.
114
- *
115
- * @returns true if Graphite/WebGPU is available, false otherwise
113
+ * Raw WGPUDevice pointer of Skia's Graphite device, as a BigInt. Pass it to
114
+ * react-native-webgpu's importDevice() to get a GPUDevice sharing Skia's
115
+ * device (zero-copy interop). Only available on Graphite builds; throws
116
+ * otherwise.
116
117
  */
117
- hasDevice(): boolean;
118
- /**
119
- * Returns the shared WebGPU device used by Skia's Graphite backend.
120
- * This allows direct access to the GPU device for WebGPU operations.
121
- *
122
- * Note: This method is only available when the Graphite backend is enabled.
123
- * Use hasDevice() to check availability before calling this method.
124
- *
125
- * @returns The GPUDevice used by Skia
126
- * @throws Error if Graphite backend is not enabled
127
- */
128
- getDevice(): GPUDevice;
118
+ getNativeDevice(): bigint;
129
119
  }
@@ -30,7 +30,6 @@ export * from "./Size";
30
30
  export * from "./Paragraph";
31
31
  export * from "./Matrix4";
32
32
  export * from "./NativeBuffer";
33
- export * from "./WebGPU";
34
33
  export * from "./Recorder";
35
34
  export * from "./Video";
36
35
  export * from "./Skottie";
@@ -102,11 +102,11 @@ export class JsiSkImageFactory extends Host implements ImageFactory {
102
102
  return new JsiSkImage(this.CanvasKit, image);
103
103
  }
104
104
 
105
- MakeImageFromTexture(_texture: GPUTexture): SkImage {
105
+ MakeImageFromNativeTexture(_pointer: bigint): SkImage {
106
106
  return throwNotImplementedOnRNWeb<SkImage>();
107
107
  }
108
108
 
109
- MakeTextureFromImage(_image: SkImage): GPUTexture {
110
- return throwNotImplementedOnRNWeb<GPUTexture>();
109
+ MakeNativeTextureFromImage(_image: SkImage): bigint {
110
+ return throwNotImplementedOnRNWeb<bigint>();
111
111
  }
112
112
  }
@@ -143,10 +143,7 @@ export const JsiSkApi = (CanvasKit: CanvasKit): Skia => ({
143
143
  Recorder: () => {
144
144
  return throwNotImplementedOnRNWeb<JsiRecorder>();
145
145
  },
146
- getDevice: () => {
147
- return throwNotImplementedOnRNWeb<GPUDevice>();
148
- },
149
- hasDevice: () => {
150
- return false;
146
+ getNativeDevice: () => {
147
+ return throwNotImplementedOnRNWeb<bigint>();
151
148
  },
152
149
  });
@@ -1,4 +1,3 @@
1
1
  export * from "./SkiaPictureView";
2
2
  export * from "./types";
3
- export * from "./WebGPUCanvas";
4
3
  export * from "./formats";
@@ -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