@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,61 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <string>
5
-
6
- #include "descriptors/Unions.h"
7
-
8
- #include "jsi2/NativeObject.h"
9
-
10
- #include "webgpu/webgpu_cpp.h"
11
-
12
- #include "GPUBindGroupLayout.h"
13
-
14
- namespace rnwgpu {
15
-
16
- namespace jsi = facebook::jsi;
17
-
18
- class GPURenderPipeline : public NativeObject<GPURenderPipeline> {
19
- public:
20
- static constexpr const char *CLASS_NAME = "GPURenderPipeline";
21
-
22
- explicit GPURenderPipeline(wgpu::RenderPipeline instance, std::string label)
23
- : NativeObject(CLASS_NAME), _instance(instance), _label(label) {}
24
-
25
- public:
26
- std::string getBrand() { return CLASS_NAME; }
27
-
28
- std::shared_ptr<GPUBindGroupLayout> getBindGroupLayout(uint32_t index);
29
-
30
- std::string getLabel() { return _label; }
31
- void setLabel(const std::string &label) {
32
- _label = label;
33
- _instance.SetLabel(_label.c_str());
34
- }
35
-
36
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
37
- installGetter(runtime, prototype, "__brand", &GPURenderPipeline::getBrand);
38
- installMethod(runtime, prototype, "getBindGroupLayout",
39
- &GPURenderPipeline::getBindGroupLayout);
40
- installGetterSetter(runtime, prototype, "label",
41
- &GPURenderPipeline::getLabel,
42
- &GPURenderPipeline::setLabel);
43
- }
44
-
45
- inline const wgpu::RenderPipeline get() { return _instance; }
46
-
47
- size_t getMemoryPressure() override {
48
- // Render pipelines contain compiled shader state, vertex/fragment shaders,
49
- // render state, and driver-specific optimized code
50
- // Estimate: 24KB for a typical render pipeline with vertex + fragment
51
- // shaders
52
- return 24 * 1024;
53
- }
54
-
55
- private:
56
- wgpu::RenderPipeline _instance;
57
- std::string _label;
58
- friend class GPUDevice;
59
- };
60
-
61
- } // namespace rnwgpu
@@ -1,44 +0,0 @@
1
- #pragma once
2
-
3
- #include <string>
4
-
5
- #include "descriptors/Unions.h"
6
-
7
- #include "jsi2/NativeObject.h"
8
-
9
- #include "webgpu/webgpu_cpp.h"
10
-
11
- namespace rnwgpu {
12
-
13
- namespace jsi = facebook::jsi;
14
-
15
- class GPUSampler : public NativeObject<GPUSampler> {
16
- public:
17
- static constexpr const char *CLASS_NAME = "GPUSampler";
18
-
19
- explicit GPUSampler(wgpu::Sampler instance, std::string label)
20
- : NativeObject(CLASS_NAME), _instance(instance), _label(label) {}
21
-
22
- public:
23
- std::string getBrand() { return CLASS_NAME; }
24
-
25
- std::string getLabel() { return _label; }
26
- void setLabel(const std::string &label) {
27
- _label = label;
28
- _instance.SetLabel(_label.c_str());
29
- }
30
-
31
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
32
- installGetter(runtime, prototype, "__brand", &GPUSampler::getBrand);
33
- installGetterSetter(runtime, prototype, "label", &GPUSampler::getLabel,
34
- &GPUSampler::setLabel);
35
- }
36
-
37
- inline const wgpu::Sampler get() { return _instance; }
38
-
39
- private:
40
- wgpu::Sampler _instance;
41
- std::string _label;
42
- };
43
-
44
- } // namespace rnwgpu
@@ -1,56 +0,0 @@
1
- #include "GPUShaderModule.h"
2
-
3
- #include <memory>
4
- #include <utility>
5
-
6
- #include "jsi2/JSIConverter.h"
7
-
8
- namespace rnwgpu {
9
-
10
- async::AsyncTaskHandle
11
- GPUShaderModule::getCompilationInfo(jsi::Runtime &runtime) {
12
- auto module = _instance;
13
-
14
- // Post to the CALLING runtime's context so the promise settles on the
15
- // thread that requested it (see GPUBuffer::mapAsync).
16
- auto context =
17
- async::RuntimeContext::getOrCreate(runtime, _async->instance());
18
- return context->postTask(
19
- [module](const async::AsyncTaskHandle::ResolveFunction &resolve,
20
- const async::AsyncTaskHandle::RejectFunction &reject) {
21
- auto result = std::make_shared<GPUCompilationInfo>();
22
- module.GetCompilationInfo(
23
- wgpu::CallbackMode::AllowProcessEvents,
24
- [result, resolve,
25
- reject](wgpu::CompilationInfoRequestStatus status,
26
- const wgpu::CompilationInfo *compilationInfo) {
27
- if (status != wgpu::CompilationInfoRequestStatus::Success ||
28
- compilationInfo == nullptr) {
29
- reject("Failed to get compilation info");
30
- return;
31
- }
32
-
33
- result->_messages.reserve(compilationInfo->messageCount);
34
- for (size_t i = 0; i < compilationInfo->messageCount; ++i) {
35
- const auto &wgpuMessage = compilationInfo->messages[i];
36
- GPUCompilationMessageData message;
37
- message.message =
38
- wgpuMessage.message.length ? wgpuMessage.message.data : "";
39
- message.type = wgpuMessage.type;
40
- message.lineNum = wgpuMessage.lineNum;
41
- message.linePos = wgpuMessage.linePos;
42
- message.offset = wgpuMessage.offset;
43
- message.length = wgpuMessage.length;
44
- result->_messages.push_back(std::move(message));
45
- }
46
-
47
- resolve([result =
48
- std::move(result)](jsi::Runtime &runtime) mutable {
49
- return JSIConverter<std::shared_ptr<GPUCompilationInfo>>::toJSI(
50
- runtime, result);
51
- });
52
- });
53
- });
54
- }
55
-
56
- } // namespace rnwgpu
@@ -1,66 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <string>
5
-
6
- #include "descriptors/Unions.h"
7
-
8
- #include "jsi2/NativeObject.h"
9
-
10
- #include "rnwgpu/async/AsyncTaskHandle.h"
11
- #include "rnwgpu/async/RuntimeContext.h"
12
-
13
- #include "webgpu/webgpu_cpp.h"
14
-
15
- #include "GPUCompilationInfo.h"
16
-
17
- namespace rnwgpu {
18
-
19
- namespace jsi = facebook::jsi;
20
-
21
- class GPUShaderModule : public NativeObject<GPUShaderModule> {
22
- public:
23
- static constexpr const char *CLASS_NAME = "GPUShaderModule";
24
-
25
- explicit GPUShaderModule(wgpu::ShaderModule instance,
26
- std::shared_ptr<async::RuntimeContext> async,
27
- std::string label)
28
- : NativeObject(CLASS_NAME), _instance(instance), _async(async),
29
- _label(label) {}
30
-
31
- public:
32
- std::string getBrand() { return CLASS_NAME; }
33
-
34
- async::AsyncTaskHandle getCompilationInfo(jsi::Runtime &runtime);
35
-
36
- std::string getLabel() { return _label; }
37
- void setLabel(const std::string &label) {
38
- _label = label;
39
- _instance.SetLabel(_label.c_str());
40
- }
41
-
42
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
43
- installGetter(runtime, prototype, "__brand", &GPUShaderModule::getBrand);
44
- installMethodWithRuntime(runtime, prototype, "getCompilationInfo",
45
- &GPUShaderModule::getCompilationInfo);
46
- installGetterSetter(runtime, prototype, "label", &GPUShaderModule::getLabel,
47
- &GPUShaderModule::setLabel);
48
- }
49
-
50
- inline const wgpu::ShaderModule get() { return _instance; }
51
-
52
- size_t getMemoryPressure() override {
53
- // Estimate memory usage for compiled shader module
54
- // Shaders can vary widely, but a reasonable estimate is 8-16KB for typical
55
- // shaders Complex shaders (with many uniforms, textures, or computations)
56
- // can be much larger
57
- return 12 * 1024; // 12KB estimate for average shader
58
- }
59
-
60
- private:
61
- wgpu::ShaderModule _instance;
62
- std::shared_ptr<async::RuntimeContext> _async;
63
- std::string _label;
64
- };
65
-
66
- } // namespace rnwgpu
@@ -1,80 +0,0 @@
1
- #include "GPUSharedFence.h"
2
-
3
- #include <cstdint>
4
- #include <string>
5
-
6
- #if defined(__ANDROID__)
7
- #include <fcntl.h>
8
- #endif
9
-
10
- namespace rnwgpu {
11
-
12
- namespace {
13
-
14
- // Kebab-case names matching the shared-fence-* feature strings (see Unions.h /
15
- // GPUFeatures.h).
16
- std::string sharedFenceTypeToString(wgpu::SharedFenceType type) {
17
- switch (type) {
18
- case wgpu::SharedFenceType::MTLSharedEvent:
19
- return "mtl-shared-event";
20
- case wgpu::SharedFenceType::SyncFD:
21
- return "sync-fd";
22
- case wgpu::SharedFenceType::VkSemaphoreOpaqueFD:
23
- return "vk-semaphore-opaque-fd";
24
- case wgpu::SharedFenceType::VkSemaphoreZirconHandle:
25
- return "vk-semaphore-zircon-handle";
26
- case wgpu::SharedFenceType::DXGISharedHandle:
27
- return "dxgi-shared-handle";
28
- case wgpu::SharedFenceType::EGLSync:
29
- return "egl-sync";
30
- default:
31
- return "";
32
- }
33
- }
34
-
35
- } // namespace
36
-
37
- jsi::Value GPUSharedFence::exportInfo(jsi::Runtime &runtime, const jsi::Value &,
38
- const jsi::Value *, size_t) {
39
- wgpu::SharedFenceExportInfo info{};
40
- uint64_t handle = 0;
41
-
42
- #if defined(__APPLE__)
43
- // Apple: the handle is an id<MTLSharedEvent> pointer.
44
- wgpu::SharedFenceMTLSharedEventExportInfo mtlInfo{};
45
- info.nextInChain = &mtlInfo;
46
- _instance.ExportInfo(&info);
47
- handle = reinterpret_cast<uint64_t>(mtlInfo.sharedEvent);
48
- #elif defined(__ANDROID__)
49
- // Android: the handle is an OS file descriptor (sync_fd). Dawn's ExportInfo
50
- // returns a BORROWED fd: it is owned by the SharedFence and closed when the
51
- // fence is destroyed. This exported handle is documented as caller-owned (the
52
- // caller must close() it), so dup() it. Without the dup the same fd is closed
53
- // twice (once by the caller and once by Dawn on fence destruction), tripping
54
- // Android's fdsan (double-close abort).
55
- wgpu::SharedFenceSyncFDExportInfo fdInfo{};
56
- info.nextInChain = &fdInfo;
57
- _instance.ExportInfo(&info);
58
- int exportedFd = fdInfo.handle >= 0
59
- ? ::fcntl(fdInfo.handle, F_DUPFD_CLOEXEC, 0)
60
- : fdInfo.handle;
61
- handle = static_cast<uint64_t>(static_cast<uint32_t>(exportedFd));
62
- #else
63
- // react-native-skia only targets Apple (Metal) and Android (Vulkan). On any
64
- // other platform there is no native handle convention to expose, so fail
65
- // loudly rather than handing back a meaningless handle of 0.
66
- throw jsi::JSError(runtime,
67
- "GPUSharedFence::export(): unsupported platform (only "
68
- "Apple/Metal and Android/Vulkan are supported)");
69
- #endif
70
-
71
- jsi::Object result(runtime);
72
- result.setProperty(
73
- runtime, "type",
74
- jsi::String::createFromUtf8(runtime, sharedFenceTypeToString(info.type)));
75
- result.setProperty(runtime, "handle",
76
- jsi::BigInt::fromUint64(runtime, handle));
77
- return result;
78
- }
79
-
80
- } // namespace rnwgpu
@@ -1,53 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <string>
5
-
6
- #include "jsi2/NativeObject.h"
7
-
8
- #include "webgpu/webgpu_cpp.h"
9
-
10
- namespace rnwgpu {
11
-
12
- namespace jsi = facebook::jsi;
13
-
14
- // Wraps a wgpu::SharedFence: a native GPU sync primitive (id<MTLSharedEvent> on
15
- // Apple, sync-fd / VkSemaphore on Android).
16
- class GPUSharedFence : public NativeObject<GPUSharedFence> {
17
- public:
18
- static constexpr const char *CLASS_NAME = "GPUSharedFence";
19
-
20
- explicit GPUSharedFence(wgpu::SharedFence instance, std::string label)
21
- : NativeObject(CLASS_NAME), _instance(std::move(instance)),
22
- _label(std::move(label)) {}
23
-
24
- public:
25
- std::string getBrand() { return CLASS_NAME; }
26
-
27
- // export() -> { type, handle }: exposes the native handle (as a BigInt) so
28
- // app code can wait on or signal the fence. The caller owns the returned
29
- // handle (e.g. an exported sync-fd must be close()d).
30
- jsi::Value exportInfo(jsi::Runtime &runtime, const jsi::Value &thisVal,
31
- const jsi::Value *args, size_t count);
32
-
33
- std::string getLabel() { return _label; }
34
- void setLabel(const std::string &label) {
35
- _label = label;
36
- _instance.SetLabel(_label.c_str());
37
- }
38
-
39
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
40
- installGetter(runtime, prototype, "__brand", &GPUSharedFence::getBrand);
41
- installMethod(runtime, prototype, "export", &GPUSharedFence::exportInfo);
42
- installGetterSetter(runtime, prototype, "label", &GPUSharedFence::getLabel,
43
- &GPUSharedFence::setLabel);
44
- }
45
-
46
- inline wgpu::SharedFence get() { return _instance; }
47
-
48
- private:
49
- wgpu::SharedFence _instance;
50
- std::string _label;
51
- };
52
-
53
- } // namespace rnwgpu
@@ -1,135 +0,0 @@
1
- #include "GPUSharedTextureMemory.h"
2
-
3
- #include <cstdint>
4
- #include <memory>
5
- #include <optional>
6
- #include <stdexcept>
7
- #include <string>
8
- #include <vector>
9
-
10
- #include "Convertors.h"
11
-
12
- namespace rnwgpu {
13
-
14
- std::shared_ptr<GPUTexture> GPUSharedTextureMemory::createTexture(
15
- std::optional<std::shared_ptr<GPUTextureDescriptor>> descriptor) {
16
- if (!descriptor.has_value() || descriptor.value() == nullptr) {
17
- auto texture = _instance.CreateTexture();
18
- // The texture aliases the shared memory; it doesn't own GPU allocation, so
19
- // it doesn't report memory pressure.
20
- return std::make_shared<GPUTexture>(texture, "", false);
21
- }
22
-
23
- wgpu::TextureDescriptor desc{};
24
- Convertor conv;
25
- if (!conv(desc, descriptor.value())) {
26
- throw std::runtime_error(
27
- "GPUSharedTextureMemory::createTexture(): Error with "
28
- "GPUTextureDescriptor");
29
- }
30
- auto texture = _instance.CreateTexture(&desc);
31
- return std::make_shared<GPUTexture>(
32
- texture, descriptor.value()->label.value_or(""), false);
33
- }
34
-
35
- void GPUSharedTextureMemory::beginAccess(
36
- std::shared_ptr<GPUTexture> texture, bool initialized,
37
- std::optional<std::vector<std::shared_ptr<GPUSharedFenceState>>> fences) {
38
- if (!texture) {
39
- throw std::runtime_error(
40
- "GPUSharedTextureMemory::beginAccess(): texture is null");
41
- }
42
- wgpu::SharedTextureMemoryBeginAccessDescriptor desc{};
43
- desc.initialized = initialized;
44
- desc.concurrentRead = false;
45
-
46
- // Built in lockstep so fenceCount covers both arrays, and kept in locals so
47
- // the raw pointers outlive the synchronous BeginAccess() below.
48
- std::vector<wgpu::SharedFence> rawFences;
49
- std::vector<uint64_t> values;
50
- if (fences.has_value()) {
51
- for (const auto &state : *fences) {
52
- if (state && state->fence) {
53
- rawFences.push_back(state->fence->get());
54
- values.push_back(state->signaledValue);
55
- }
56
- }
57
- }
58
- if (!rawFences.empty()) {
59
- desc.fenceCount = rawFences.size();
60
- desc.fences = rawFences.data();
61
- desc.signaledValues = values.data();
62
- } else {
63
- desc.fenceCount = 0;
64
- desc.fences = nullptr;
65
- desc.signaledValues = nullptr;
66
- }
67
-
68
- #if defined(__ANDROID__)
69
- // Dawn's Vulkan backend (AHardwareBuffer) validates that the begin-access
70
- // descriptor chains a SharedTextureMemoryVkImageLayoutBeginState specifying
71
- // the VkImageLayout to acquire the image into. UNDEFINED (= 0) on both ends
72
- // is the canonical "no prior GPU producer" pattern: Dawn performs an
73
- // external-queue acquire from VK_QUEUE_FAMILY_EXTERNAL which preserves the
74
- // AHB contents, then transitions to whatever layout the texture's actual
75
- // usage requires.
76
- wgpu::SharedTextureMemoryVkImageLayoutBeginState vkLayout{};
77
- vkLayout.oldLayout = 0;
78
- vkLayout.newLayout = 0;
79
- desc.nextInChain = &vkLayout;
80
- #endif
81
-
82
- auto status = _instance.BeginAccess(texture->get(), &desc);
83
- if (!status) {
84
- throw std::runtime_error("GPUSharedTextureMemory::beginAccess() failed");
85
- }
86
- }
87
-
88
- jsi::Value GPUSharedTextureMemory::endAccess(jsi::Runtime &runtime,
89
- const jsi::Value &,
90
- const jsi::Value *args,
91
- size_t count) {
92
- if (count < 1 || !args[0].isObject()) {
93
- throw jsi::JSError(
94
- runtime, "GPUSharedTextureMemory::endAccess(): expected (texture)");
95
- }
96
- auto texture = GPUTexture::fromValue(runtime, args[0]);
97
-
98
- wgpu::SharedTextureMemoryEndAccessState state{};
99
-
100
- #if defined(__ANDROID__)
101
- // Dawn's Vulkan backend writes the released old/new VkImageLayouts back into
102
- // a chained SharedTextureMemoryVkImageLayoutEndState; validation requires
103
- // the chain even when the caller doesn't read the values.
104
- wgpu::SharedTextureMemoryVkImageLayoutEndState vkLayout{};
105
- state.nextInChain = &vkLayout;
106
- #endif
107
-
108
- auto status = _instance.EndAccess(texture->get(), &state);
109
- if (!status) {
110
- throw jsi::JSError(runtime, "GPUSharedTextureMemory::endAccess() failed");
111
- }
112
-
113
- // Copy each wgpu::SharedFence (ref-counted) into its own GPUSharedFence
114
- // wrapper before `state` is destroyed.
115
- jsi::Array fences(runtime, state.fenceCount);
116
- for (size_t i = 0; i < state.fenceCount; i++) {
117
- wgpu::SharedFence fence = state.fences[i];
118
- auto wrapper = std::make_shared<GPUSharedFence>(std::move(fence), "");
119
- jsi::Object entry(runtime);
120
- entry.setProperty(runtime, "fence",
121
- GPUSharedFence::create(runtime, std::move(wrapper)));
122
- entry.setProperty(
123
- runtime, "signaledValue",
124
- jsi::BigInt::fromUint64(runtime, state.signaledValues[i]));
125
- fences.setValueAtIndex(runtime, i, std::move(entry));
126
- }
127
-
128
- jsi::Object result(runtime);
129
- result.setProperty(runtime, "initialized",
130
- jsi::Value(static_cast<bool>(state.initialized)));
131
- result.setProperty(runtime, "fences", std::move(fences));
132
- return result;
133
- }
134
-
135
- } // namespace rnwgpu
@@ -1,75 +0,0 @@
1
- #pragma once
2
-
3
- #include <cstdint>
4
- #include <memory>
5
- #include <optional>
6
- #include <string>
7
- #include <vector>
8
-
9
- #include "jsi2/NativeObject.h"
10
-
11
- #include "webgpu/webgpu_cpp.h"
12
-
13
- #include "GPUSharedFence.h"
14
- #include "GPUTexture.h"
15
- #include "descriptors/GPUSharedFenceState.h"
16
- #include "descriptors/GPUTextureDescriptor.h"
17
-
18
- namespace rnwgpu {
19
-
20
- namespace jsi = facebook::jsi;
21
-
22
- class GPUSharedTextureMemory : public NativeObject<GPUSharedTextureMemory> {
23
- public:
24
- static constexpr const char *CLASS_NAME = "GPUSharedTextureMemory";
25
-
26
- explicit GPUSharedTextureMemory(wgpu::SharedTextureMemory instance,
27
- std::string label)
28
- : NativeObject(CLASS_NAME), _instance(std::move(instance)),
29
- _label(std::move(label)) {}
30
-
31
- public:
32
- std::string getBrand() { return CLASS_NAME; }
33
-
34
- std::shared_ptr<GPUTexture> createTexture(
35
- std::optional<std::shared_ptr<GPUTextureDescriptor>> descriptor);
36
-
37
- // Optional `fences` are wait fences: Dawn waits for each to reach its
38
- // signaledValue before writing the surface. Throws on failure.
39
- void beginAccess(
40
- std::shared_ptr<GPUTexture> texture, bool initialized,
41
- std::optional<std::vector<std::shared_ptr<GPUSharedFenceState>>> fences);
42
-
43
- // endAccess(texture) -> { initialized, fences: { fence, signaledValue }[] }
44
- // Surfaces the fences Dawn produced for the access. Throws on failure.
45
- jsi::Value endAccess(jsi::Runtime &runtime, const jsi::Value &thisVal,
46
- const jsi::Value *args, size_t count);
47
-
48
- std::string getLabel() { return _label; }
49
- void setLabel(const std::string &label) {
50
- _label = label;
51
- _instance.SetLabel(_label.c_str());
52
- }
53
-
54
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
55
- installGetter(runtime, prototype, "__brand",
56
- &GPUSharedTextureMemory::getBrand);
57
- installMethod(runtime, prototype, "createTexture",
58
- &GPUSharedTextureMemory::createTexture);
59
- installMethod(runtime, prototype, "beginAccess",
60
- &GPUSharedTextureMemory::beginAccess);
61
- installMethod(runtime, prototype, "endAccess",
62
- &GPUSharedTextureMemory::endAccess);
63
- installGetterSetter(runtime, prototype, "label",
64
- &GPUSharedTextureMemory::getLabel,
65
- &GPUSharedTextureMemory::setLabel);
66
- }
67
-
68
- inline const wgpu::SharedTextureMemory get() { return _instance; }
69
-
70
- private:
71
- wgpu::SharedTextureMemory _instance;
72
- std::string _label;
73
- };
74
-
75
- } // namespace rnwgpu