@shopify/react-native-skia 2.4.15 → 2.4.17

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 (226) hide show
  1. package/android/CMakeLists.txt +69 -0
  2. package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +19 -7
  3. package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseViewManager.java +7 -0
  4. package/apple/RNSkApplePlatformContext.mm +4 -0
  5. package/cpp/api/JsiSkApi.h +31 -0
  6. package/cpp/api/JsiSkImageFactory.h +69 -1
  7. package/cpp/api/JsiSkImageFilter.h +1 -0
  8. package/cpp/api/JsiSkPath.h +1 -1
  9. package/cpp/jsi/RuntimeAwareCache.h +0 -2
  10. package/cpp/jsi2/EnumMapper.h +45 -0
  11. package/cpp/jsi2/JSIConverter.h +468 -0
  12. package/cpp/jsi2/NativeObject.h +598 -0
  13. package/cpp/jsi2/Promise.cpp +44 -0
  14. package/cpp/jsi2/Promise.h +35 -0
  15. package/cpp/rnskia/RNDawnContext.h +114 -0
  16. package/cpp/rnskia/RNSkManager.cpp +41 -1
  17. package/cpp/rnwgpu/ArrayBuffer.h +68 -0
  18. package/cpp/rnwgpu/api/Convertors.h +761 -0
  19. package/cpp/rnwgpu/api/External.h +12 -0
  20. package/cpp/rnwgpu/api/GPU.cpp +129 -0
  21. package/cpp/rnwgpu/api/GPU.h +57 -0
  22. package/cpp/rnwgpu/api/GPUAdapter.cpp +178 -0
  23. package/cpp/rnwgpu/api/GPUAdapter.h +59 -0
  24. package/cpp/rnwgpu/api/GPUAdapterInfo.h +57 -0
  25. package/cpp/rnwgpu/api/GPUBindGroup.cpp +3 -0
  26. package/cpp/rnwgpu/api/GPUBindGroup.h +51 -0
  27. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +52 -0
  28. package/cpp/rnwgpu/api/GPUBuffer.cpp +97 -0
  29. package/cpp/rnwgpu/api/GPUBuffer.h +87 -0
  30. package/cpp/rnwgpu/api/GPUCommandBuffer.h +45 -0
  31. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +179 -0
  32. package/cpp/rnwgpu/api/GPUCommandEncoder.h +111 -0
  33. package/cpp/rnwgpu/api/GPUCompilationInfo.h +79 -0
  34. package/cpp/rnwgpu/api/GPUCompilationMessage.h +36 -0
  35. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +60 -0
  36. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +85 -0
  37. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +12 -0
  38. package/cpp/rnwgpu/api/GPUComputePipeline.h +60 -0
  39. package/cpp/rnwgpu/api/GPUDevice.cpp +434 -0
  40. package/cpp/rnwgpu/api/GPUDevice.h +174 -0
  41. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +7 -0
  42. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +40 -0
  43. package/cpp/rnwgpu/api/GPUError.h +35 -0
  44. package/cpp/rnwgpu/api/GPUExtent3D.h +66 -0
  45. package/cpp/rnwgpu/api/GPUExternalTexture.h +45 -0
  46. package/cpp/rnwgpu/api/GPUFeatures.h +212 -0
  47. package/cpp/rnwgpu/api/GPUInternalError.h +31 -0
  48. package/cpp/rnwgpu/api/GPUOrigin2D.h +55 -0
  49. package/cpp/rnwgpu/api/GPUOrigin3D.h +62 -0
  50. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +33 -0
  51. package/cpp/rnwgpu/api/GPUPipelineLayout.h +45 -0
  52. package/cpp/rnwgpu/api/GPUQuerySet.cpp +11 -0
  53. package/cpp/rnwgpu/api/GPUQuerySet.h +73 -0
  54. package/cpp/rnwgpu/api/GPUQueue.cpp +169 -0
  55. package/cpp/rnwgpu/api/GPUQueue.h +84 -0
  56. package/cpp/rnwgpu/api/GPURenderBundle.h +44 -0
  57. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +131 -0
  58. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +110 -0
  59. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +165 -0
  60. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +130 -0
  61. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +13 -0
  62. package/cpp/rnwgpu/api/GPURenderPipeline.h +61 -0
  63. package/cpp/rnwgpu/api/GPUSampler.h +44 -0
  64. package/cpp/rnwgpu/api/GPUShaderModule.cpp +51 -0
  65. package/cpp/rnwgpu/api/GPUShaderModule.h +66 -0
  66. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +129 -0
  67. package/cpp/rnwgpu/api/GPUSupportedLimits.h +131 -0
  68. package/cpp/rnwgpu/api/GPUTexture.cpp +47 -0
  69. package/cpp/rnwgpu/api/GPUTexture.h +150 -0
  70. package/cpp/rnwgpu/api/GPUTextureView.h +44 -0
  71. package/cpp/rnwgpu/api/GPUValidationError.h +32 -0
  72. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +64 -0
  73. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +71 -0
  74. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +56 -0
  75. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +97 -0
  76. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +57 -0
  77. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +52 -0
  78. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +56 -0
  79. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +56 -0
  80. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +59 -0
  81. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +39 -0
  82. package/cpp/rnwgpu/api/descriptors/GPUColor.h +66 -0
  83. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +58 -0
  84. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +29 -0
  85. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +45 -0
  86. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +45 -0
  87. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +56 -0
  88. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +58 -0
  89. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +67 -0
  90. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +103 -0
  91. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +99 -0
  92. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +38 -0
  93. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +71 -0
  94. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +73 -0
  95. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +62 -0
  96. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +62 -0
  97. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +65 -0
  98. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +81 -0
  99. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +54 -0
  100. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +22 -0
  101. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +54 -0
  102. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +57 -0
  103. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +69 -0
  104. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +61 -0
  105. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +55 -0
  106. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +43 -0
  107. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +45 -0
  108. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +80 -0
  109. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +81 -0
  110. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +101 -0
  111. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +92 -0
  112. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +58 -0
  113. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +103 -0
  114. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +51 -0
  115. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +45 -0
  116. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +110 -0
  117. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +60 -0
  118. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +62 -0
  119. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +25 -0
  120. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +64 -0
  121. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +59 -0
  122. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +59 -0
  123. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +91 -0
  124. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +29 -0
  125. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +91 -0
  126. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +64 -0
  127. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +53 -0
  128. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +62 -0
  129. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +73 -0
  130. package/cpp/rnwgpu/api/descriptors/Unions.h +1984 -0
  131. package/cpp/rnwgpu/async/AsyncDispatcher.h +28 -0
  132. package/cpp/rnwgpu/async/AsyncRunner.cpp +181 -0
  133. package/cpp/rnwgpu/async/AsyncRunner.h +56 -0
  134. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +181 -0
  135. package/cpp/rnwgpu/async/AsyncTaskHandle.h +55 -0
  136. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +23 -0
  137. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +22 -0
  138. package/lib/commonjs/Platform/Platform.web.js +1 -2
  139. package/lib/commonjs/Platform/Platform.web.js.map +1 -1
  140. package/lib/commonjs/external/reanimated/buffers.js.map +1 -1
  141. package/lib/commonjs/external/reanimated/interpolators.d.ts +1 -4
  142. package/lib/commonjs/renderer/Canvas.js +4 -3
  143. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  144. package/lib/commonjs/renderer/components/Group.js +1 -2
  145. package/lib/commonjs/renderer/components/Group.js.map +1 -1
  146. package/lib/commonjs/renderer/components/shapes/FitBox.js +1 -2
  147. package/lib/commonjs/renderer/components/shapes/FitBox.js.map +1 -1
  148. package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
  149. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +20 -0
  150. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  151. package/lib/commonjs/skia/types/RuntimeEffect/RuntimeEffect.js.map +1 -1
  152. package/lib/commonjs/skia/types/Skia.d.ts +17 -0
  153. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  154. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -0
  155. package/lib/commonjs/skia/web/JsiSkImageFactory.js +6 -0
  156. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  157. package/lib/commonjs/skia/web/JsiSkParagraphStyle.js +2 -2
  158. package/lib/commonjs/skia/web/JsiSkParagraphStyle.js.map +1 -1
  159. package/lib/commonjs/skia/web/JsiSkia.js +6 -0
  160. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  161. package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js.map +1 -1
  162. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  163. package/lib/commonjs/sksg/Recorder/commands/PathEffects.js.map +1 -1
  164. package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
  165. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +2 -0
  166. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js +2 -0
  167. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  168. package/lib/commonjs/views/SkiaPictureView.web.js +4 -4
  169. package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
  170. package/lib/commonjs/web/WithSkiaWeb.js +1 -2
  171. package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
  172. package/lib/module/external/reanimated/buffers.js.map +1 -1
  173. package/lib/module/external/reanimated/interpolators.d.ts +1 -4
  174. package/lib/module/renderer/Canvas.js +3 -1
  175. package/lib/module/renderer/Canvas.js.map +1 -1
  176. package/lib/module/skia/types/ContourMeasure.js.map +1 -1
  177. package/lib/module/skia/types/Image/ImageFactory.d.ts +20 -0
  178. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  179. package/lib/module/skia/types/RuntimeEffect/RuntimeEffect.js.map +1 -1
  180. package/lib/module/skia/types/Skia.d.ts +17 -0
  181. package/lib/module/skia/types/Skia.js.map +1 -1
  182. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -0
  183. package/lib/module/skia/web/JsiSkImageFactory.js +6 -0
  184. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  185. package/lib/module/skia/web/JsiSkParagraphStyle.js +2 -2
  186. package/lib/module/skia/web/JsiSkParagraphStyle.js.map +1 -1
  187. package/lib/module/skia/web/JsiSkia.js +6 -0
  188. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  189. package/lib/module/sksg/Recorder/commands/ColorFilters.js.map +1 -1
  190. package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  191. package/lib/module/sksg/Recorder/commands/PathEffects.js.map +1 -1
  192. package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
  193. package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +2 -0
  194. package/lib/module/specs/SkiaPictureViewNativeComponent.js +4 -0
  195. package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  196. package/lib/module/views/SkiaPictureView.web.js +3 -2
  197. package/lib/module/views/SkiaPictureView.web.js.map +1 -1
  198. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -0
  199. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +2 -0
  200. package/lib/typescript/lib/module/renderer/Canvas.d.ts +1 -1
  201. package/lib/typescript/lib/module/skia/Skia.web.d.ts +2 -0
  202. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -0
  203. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +2 -0
  204. package/lib/typescript/lib/module/views/SkiaPictureView.d.ts +1 -1
  205. package/lib/typescript/src/external/reanimated/interpolators.d.ts +1 -4
  206. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +20 -0
  207. package/lib/typescript/src/skia/types/Skia.d.ts +17 -0
  208. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -0
  209. package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +2 -0
  210. package/package.json +20 -16
  211. package/react-native-skia.podspec +52 -13
  212. package/scripts/install-skia.mjs +99 -48
  213. package/src/external/reanimated/buffers.ts +1 -1
  214. package/src/renderer/Canvas.tsx +3 -2
  215. package/src/skia/types/ContourMeasure.tsx +1 -2
  216. package/src/skia/types/Image/ImageFactory.ts +22 -0
  217. package/src/skia/types/RuntimeEffect/RuntimeEffect.ts +1 -2
  218. package/src/skia/types/Skia.ts +17 -0
  219. package/src/skia/web/JsiSkImageFactory.ts +8 -0
  220. package/src/skia/web/JsiSkia.ts +6 -0
  221. package/src/sksg/Recorder/commands/ColorFilters.ts +3 -2
  222. package/src/sksg/Recorder/commands/ImageFilters.ts +3 -2
  223. package/src/sksg/Recorder/commands/PathEffects.ts +3 -2
  224. package/src/sksg/Recorder/commands/Shaders.ts +3 -2
  225. package/src/specs/SkiaPictureViewNativeComponent.ts +7 -0
  226. package/src/views/SkiaPictureView.web.tsx +4 -1
@@ -0,0 +1,62 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <optional>
5
+ #include <variant>
6
+ #include <vector>
7
+
8
+ #include "webgpu/webgpu_cpp.h"
9
+
10
+ #include "Convertors.h"
11
+ #include "jsi2/JSIConverter.h"
12
+
13
+ #include "GPUOrigin2D.h"
14
+
15
+ namespace jsi = facebook::jsi;
16
+
17
+ namespace rnwgpu {
18
+
19
+ struct GPUImageCopyExternalImage {
20
+ //std::shared_ptr<ImageBitmap> source; // GPUImageCopyExternalImageSource
21
+ std::optional<std::shared_ptr<GPUOrigin2D>> origin; // GPUOrigin2DStrict
22
+ std::optional<bool> flipY; // boolean
23
+ };
24
+
25
+ } // namespace rnwgpu
26
+
27
+ namespace rnwgpu {
28
+
29
+ template <>
30
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUImageCopyExternalImage>> {
31
+ static std::shared_ptr<rnwgpu::GPUImageCopyExternalImage>
32
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
33
+ auto result = std::make_unique<rnwgpu::GPUImageCopyExternalImage>();
34
+ if (!outOfBounds && arg.isObject()) {
35
+ auto obj = arg.getObject(runtime);
36
+ // if (obj.hasProperty(runtime, "source")) {
37
+ // auto prop = obj.getProperty(runtime, "source");
38
+ // result->source = JSIConverter<std::shared_ptr<ImageBitmap>>::fromJSI(
39
+ // runtime, prop, false);
40
+ // }
41
+ if (obj.hasProperty(runtime, "origin")) {
42
+ auto prop = obj.getProperty(runtime, "origin");
43
+ result->origin = JSIConverter<std::shared_ptr<GPUOrigin2D>>::fromJSI(
44
+ runtime, prop, false);
45
+ }
46
+
47
+ if (obj.hasProperty(runtime, "flipY")) {
48
+ auto prop = obj.getProperty(runtime, "flipY");
49
+ result->flipY = JSIConverter<bool>::fromJSI(runtime, prop, false);
50
+ }
51
+ }
52
+
53
+ return result;
54
+ }
55
+ static jsi::Value
56
+ toJSI(jsi::Runtime &runtime,
57
+ std::shared_ptr<rnwgpu::GPUImageCopyExternalImage> arg) {
58
+ throw std::runtime_error("Invalid GPUImageCopyExternalImage::toJSI()");
59
+ }
60
+ };
61
+
62
+ } // namespace rnwgpu
@@ -0,0 +1,65 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ #include "GPUOrigin3D.h"
10
+ #include "rnwgpu/api/GPUTexture.h"
11
+
12
+ namespace jsi = facebook::jsi;
13
+
14
+ namespace rnwgpu {
15
+
16
+ struct GPUImageCopyTexture {
17
+ std::shared_ptr<GPUTexture> texture; // GPUTexture
18
+ std::optional<double> mipLevel; // GPUIntegerCoordinate
19
+ std::optional<std::shared_ptr<GPUOrigin3D>> origin; // GPUOrigin3D
20
+ std::optional<wgpu::TextureAspect> aspect; // GPUTextureAspect
21
+ };
22
+
23
+ } // namespace rnwgpu
24
+
25
+ namespace rnwgpu {
26
+
27
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUImageCopyTexture>> {
28
+ static std::shared_ptr<rnwgpu::GPUImageCopyTexture>
29
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
30
+ auto result = std::make_unique<rnwgpu::GPUImageCopyTexture>();
31
+ if (!outOfBounds && arg.isObject()) {
32
+ auto value = arg.getObject(runtime);
33
+ if (value.hasProperty(runtime, "texture")) {
34
+ auto prop = value.getProperty(runtime, "texture");
35
+ result->texture = JSIConverter<std::shared_ptr<GPUTexture>>::fromJSI(
36
+ runtime, prop, false);
37
+ }
38
+ if (value.hasProperty(runtime, "mipLevel")) {
39
+ auto prop = value.getProperty(runtime, "mipLevel");
40
+ result->mipLevel =
41
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "origin")) {
44
+ auto prop = value.getProperty(runtime, "origin");
45
+ result->origin =
46
+ JSIConverter<std::optional<std::shared_ptr<GPUOrigin3D>>>::fromJSI(
47
+ runtime, prop, false);
48
+ }
49
+ if (value.hasProperty(runtime, "aspect")) {
50
+ auto prop = value.getProperty(runtime, "aspect");
51
+ result->aspect =
52
+ JSIConverter<std::optional<wgpu::TextureAspect>>::fromJSI(
53
+ runtime, prop, false);
54
+ }
55
+ }
56
+
57
+ return result;
58
+ }
59
+ static jsi::Value toJSI(jsi::Runtime &runtime,
60
+ std::shared_ptr<rnwgpu::GPUImageCopyTexture> arg) {
61
+ throw std::runtime_error("Invalid GPUImageCopyTexture::toJSI()");
62
+ }
63
+ };
64
+
65
+ } // namespace rnwgpu
@@ -0,0 +1,81 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ #include "External.h"
10
+ #include "GPUOrigin3D.h"
11
+ #include "rnwgpu/api/GPUTexture.h"
12
+
13
+ namespace jsi = facebook::jsi;
14
+
15
+ namespace rnwgpu {
16
+
17
+ struct GPUImageCopyTextureTagged {
18
+ std::optional<PredefinedColorSpace> colorSpace; // PredefinedColorSpace
19
+ std::optional<bool> premultipliedAlpha; // boolean
20
+ std::shared_ptr<GPUTexture> texture; // GPUTexture
21
+ std::optional<double> mipLevel; // GPUIntegerCoordinate
22
+ std::optional<std::shared_ptr<GPUOrigin3D>> origin; // GPUOrigin3D
23
+ std::optional<wgpu::TextureAspect> aspect; // GPUTextureAspect
24
+ };
25
+
26
+ } // namespace rnwgpu
27
+
28
+ namespace rnwgpu {
29
+
30
+ template <>
31
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUImageCopyTextureTagged>> {
32
+ static std::shared_ptr<rnwgpu::GPUImageCopyTextureTagged>
33
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
34
+ auto result = std::make_unique<rnwgpu::GPUImageCopyTextureTagged>();
35
+ if (!outOfBounds && arg.isObject()) {
36
+ auto value = arg.getObject(runtime);
37
+ if (value.hasProperty(runtime, "colorSpace")) {
38
+ auto prop = value.getProperty(runtime, "colorSpace");
39
+ result->colorSpace =
40
+ JSIConverter<std::optional<PredefinedColorSpace>>::fromJSI(
41
+ runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "premultipliedAlpha")) {
44
+ auto prop = value.getProperty(runtime, "premultipliedAlpha");
45
+ result->premultipliedAlpha =
46
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
47
+ }
48
+ if (value.hasProperty(runtime, "texture")) {
49
+ auto prop = value.getProperty(runtime, "texture");
50
+ result->texture = JSIConverter<std::shared_ptr<GPUTexture>>::fromJSI(
51
+ runtime, prop, false);
52
+ }
53
+ if (value.hasProperty(runtime, "mipLevel")) {
54
+ auto prop = value.getProperty(runtime, "mipLevel");
55
+ result->mipLevel =
56
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
57
+ }
58
+ if (value.hasProperty(runtime, "origin")) {
59
+ auto prop = value.getProperty(runtime, "origin");
60
+ result->origin =
61
+ JSIConverter<std::optional<std::shared_ptr<GPUOrigin3D>>>::fromJSI(
62
+ runtime, prop, false);
63
+ }
64
+ if (value.hasProperty(runtime, "aspect")) {
65
+ auto prop = value.getProperty(runtime, "aspect");
66
+ result->aspect =
67
+ JSIConverter<std::optional<wgpu::TextureAspect>>::fromJSI(
68
+ runtime, prop, false);
69
+ }
70
+ }
71
+
72
+ return result;
73
+ }
74
+ static jsi::Value
75
+ toJSI(jsi::Runtime &runtime,
76
+ std::shared_ptr<rnwgpu::GPUImageCopyTextureTagged> arg) {
77
+ throw std::runtime_error("Invalid GPUImageCopyTextureTagged::toJSI()");
78
+ }
79
+ };
80
+
81
+ } // namespace rnwgpu
@@ -0,0 +1,54 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ namespace rnwgpu {
12
+
13
+ struct GPUImageDataLayout {
14
+ std::optional<double> offset; // GPUSize64
15
+ std::optional<double> bytesPerRow; // GPUSize32
16
+ std::optional<double> rowsPerImage; // GPUSize32
17
+ };
18
+
19
+ } // namespace rnwgpu
20
+
21
+ namespace rnwgpu {
22
+
23
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUImageDataLayout>> {
24
+ static std::shared_ptr<rnwgpu::GPUImageDataLayout>
25
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
26
+ auto result = std::make_unique<rnwgpu::GPUImageDataLayout>();
27
+ if (!outOfBounds && arg.isObject()) {
28
+ auto value = arg.getObject(runtime);
29
+ if (value.hasProperty(runtime, "offset")) {
30
+ auto prop = value.getProperty(runtime, "offset");
31
+ result->offset =
32
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
33
+ }
34
+ if (value.hasProperty(runtime, "bytesPerRow")) {
35
+ auto prop = value.getProperty(runtime, "bytesPerRow");
36
+ result->bytesPerRow =
37
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
38
+ }
39
+ if (value.hasProperty(runtime, "rowsPerImage")) {
40
+ auto prop = value.getProperty(runtime, "rowsPerImage");
41
+ result->rowsPerImage =
42
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
43
+ }
44
+ }
45
+
46
+ return result;
47
+ }
48
+ static jsi::Value toJSI(jsi::Runtime &runtime,
49
+ std::shared_ptr<rnwgpu::GPUImageDataLayout> arg) {
50
+ throw std::runtime_error("Invalid GPUImageDataLayout::toJSI()");
51
+ }
52
+ };
53
+
54
+ } // namespace rnwgpu
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ namespace rnwgpu {
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ class GPUMapMode {
12
+ public:
13
+ static jsi::Object create(jsi::Runtime &runtime) {
14
+ jsi::Object obj(runtime);
15
+ obj.setProperty(runtime, "READ", static_cast<double>(wgpu::MapMode::Read));
16
+ obj.setProperty(runtime, "WRITE",
17
+ static_cast<double>(wgpu::MapMode::Write));
18
+ return obj;
19
+ }
20
+ };
21
+
22
+ } // namespace rnwgpu
@@ -0,0 +1,54 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ namespace rnwgpu {
12
+
13
+ struct GPUMultisampleState {
14
+ std::optional<double> count; // GPUSize32
15
+ std::optional<double> mask; // GPUSampleMask
16
+ std::optional<bool> alphaToCoverageEnabled; // boolean
17
+ };
18
+
19
+ } // namespace rnwgpu
20
+
21
+ namespace rnwgpu {
22
+
23
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUMultisampleState>> {
24
+ static std::shared_ptr<rnwgpu::GPUMultisampleState>
25
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
26
+ auto result = std::make_unique<rnwgpu::GPUMultisampleState>();
27
+ if (!outOfBounds && arg.isObject()) {
28
+ auto value = arg.getObject(runtime);
29
+ if (value.hasProperty(runtime, "count")) {
30
+ auto prop = value.getProperty(runtime, "count");
31
+ result->count =
32
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
33
+ }
34
+ if (value.hasProperty(runtime, "mask")) {
35
+ auto prop = value.getProperty(runtime, "mask");
36
+ result->mask =
37
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
38
+ }
39
+ if (value.hasProperty(runtime, "alphaToCoverageEnabled")) {
40
+ auto prop = value.getProperty(runtime, "alphaToCoverageEnabled");
41
+ result->alphaToCoverageEnabled =
42
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
43
+ }
44
+ }
45
+
46
+ return result;
47
+ }
48
+ static jsi::Value toJSI(jsi::Runtime &runtime,
49
+ std::shared_ptr<rnwgpu::GPUMultisampleState> arg) {
50
+ throw std::runtime_error("Invalid GPUMultisampleState::toJSI()");
51
+ }
52
+ };
53
+
54
+ } // namespace rnwgpu
@@ -0,0 +1,57 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <vector>
6
+
7
+ #include "webgpu/webgpu_cpp.h"
8
+
9
+ #include "jsi2/JSIConverter.h"
10
+
11
+ #include "rnwgpu/api/GPUBindGroupLayout.h"
12
+
13
+ namespace jsi = facebook::jsi;
14
+
15
+ namespace rnwgpu {
16
+
17
+ struct GPUPipelineLayoutDescriptor {
18
+ std::vector<std::shared_ptr<GPUBindGroupLayout>>
19
+ bindGroupLayouts; // Iterable<GPUBindGroupLayout>
20
+ std::optional<std::string> label; // string
21
+ };
22
+
23
+ } // namespace rnwgpu
24
+
25
+ namespace rnwgpu {
26
+
27
+ template <>
28
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUPipelineLayoutDescriptor>> {
29
+ static std::shared_ptr<rnwgpu::GPUPipelineLayoutDescriptor>
30
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
31
+ auto result = std::make_unique<rnwgpu::GPUPipelineLayoutDescriptor>();
32
+ if (!outOfBounds && arg.isObject()) {
33
+ auto value = arg.getObject(runtime);
34
+ if (value.hasProperty(runtime, "bindGroupLayouts")) {
35
+ auto prop = value.getProperty(runtime, "bindGroupLayouts");
36
+ result->bindGroupLayouts = JSIConverter<
37
+ std::vector<std::shared_ptr<GPUBindGroupLayout>>>::fromJSI(runtime,
38
+ prop,
39
+ false);
40
+ }
41
+ if (value.hasProperty(runtime, "label")) {
42
+ auto prop = value.getProperty(runtime, "label");
43
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
44
+ runtime, prop, false);
45
+ }
46
+ }
47
+
48
+ return result;
49
+ }
50
+ static jsi::Value
51
+ toJSI(jsi::Runtime &runtime,
52
+ std::shared_ptr<rnwgpu::GPUPipelineLayoutDescriptor> arg) {
53
+ throw std::runtime_error("Invalid GPUPipelineLayoutDescriptor::toJSI()");
54
+ }
55
+ };
56
+
57
+ } // namespace rnwgpu
@@ -0,0 +1,69 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ namespace rnwgpu {
12
+
13
+ struct GPUPrimitiveState {
14
+ std::optional<wgpu::PrimitiveTopology> topology; // GPUPrimitiveTopology
15
+ std::optional<wgpu::IndexFormat> stripIndexFormat; // GPUIndexFormat
16
+ std::optional<wgpu::FrontFace> frontFace; // GPUFrontFace
17
+ std::optional<wgpu::CullMode> cullMode; // GPUCullMode
18
+ std::optional<bool> unclippedDepth; // boolean
19
+ };
20
+
21
+ } // namespace rnwgpu
22
+
23
+ namespace rnwgpu {
24
+
25
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUPrimitiveState>> {
26
+ static std::shared_ptr<rnwgpu::GPUPrimitiveState>
27
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
28
+ auto result = std::make_unique<rnwgpu::GPUPrimitiveState>();
29
+ if (!outOfBounds && arg.isObject()) {
30
+ auto value = arg.getObject(runtime);
31
+ if (value.hasProperty(runtime, "topology")) {
32
+ auto prop = value.getProperty(runtime, "topology");
33
+ result->topology =
34
+ JSIConverter<std::optional<wgpu::PrimitiveTopology>>::fromJSI(
35
+ runtime, prop, false);
36
+ }
37
+ if (value.hasProperty(runtime, "stripIndexFormat")) {
38
+ auto prop = value.getProperty(runtime, "stripIndexFormat");
39
+ result->stripIndexFormat =
40
+ JSIConverter<std::optional<wgpu::IndexFormat>>::fromJSI(
41
+ runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "frontFace")) {
44
+ auto prop = value.getProperty(runtime, "frontFace");
45
+ result->frontFace =
46
+ JSIConverter<std::optional<wgpu::FrontFace>>::fromJSI(runtime, prop,
47
+ false);
48
+ }
49
+ if (value.hasProperty(runtime, "cullMode")) {
50
+ auto prop = value.getProperty(runtime, "cullMode");
51
+ result->cullMode = JSIConverter<std::optional<wgpu::CullMode>>::fromJSI(
52
+ runtime, prop, false);
53
+ }
54
+ if (value.hasProperty(runtime, "unclippedDepth")) {
55
+ auto prop = value.getProperty(runtime, "unclippedDepth");
56
+ result->unclippedDepth =
57
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
58
+ }
59
+ }
60
+
61
+ return result;
62
+ }
63
+ static jsi::Value toJSI(jsi::Runtime &runtime,
64
+ std::shared_ptr<rnwgpu::GPUPrimitiveState> arg) {
65
+ throw std::runtime_error("Invalid GPUPrimitiveState::toJSI()");
66
+ }
67
+ };
68
+
69
+ } // namespace rnwgpu
@@ -0,0 +1,61 @@
1
+ #pragma once
2
+
3
+ #include <map>
4
+ #include <memory>
5
+ #include <string>
6
+
7
+ #include "webgpu/webgpu_cpp.h"
8
+
9
+ #include "jsi2/JSIConverter.h"
10
+
11
+ #include "rnwgpu/api/GPUShaderModule.h"
12
+
13
+ namespace jsi = facebook::jsi;
14
+
15
+ namespace rnwgpu {
16
+
17
+ struct GPUProgrammableStage {
18
+ std::shared_ptr<GPUShaderModule> module; // GPUShaderModule
19
+ std::optional<std::string> entryPoint; // string
20
+ std::optional<std::map<std::string, double>>
21
+ constants; // Record< string, GPUPipelineConstantValue >
22
+ };
23
+
24
+ } // namespace rnwgpu
25
+
26
+ namespace rnwgpu {
27
+
28
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUProgrammableStage>> {
29
+ static std::shared_ptr<rnwgpu::GPUProgrammableStage>
30
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
31
+ auto result = std::make_unique<rnwgpu::GPUProgrammableStage>();
32
+ if (!outOfBounds && arg.isObject()) {
33
+ auto value = arg.getObject(runtime);
34
+ if (value.hasProperty(runtime, "module")) {
35
+ auto prop = value.getProperty(runtime, "module");
36
+ result->module =
37
+ JSIConverter<std::shared_ptr<GPUShaderModule>>::fromJSI(
38
+ runtime, prop, false);
39
+ }
40
+ if (value.hasProperty(runtime, "entryPoint")) {
41
+ auto prop = value.getProperty(runtime, "entryPoint");
42
+ result->entryPoint = JSIConverter<std::optional<std::string>>::fromJSI(
43
+ runtime, prop, false);
44
+ }
45
+ if (value.hasProperty(runtime, "constants")) {
46
+ auto prop = value.getProperty(runtime, "constants");
47
+ result->constants =
48
+ JSIConverter<std::optional<std::map<std::string, double>>>::fromJSI(
49
+ runtime, prop, false);
50
+ }
51
+ }
52
+
53
+ return result;
54
+ }
55
+ static jsi::Value toJSI(jsi::Runtime &runtime,
56
+ std::shared_ptr<rnwgpu::GPUProgrammableStage> arg) {
57
+ throw std::runtime_error("Invalid GPUProgrammableStage::toJSI()");
58
+ }
59
+ };
60
+
61
+ } // namespace rnwgpu
@@ -0,0 +1,55 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include "webgpu/webgpu_cpp.h"
7
+
8
+ #include "jsi2/JSIConverter.h"
9
+
10
+ namespace jsi = facebook::jsi;
11
+
12
+ namespace rnwgpu {
13
+
14
+ struct GPUQuerySetDescriptor {
15
+ wgpu::QueryType type; // GPUQueryType
16
+ double count; // GPUSize32
17
+ std::optional<std::string> label; // string
18
+ };
19
+
20
+ } // namespace rnwgpu
21
+
22
+ namespace rnwgpu {
23
+
24
+ template <>
25
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUQuerySetDescriptor>> {
26
+ static std::shared_ptr<rnwgpu::GPUQuerySetDescriptor>
27
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
28
+ auto result = std::make_unique<rnwgpu::GPUQuerySetDescriptor>();
29
+ if (!outOfBounds && arg.isObject()) {
30
+ auto value = arg.getObject(runtime);
31
+ if (value.hasProperty(runtime, "type")) {
32
+ auto prop = value.getProperty(runtime, "type");
33
+ result->type =
34
+ JSIConverter<wgpu::QueryType>::fromJSI(runtime, prop, false);
35
+ }
36
+ if (value.hasProperty(runtime, "count")) {
37
+ auto prop = value.getProperty(runtime, "count");
38
+ result->count = JSIConverter<double>::fromJSI(runtime, prop, false);
39
+ }
40
+ if (value.hasProperty(runtime, "label")) {
41
+ auto prop = value.getProperty(runtime, "label");
42
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
43
+ runtime, prop, false);
44
+ }
45
+ }
46
+
47
+ return result;
48
+ }
49
+ static jsi::Value toJSI(jsi::Runtime &runtime,
50
+ std::shared_ptr<rnwgpu::GPUQuerySetDescriptor> arg) {
51
+ throw std::runtime_error("Invalid GPUQuerySetDescriptor::toJSI()");
52
+ }
53
+ };
54
+
55
+ } // namespace rnwgpu
@@ -0,0 +1,43 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include "webgpu/webgpu_cpp.h"
7
+
8
+ #include "jsi2/JSIConverter.h"
9
+
10
+ namespace jsi = facebook::jsi;
11
+
12
+ namespace rnwgpu {
13
+
14
+ struct GPUQueueDescriptor {
15
+ std::optional<std::string> label; // string
16
+ };
17
+
18
+ } // namespace rnwgpu
19
+
20
+ namespace rnwgpu {
21
+
22
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUQueueDescriptor>> {
23
+ static std::shared_ptr<rnwgpu::GPUQueueDescriptor>
24
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
25
+ auto result = std::make_unique<rnwgpu::GPUQueueDescriptor>();
26
+ if (!outOfBounds && arg.isObject()) {
27
+ auto value = arg.getObject(runtime);
28
+ if (value.hasProperty(runtime, "label")) {
29
+ auto prop = value.getProperty(runtime, "label");
30
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
31
+ runtime, prop, false);
32
+ }
33
+ }
34
+
35
+ return result;
36
+ }
37
+ static jsi::Value toJSI(jsi::Runtime &runtime,
38
+ std::shared_ptr<rnwgpu::GPUQueueDescriptor> arg) {
39
+ throw std::runtime_error("Invalid GPUQueueDescriptor::toJSI()");
40
+ }
41
+ };
42
+
43
+ } // namespace rnwgpu
@@ -0,0 +1,45 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include "webgpu/webgpu_cpp.h"
7
+
8
+ #include "jsi2/JSIConverter.h"
9
+
10
+ namespace jsi = facebook::jsi;
11
+
12
+ namespace rnwgpu {
13
+
14
+ struct GPURenderBundleDescriptor {
15
+ std::optional<std::string> label; // string
16
+ };
17
+
18
+ } // namespace rnwgpu
19
+
20
+ namespace rnwgpu {
21
+
22
+ template <>
23
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURenderBundleDescriptor>> {
24
+ static std::shared_ptr<rnwgpu::GPURenderBundleDescriptor>
25
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
26
+ auto result = std::make_unique<rnwgpu::GPURenderBundleDescriptor>();
27
+ if (!outOfBounds && arg.isObject()) {
28
+ auto value = arg.getObject(runtime);
29
+ if (value.hasProperty(runtime, "label")) {
30
+ auto prop = value.getProperty(runtime, "label");
31
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
32
+ runtime, prop, false);
33
+ }
34
+ }
35
+
36
+ return result;
37
+ }
38
+ static jsi::Value
39
+ toJSI(jsi::Runtime &runtime,
40
+ std::shared_ptr<rnwgpu::GPURenderBundleDescriptor> arg) {
41
+ throw std::runtime_error("Invalid GPURenderBundleDescriptor::toJSI()");
42
+ }
43
+ };
44
+
45
+ } // namespace rnwgpu