@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,52 +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 GPUBindGroupLayout : public NativeObject<GPUBindGroupLayout> {
16
- public:
17
- static constexpr const char *CLASS_NAME = "GPUBindGroupLayout";
18
-
19
- explicit GPUBindGroupLayout(wgpu::BindGroupLayout 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", &GPUBindGroupLayout::getBrand);
33
- installGetterSetter(runtime, prototype, "label",
34
- &GPUBindGroupLayout::getLabel,
35
- &GPUBindGroupLayout::setLabel);
36
- }
37
-
38
- inline const wgpu::BindGroupLayout get() { return _instance; }
39
-
40
- size_t getMemoryPressure() override {
41
- // Bind group layouts define the structure/schema for bind groups
42
- // They store binding descriptors, types, and validation info
43
- // Estimate: 512 bytes per layout (smaller than actual bind groups)
44
- return 512;
45
- }
46
-
47
- private:
48
- wgpu::BindGroupLayout _instance;
49
- std::string _label;
50
- };
51
-
52
- } // namespace rnwgpu
@@ -1,107 +0,0 @@
1
- #include "GPUBuffer.h"
2
-
3
- #include <memory>
4
- #include <utility>
5
-
6
- #include "Convertors.h"
7
-
8
- namespace rnwgpu {
9
-
10
- std::shared_ptr<ArrayBuffer>
11
- GPUBuffer::getMappedRange(std::optional<size_t> o, std::optional<size_t> size) {
12
- auto offset = o.value_or(0);
13
- uint64_t s = size.has_value() ? size.value() : (_instance.GetSize() - offset);
14
-
15
- // uint64_t start = offset;
16
- // uint64_t end = offset + s;
17
- // for (auto& mapping : mappings_) {
18
- // if (mapping.Intersects(start, end)) {
19
- // Errors::OperationError(env).ThrowAsJavaScriptException();
20
- // return {};
21
- // }
22
- // }
23
-
24
- auto *ptr =
25
- (_instance.GetUsage() & wgpu::BufferUsage::MapWrite)
26
- ? _instance.GetMappedRange(offset, s)
27
- : const_cast<void *>(_instance.GetConstMappedRange(offset, s));
28
- if (!ptr) {
29
- throw std::runtime_error("Failed to get getMappedRange");
30
- }
31
- auto array_buffer = std::make_shared<ArrayBuffer>(ptr, s, 1);
32
- // TODO(crbug.com/dawn/1135): Ownership here is the wrong way around.
33
- // mappings_.emplace_back(Mapping{start, end,
34
- // Napi::Persistent(array_buffer)});
35
- return array_buffer;
36
- }
37
-
38
- void GPUBuffer::destroy() { _instance.Destroy(); }
39
-
40
- async::AsyncTaskHandle GPUBuffer::mapAsync(jsi::Runtime &runtime,
41
- uint64_t modeIn,
42
- std::optional<uint64_t> offset,
43
- std::optional<uint64_t> size) {
44
- Convertor conv;
45
- wgpu::MapMode mode;
46
- if (!conv(mode, modeIn)) {
47
- throw std::runtime_error("Couldn't get MapMode");
48
- }
49
- uint64_t rangeSize = size.has_value()
50
- ? size.value()
51
- : (_instance.GetSize() - offset.value_or(0));
52
- auto bufferHandle = _instance;
53
- uint64_t resolvedOffset = offset.value_or(0);
54
-
55
- // Post to the CALLING runtime's context, not the one captured at buffer
56
- // creation (_async): the buffer may have been created on another runtime and
57
- // boxed across (e.g. device created on the main JS runtime, mapAsync called
58
- // from a worklet). The returned Promise lives on the calling runtime, so it
59
- // must be settled from that runtime's own thread — and postTask itself
60
- // schedules the pump through its context's runtime (setTimeout), which is
61
- // only safe for the runtime we are currently executing on.
62
- auto context =
63
- async::RuntimeContext::getOrCreate(runtime, _async->instance());
64
- return context->postTask(
65
- [bufferHandle, mode, resolvedOffset,
66
- rangeSize](const async::AsyncTaskHandle::ResolveFunction &resolve,
67
- const async::AsyncTaskHandle::RejectFunction &reject) {
68
- bufferHandle.MapAsync(mode, resolvedOffset, rangeSize,
69
- wgpu::CallbackMode::AllowProcessEvents,
70
- [resolve, reject](wgpu::MapAsyncStatus status,
71
- wgpu::StringView message) {
72
- switch (status) {
73
- case wgpu::MapAsyncStatus::Success:
74
- resolve(nullptr);
75
- break;
76
- case wgpu::MapAsyncStatus::CallbackCancelled:
77
- reject("MapAsyncStatus::CallbackCancelled");
78
- break;
79
- case wgpu::MapAsyncStatus::Error:
80
- reject("MapAsyncStatus::Error");
81
- break;
82
- case wgpu::MapAsyncStatus::Aborted:
83
- reject("MapAsyncStatus::Aborted");
84
- break;
85
- default:
86
- reject(
87
- "MapAsyncStatus: " +
88
- std::to_string(static_cast<int>(status)));
89
- break;
90
- }
91
- });
92
- });
93
- }
94
-
95
- void GPUBuffer::unmap() { _instance.Unmap(); }
96
-
97
- uint64_t GPUBuffer::getSize() { return _instance.GetSize(); }
98
-
99
- double GPUBuffer::getUsage() {
100
- return static_cast<double>(_instance.GetUsage());
101
- }
102
-
103
- wgpu::BufferMapState GPUBuffer::getMapState() {
104
- return _instance.GetMapState();
105
- }
106
-
107
- } // namespace rnwgpu
@@ -1,88 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <optional>
5
- #include <string>
6
- #include <vector>
7
-
8
- #include "descriptors/Unions.h"
9
-
10
- #include "jsi2/NativeObject.h"
11
-
12
- #include "rnwgpu/async/AsyncTaskHandle.h"
13
- #include "rnwgpu/async/RuntimeContext.h"
14
-
15
- #include "webgpu/webgpu_cpp.h"
16
-
17
- #include "rnwgpu/ArrayBuffer.h"
18
-
19
- namespace rnwgpu {
20
-
21
- namespace jsi = facebook::jsi;
22
-
23
- class GPUBuffer : public NativeObject<GPUBuffer> {
24
- public:
25
- static constexpr const char *CLASS_NAME = "GPUBuffer";
26
-
27
- explicit GPUBuffer(wgpu::Buffer instance,
28
- std::shared_ptr<async::RuntimeContext> async,
29
- std::string label)
30
- : NativeObject(CLASS_NAME), _instance(instance), _async(async),
31
- _label(label) {}
32
-
33
- public:
34
- std::string getBrand() { return CLASS_NAME; }
35
-
36
- async::AsyncTaskHandle mapAsync(jsi::Runtime &runtime, uint64_t modeIn,
37
- std::optional<uint64_t> offset,
38
- std::optional<uint64_t> size);
39
- std::shared_ptr<ArrayBuffer> getMappedRange(std::optional<size_t> offset,
40
- std::optional<size_t> size);
41
- void unmap();
42
- void destroy();
43
-
44
- uint64_t getSize();
45
- double getUsage();
46
- wgpu::BufferMapState getMapState();
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", &GPUBuffer::getBrand);
56
- installMethodWithRuntime(runtime, prototype, "mapAsync",
57
- &GPUBuffer::mapAsync);
58
- installMethod(runtime, prototype, "getMappedRange",
59
- &GPUBuffer::getMappedRange);
60
- installMethod(runtime, prototype, "unmap", &GPUBuffer::unmap);
61
- installMethod(runtime, prototype, "destroy", &GPUBuffer::destroy);
62
- installGetter(runtime, prototype, "size", &GPUBuffer::getSize);
63
- installGetter(runtime, prototype, "usage", &GPUBuffer::getUsage);
64
- installGetter(runtime, prototype, "mapState", &GPUBuffer::getMapState);
65
- installGetterSetter(runtime, prototype, "label", &GPUBuffer::getLabel,
66
- &GPUBuffer::setLabel);
67
- }
68
-
69
- inline const wgpu::Buffer get() { return _instance; }
70
-
71
- size_t getMemoryPressure() override { return static_cast<size_t>(getSize()); }
72
-
73
- private:
74
- wgpu::Buffer _instance;
75
- std::shared_ptr<async::RuntimeContext> _async;
76
- std::string _label;
77
- struct Mapping {
78
- uint64_t start;
79
- uint64_t end;
80
- inline bool Intersects(uint64_t s, uint64_t e) const {
81
- return s < end && e > start;
82
- }
83
- std::shared_ptr<ArrayBuffer> buffer;
84
- };
85
- std::vector<Mapping> mappings;
86
- };
87
-
88
- } // namespace rnwgpu
@@ -1,75 +0,0 @@
1
- #include "GPUCanvasContext.h"
2
- #include "Convertors.h"
3
- #include <algorithm>
4
- #include <memory>
5
- #include <utility>
6
- #include <vector>
7
-
8
- namespace rnwgpu {
9
-
10
- void GPUCanvasContext::configure(
11
- std::shared_ptr<GPUCanvasConfiguration> configuration) {
12
- Convertor conv;
13
- wgpu::SurfaceConfiguration surfaceConfiguration;
14
- surfaceConfiguration.device = configuration->device->get();
15
- if (!conv(surfaceConfiguration.usage, configuration->usage) ||
16
- !conv(surfaceConfiguration.format, configuration->format)) {
17
- throw std::runtime_error("Error with SurfaceConfiguration");
18
- }
19
- // viewFormats are deep-copied into SurfaceInfo (which outlives this call);
20
- // Convertor-allocated arrays would dangle.
21
- std::vector<wgpu::TextureFormat> viewFormats;
22
- if (configuration->viewFormats.has_value()) {
23
- viewFormats = configuration->viewFormats.value();
24
- }
25
-
26
- #ifdef __APPLE__
27
- surfaceConfiguration.alphaMode = configuration->alphaMode;
28
- #endif
29
- surfaceConfiguration.presentMode = wgpu::PresentMode::Fifo;
30
- _surfaceInfo->configure(surfaceConfiguration, std::move(viewFormats));
31
- }
32
-
33
- void GPUCanvasContext::unconfigure() { _surfaceInfo->unconfigure(); }
34
-
35
- std::shared_ptr<GPUTexture> GPUCanvasContext::getCurrentTexture() {
36
- if (!_surfaceInfo->isConfigured()) {
37
- // Web parity: on the web this is an InvalidStateError, not a crash.
38
- throw std::runtime_error(
39
- "[WebGPU] getCurrentTexture() called on a canvas context that is not "
40
- "configured; call context.configure() first");
41
- }
42
- // The drawing buffer tracks canvas.width/height (like on the web); resize it
43
- // lazily when they changed. Sizes are clamped to 1 so a canvas that has not
44
- // been laid out yet (0x0) keeps working.
45
- auto prevSize = _surfaceInfo->getConfig();
46
- auto width = std::max(1, _canvas->getWidth());
47
- auto height = std::max(1, _canvas->getHeight());
48
- auto sizeHasChanged = prevSize.width != static_cast<uint32_t>(width) ||
49
- prevSize.height != static_cast<uint32_t>(height);
50
- if (sizeHasChanged) {
51
- _surfaceInfo->reconfigure(width, height);
52
- }
53
-
54
- auto texture = _surfaceInfo->getCurrentTexture();
55
- if (texture == nullptr) {
56
- throw std::runtime_error(
57
- "[WebGPU] getCurrentTexture() failed to acquire a texture");
58
- }
59
-
60
- auto size = _surfaceInfo->getSize();
61
- _canvas->setClientWidth(size.width);
62
- _canvas->setClientHeight(size.height);
63
-
64
- return std::make_shared<GPUTexture>(texture, "", false);
65
- }
66
-
67
- void GPUCanvasContext::present() {
68
- // presentFrame() is the end-of-frame boundary: it presents when this frame's
69
- // texture was acquired from the on-screen surface (offscreen and dropped
70
- // frames are skipped), clears the frame state, and adopts any surface that
71
- // attached while the frame was in flight.
72
- _surfaceInfo->presentFrame();
73
- }
74
-
75
- } // namespace rnwgpu
@@ -1,70 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <string>
5
- #include <utility>
6
-
7
- #include "descriptors/Unions.h"
8
-
9
- #include "webgpu/webgpu_cpp.h"
10
-
11
- #include "jsi2/NativeObject.h"
12
-
13
- #include "GPU.h"
14
- #include "GPUTexture.h"
15
- #include "descriptors/GPUCanvasConfiguration.h"
16
- #include "rnwgpu/Canvas.h"
17
- #include "rnwgpu/SurfaceRegistry.h"
18
-
19
- namespace rnwgpu {
20
-
21
- namespace jsi = facebook::jsi;
22
-
23
- class GPUCanvasContext : public NativeObject<GPUCanvasContext> {
24
- public:
25
- static constexpr const char *CLASS_NAME = "GPUCanvasContext";
26
-
27
- GPUCanvasContext(std::shared_ptr<GPU> gpu, int contextId, int width,
28
- int height)
29
- : NativeObject(CLASS_NAME), _gpu(std::move(gpu)) {
30
- _canvas = std::make_shared<Canvas>(nullptr, width, height);
31
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
32
- _surfaceInfo =
33
- registry.getSurfaceInfoOrCreate(contextId, _gpu->get(), width, height);
34
- }
35
-
36
- public:
37
- std::string getBrand() { return CLASS_NAME; }
38
-
39
- std::shared_ptr<Canvas> getCanvas() { return _canvas; }
40
-
41
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
42
- installGetter(runtime, prototype, "__brand", &GPUCanvasContext::getBrand);
43
- installGetter(runtime, prototype, "canvas", &GPUCanvasContext::getCanvas);
44
- installMethod(runtime, prototype, "configure",
45
- &GPUCanvasContext::configure);
46
- installMethod(runtime, prototype, "unconfigure",
47
- &GPUCanvasContext::unconfigure);
48
- installMethod(runtime, prototype, "getCurrentTexture",
49
- &GPUCanvasContext::getCurrentTexture);
50
- installMethod(runtime, prototype, "present", &GPUCanvasContext::present);
51
- }
52
-
53
- inline const wgpu::Surface get() { return nullptr; }
54
- void configure(std::shared_ptr<GPUCanvasConfiguration> configuration);
55
- void unconfigure();
56
- std::shared_ptr<GPUTexture> getCurrentTexture();
57
- // Present is explicit on every runtime (main JS, Reanimated UI, and dedicated
58
- // worklet runtimes). It runs synchronously on the calling thread, preserving
59
- // Dawn surface thread-affinity; frames rendered offscreen (no surface
60
- // attached) are skipped. It is also the end-of-frame boundary at which a
61
- // newly attached native surface is adopted (see SurfaceInfo).
62
- void present();
63
-
64
- private:
65
- std::shared_ptr<Canvas> _canvas;
66
- std::shared_ptr<SurfaceInfo> _surfaceInfo;
67
- std::shared_ptr<GPU> _gpu;
68
- };
69
-
70
- } // namespace rnwgpu
@@ -1,45 +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 GPUCommandBuffer : public NativeObject<GPUCommandBuffer> {
16
- public:
17
- static constexpr const char *CLASS_NAME = "GPUCommandBuffer";
18
-
19
- explicit GPUCommandBuffer(wgpu::CommandBuffer 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", &GPUCommandBuffer::getBrand);
33
- installGetterSetter(runtime, prototype, "label",
34
- &GPUCommandBuffer::getLabel,
35
- &GPUCommandBuffer::setLabel);
36
- }
37
-
38
- inline const wgpu::CommandBuffer get() { return _instance; }
39
-
40
- private:
41
- wgpu::CommandBuffer _instance;
42
- std::string _label;
43
- };
44
-
45
- } // namespace rnwgpu
@@ -1,179 +0,0 @@
1
- #include "GPUCommandEncoder.h"
2
-
3
- #include <memory>
4
- #include <string>
5
- #include <vector>
6
-
7
- #include "Convertors.h"
8
-
9
- namespace rnwgpu {
10
-
11
- void GPUCommandEncoder::copyBufferToBuffer(
12
- std::shared_ptr<GPUBuffer> source, uint64_t sourceOffset,
13
- std::shared_ptr<GPUBuffer> destination, uint64_t destinationOffset,
14
- uint64_t size) {
15
- Convertor conv;
16
-
17
- wgpu::Buffer src{};
18
- wgpu::Buffer dst{};
19
- if (!conv(src, source) || //
20
- !conv(dst, destination)) {
21
- return;
22
- }
23
- _instance.CopyBufferToBuffer(src, sourceOffset, dst, destinationOffset, size);
24
- }
25
-
26
- std::shared_ptr<GPUCommandBuffer> GPUCommandEncoder::finish(
27
- std::optional<std::shared_ptr<GPUCommandBufferDescriptor>> descriptor) {
28
- wgpu::CommandBufferDescriptor desc{};
29
- Convertor conv;
30
- if (!conv(desc, descriptor)) {
31
- throw std::runtime_error(
32
- "GPUCommandEncoder::finish(): error with GPUCommandBufferDescriptor");
33
- }
34
- auto commandBuffer = _instance.Finish(&desc);
35
- return std::make_shared<GPUCommandBuffer>(
36
- commandBuffer,
37
- descriptor.has_value() ? descriptor.value()->label.value_or("") : "");
38
- }
39
-
40
- std::shared_ptr<GPURenderPassEncoder> GPUCommandEncoder::beginRenderPass(
41
- std::shared_ptr<GPURenderPassDescriptor> descriptor) {
42
-
43
- wgpu::RenderPassDescriptor desc{};
44
- wgpu::RenderPassMaxDrawCount maxDrawCountDesc{};
45
- desc.nextInChain = &maxDrawCountDesc;
46
- Convertor conv;
47
-
48
- // TODO: why is this not in Converter
49
- if (!conv(desc.colorAttachments, desc.colorAttachmentCount,
50
- descriptor->colorAttachments) ||
51
- !conv(desc.depthStencilAttachment, descriptor->depthStencilAttachment) ||
52
- !conv(desc.label, descriptor->label) ||
53
- !conv(desc.occlusionQuerySet, descriptor->occlusionQuerySet) ||
54
- !conv(desc.timestampWrites, descriptor->timestampWrites) ||
55
- !conv(maxDrawCountDesc.maxDrawCount, descriptor->maxDrawCount)) {
56
- throw std::runtime_error("PUCommandEncoder::beginRenderPass(): couldn't "
57
- "get GPURenderPassDescriptor");
58
- }
59
- auto renderPass = _instance.BeginRenderPass(&desc);
60
- return std::make_shared<GPURenderPassEncoder>(renderPass,
61
- descriptor->label.value_or(""));
62
- }
63
-
64
- void GPUCommandEncoder::copyTextureToBuffer(
65
- std::shared_ptr<GPUImageCopyTexture> source,
66
- std::shared_ptr<GPUImageCopyBuffer> destination,
67
- std::shared_ptr<GPUExtent3D> copySize) {
68
- Convertor conv;
69
- wgpu::TexelCopyTextureInfo src{};
70
- wgpu::TexelCopyBufferInfo dst{};
71
- wgpu::Extent3D size{};
72
- if (!conv(src, source) || //
73
- !conv(dst, destination) || //
74
- !conv(size, copySize)) {
75
- return;
76
- }
77
- _instance.CopyTextureToBuffer(&src, &dst, &size);
78
- }
79
-
80
- void GPUCommandEncoder::copyTextureToTexture(
81
- std::shared_ptr<GPUImageCopyTexture> source,
82
- std::shared_ptr<GPUImageCopyTexture> destination,
83
- std::shared_ptr<GPUExtent3D> copySize) {
84
- Convertor conv;
85
-
86
- wgpu::TexelCopyTextureInfo src{};
87
- wgpu::TexelCopyTextureInfo dst{};
88
- wgpu::Extent3D size{};
89
- if (!conv(src, source) || //
90
- !conv(dst, destination) || //
91
- !conv(size, copySize)) {
92
- return;
93
- }
94
-
95
- _instance.CopyTextureToTexture(&src, &dst, &size);
96
- }
97
-
98
- std::shared_ptr<GPUComputePassEncoder> GPUCommandEncoder::beginComputePass(
99
- std::optional<std::shared_ptr<GPUComputePassDescriptor>> descriptor) {
100
- wgpu::ComputePassDescriptor desc;
101
- Convertor conv;
102
- if (!conv(desc, descriptor)) {
103
- throw std::runtime_error("GPUCommandEncoder.beginComputePass(): couldn't "
104
- "access GPUComputePassDescriptor.");
105
- }
106
- auto computePass = _instance.BeginComputePass(&desc);
107
- return std::make_shared<GPUComputePassEncoder>(
108
- computePass,
109
- descriptor.has_value() ? descriptor.value()->label.value_or("") : "");
110
- }
111
-
112
- void GPUCommandEncoder::resolveQuerySet(std::shared_ptr<GPUQuerySet> querySet,
113
- uint32_t firstQuery,
114
- uint32_t queryCount,
115
- std::shared_ptr<GPUBuffer> destination,
116
- uint64_t destinationOffset) {
117
- Convertor conv;
118
-
119
- wgpu::QuerySet q{};
120
- uint32_t f = 0;
121
- uint32_t c = 0;
122
- wgpu::Buffer b{};
123
- uint64_t o = 0;
124
-
125
- if (!conv(q, querySet) || //
126
- !conv(f, firstQuery) || //
127
- !conv(c, queryCount) || //
128
- !conv(b, destination) || //
129
- !conv(o, destinationOffset)) {
130
- return;
131
- }
132
-
133
- _instance.ResolveQuerySet(q, f, c, b, o);
134
- }
135
-
136
- void GPUCommandEncoder::copyBufferToTexture(
137
- std::shared_ptr<GPUImageCopyBuffer> source,
138
- std::shared_ptr<GPUImageCopyTexture> destination,
139
- std::shared_ptr<GPUExtent3D> copySize) {
140
- Convertor conv;
141
-
142
- wgpu::TexelCopyBufferInfo src{};
143
- wgpu::TexelCopyTextureInfo dst{};
144
- wgpu::Extent3D size{};
145
- if (!conv(src, source) || //
146
- !conv(dst, destination) || //
147
- !conv(size, copySize)) {
148
- return;
149
- }
150
-
151
- _instance.CopyBufferToTexture(&src, &dst, &size);
152
- }
153
-
154
- void GPUCommandEncoder::clearBuffer(std::shared_ptr<GPUBuffer> buffer,
155
- std::optional<uint64_t> offset,
156
- std::optional<uint64_t> size) {
157
- Convertor conv;
158
-
159
- wgpu::Buffer b{};
160
- uint64_t s = wgpu::kWholeSize;
161
- if (!conv(b, buffer) || //
162
- !conv(s, size)) {
163
- return;
164
- }
165
-
166
- _instance.ClearBuffer(b, offset.value_or(0), s);
167
- }
168
-
169
- void GPUCommandEncoder::pushDebugGroup(std::string groupLabel) {
170
- _instance.PushDebugGroup(groupLabel.c_str());
171
- }
172
-
173
- void GPUCommandEncoder::popDebugGroup() { _instance.PopDebugGroup(); }
174
-
175
- void GPUCommandEncoder::insertDebugMarker(std::string markerLabel) {
176
- _instance.InsertDebugMarker(markerLabel.c_str());
177
- }
178
-
179
- } // namespace rnwgpu