@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,80 @@
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
+ namespace jsi = facebook::jsi;
12
+
13
+ namespace rnwgpu {
14
+
15
+ struct GPURenderBundleEncoderDescriptor {
16
+ std::optional<bool> depthReadOnly; // boolean
17
+ std::optional<bool> stencilReadOnly; // boolean
18
+ std::vector<std::variant<std::nullptr_t, wgpu::TextureFormat>>
19
+ colorFormats; // Iterable<GPUTextureFormat | null>
20
+ std::optional<wgpu::TextureFormat> depthStencilFormat; // GPUTextureFormat
21
+ std::optional<double> sampleCount; // GPUSize32
22
+ std::optional<std::string> label; // string
23
+ };
24
+
25
+ } // namespace rnwgpu
26
+
27
+ namespace rnwgpu {
28
+
29
+ template <>
30
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURenderBundleEncoderDescriptor>> {
31
+ static std::shared_ptr<rnwgpu::GPURenderBundleEncoderDescriptor>
32
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
33
+ auto result = std::make_unique<rnwgpu::GPURenderBundleEncoderDescriptor>();
34
+ if (!outOfBounds && arg.isObject()) {
35
+ auto value = arg.getObject(runtime);
36
+ if (value.hasProperty(runtime, "depthReadOnly")) {
37
+ auto prop = value.getProperty(runtime, "depthReadOnly");
38
+ result->depthReadOnly =
39
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
40
+ }
41
+ if (value.hasProperty(runtime, "stencilReadOnly")) {
42
+ auto prop = value.getProperty(runtime, "stencilReadOnly");
43
+ result->stencilReadOnly =
44
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
45
+ }
46
+ if (value.hasProperty(runtime, "colorFormats")) {
47
+ auto prop = value.getProperty(runtime, "colorFormats");
48
+ result->colorFormats = JSIConverter<
49
+ std::vector<std::variant<std::nullptr_t, wgpu::TextureFormat>>>::
50
+ fromJSI(runtime, prop, false);
51
+ }
52
+ if (value.hasProperty(runtime, "depthStencilFormat")) {
53
+ auto prop = value.getProperty(runtime, "depthStencilFormat");
54
+ result->depthStencilFormat =
55
+ JSIConverter<std::optional<wgpu::TextureFormat>>::fromJSI(
56
+ runtime, prop, false);
57
+ }
58
+ if (value.hasProperty(runtime, "sampleCount")) {
59
+ auto prop = value.getProperty(runtime, "sampleCount");
60
+ result->sampleCount =
61
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
62
+ }
63
+ if (value.hasProperty(runtime, "label")) {
64
+ auto prop = value.getProperty(runtime, "label");
65
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
66
+ runtime, prop, false);
67
+ }
68
+ }
69
+
70
+ return result;
71
+ }
72
+ static jsi::Value
73
+ toJSI(jsi::Runtime &runtime,
74
+ std::shared_ptr<rnwgpu::GPURenderBundleEncoderDescriptor> arg) {
75
+ throw std::runtime_error(
76
+ "Invalid GPURenderBundleEncoderDescriptor::toJSI()");
77
+ }
78
+ };
79
+
80
+ } // 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 "GPUColor.h"
10
+ #include "rnwgpu/api/GPUTextureView.h"
11
+
12
+ namespace jsi = facebook::jsi;
13
+
14
+ namespace rnwgpu {
15
+
16
+ struct GPURenderPassColorAttachment {
17
+ std::shared_ptr<GPUTextureView> view; // GPUTextureView
18
+ std::optional<double> depthSlice; // GPUIntegerCoordinate
19
+ std::optional<std::shared_ptr<GPUTextureView>>
20
+ resolveTarget; // GPUTextureView
21
+ std::optional<std::shared_ptr<GPUColor>> clearValue; // GPUColor
22
+ wgpu::LoadOp loadOp; // GPULoadOp
23
+ wgpu::StoreOp storeOp; // GPUStoreOp
24
+ };
25
+
26
+ } // namespace rnwgpu
27
+
28
+ namespace rnwgpu {
29
+
30
+ template <>
31
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURenderPassColorAttachment>> {
32
+ static std::shared_ptr<rnwgpu::GPURenderPassColorAttachment>
33
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
34
+ auto result = std::make_unique<rnwgpu::GPURenderPassColorAttachment>();
35
+ if (!outOfBounds && arg.isObject()) {
36
+ auto value = arg.getObject(runtime);
37
+ if (value.hasProperty(runtime, "view")) {
38
+ auto prop = value.getProperty(runtime, "view");
39
+ result->view = JSIConverter<std::shared_ptr<GPUTextureView>>::fromJSI(
40
+ runtime, prop, false);
41
+ }
42
+ if (value.hasProperty(runtime, "depthSlice")) {
43
+ auto prop = value.getProperty(runtime, "depthSlice");
44
+ result->depthSlice =
45
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
46
+ }
47
+ if (value.hasProperty(runtime, "resolveTarget")) {
48
+ auto prop = value.getProperty(runtime, "resolveTarget");
49
+ result->resolveTarget = JSIConverter<
50
+ std::optional<std::shared_ptr<GPUTextureView>>>::fromJSI(runtime,
51
+ prop,
52
+ false);
53
+ }
54
+ if (value.hasProperty(runtime, "clearValue")) {
55
+ auto prop = value.getProperty(runtime, "clearValue");
56
+ result->clearValue =
57
+ JSIConverter<std::optional<std::shared_ptr<GPUColor>>>::fromJSI(
58
+ runtime, prop, false);
59
+ }
60
+ if (value.hasProperty(runtime, "loadOp")) {
61
+ auto prop = value.getProperty(runtime, "loadOp");
62
+ result->loadOp =
63
+ JSIConverter<wgpu::LoadOp>::fromJSI(runtime, prop, false);
64
+ }
65
+ if (value.hasProperty(runtime, "storeOp")) {
66
+ auto prop = value.getProperty(runtime, "storeOp");
67
+ result->storeOp =
68
+ JSIConverter<wgpu::StoreOp>::fromJSI(runtime, prop, false);
69
+ }
70
+ }
71
+
72
+ return result;
73
+ }
74
+ static jsi::Value
75
+ toJSI(jsi::Runtime &runtime,
76
+ std::shared_ptr<rnwgpu::GPURenderPassColorAttachment> arg) {
77
+ throw std::runtime_error("Invalid GPURenderPassColorAttachment::toJSI()");
78
+ }
79
+ };
80
+
81
+ } // namespace rnwgpu
@@ -0,0 +1,101 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ #include "rnwgpu/api/GPUTextureView.h"
10
+
11
+ namespace jsi = facebook::jsi;
12
+
13
+ namespace rnwgpu {
14
+
15
+ struct GPURenderPassDepthStencilAttachment {
16
+ std::shared_ptr<GPUTextureView> view; // GPUTextureView
17
+ std::optional<double> depthClearValue; // number
18
+ std::optional<wgpu::LoadOp> depthLoadOp; // GPULoadOp
19
+ std::optional<wgpu::StoreOp> depthStoreOp; // GPUStoreOp
20
+ std::optional<bool> depthReadOnly; // boolean
21
+ std::optional<double> stencilClearValue; // GPUStencilValue
22
+ std::optional<wgpu::LoadOp> stencilLoadOp; // GPULoadOp
23
+ std::optional<wgpu::StoreOp> stencilStoreOp; // GPUStoreOp
24
+ std::optional<bool> stencilReadOnly; // boolean
25
+ };
26
+
27
+ } // namespace rnwgpu
28
+
29
+ namespace rnwgpu {
30
+
31
+ template <>
32
+ struct JSIConverter<
33
+ std::shared_ptr<rnwgpu::GPURenderPassDepthStencilAttachment>> {
34
+ static std::shared_ptr<rnwgpu::GPURenderPassDepthStencilAttachment>
35
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
36
+ auto result =
37
+ std::make_unique<rnwgpu::GPURenderPassDepthStencilAttachment>();
38
+ if (!outOfBounds && arg.isObject()) {
39
+ auto value = arg.getObject(runtime);
40
+ if (value.hasProperty(runtime, "view")) {
41
+ auto prop = value.getProperty(runtime, "view");
42
+ result->view = JSIConverter<std::shared_ptr<GPUTextureView>>::fromJSI(
43
+ runtime, prop, false);
44
+ }
45
+ if (value.hasProperty(runtime, "depthClearValue")) {
46
+ auto prop = value.getProperty(runtime, "depthClearValue");
47
+ result->depthClearValue =
48
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
49
+ }
50
+ if (value.hasProperty(runtime, "depthLoadOp")) {
51
+ auto prop = value.getProperty(runtime, "depthLoadOp");
52
+ result->depthLoadOp =
53
+ JSIConverter<std::optional<wgpu::LoadOp>>::fromJSI(runtime, prop,
54
+ false);
55
+ }
56
+ if (value.hasProperty(runtime, "depthStoreOp")) {
57
+ auto prop = value.getProperty(runtime, "depthStoreOp");
58
+ result->depthStoreOp =
59
+ JSIConverter<std::optional<wgpu::StoreOp>>::fromJSI(runtime, prop,
60
+ false);
61
+ }
62
+ if (value.hasProperty(runtime, "depthReadOnly")) {
63
+ auto prop = value.getProperty(runtime, "depthReadOnly");
64
+ result->depthReadOnly =
65
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
66
+ }
67
+ if (value.hasProperty(runtime, "stencilClearValue")) {
68
+ auto prop = value.getProperty(runtime, "stencilClearValue");
69
+ result->stencilClearValue =
70
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
71
+ }
72
+ if (value.hasProperty(runtime, "stencilLoadOp")) {
73
+ auto prop = value.getProperty(runtime, "stencilLoadOp");
74
+ result->stencilLoadOp =
75
+ JSIConverter<std::optional<wgpu::LoadOp>>::fromJSI(runtime, prop,
76
+ false);
77
+ }
78
+ if (value.hasProperty(runtime, "stencilStoreOp")) {
79
+ auto prop = value.getProperty(runtime, "stencilStoreOp");
80
+ result->stencilStoreOp =
81
+ JSIConverter<std::optional<wgpu::StoreOp>>::fromJSI(runtime, prop,
82
+ false);
83
+ }
84
+ if (value.hasProperty(runtime, "stencilReadOnly")) {
85
+ auto prop = value.getProperty(runtime, "stencilReadOnly");
86
+ result->stencilReadOnly =
87
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
88
+ }
89
+ }
90
+
91
+ return result;
92
+ }
93
+ static jsi::Value
94
+ toJSI(jsi::Runtime &runtime,
95
+ std::shared_ptr<rnwgpu::GPURenderPassDepthStencilAttachment> arg) {
96
+ throw std::runtime_error(
97
+ "Invalid GPURenderPassDepthStencilAttachment::toJSI()");
98
+ }
99
+ };
100
+
101
+ } // namespace rnwgpu
@@ -0,0 +1,92 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <variant>
6
+ #include <vector>
7
+
8
+ #include "webgpu/webgpu_cpp.h"
9
+
10
+ #include "jsi2/JSIConverter.h"
11
+
12
+ #include "rnwgpu/api/GPUQuerySet.h"
13
+ #include "GPURenderPassColorAttachment.h"
14
+ #include "GPURenderPassDepthStencilAttachment.h"
15
+ #include "GPURenderPassTimestampWrites.h"
16
+
17
+ namespace jsi = facebook::jsi;
18
+
19
+ namespace rnwgpu {
20
+
21
+ struct GPURenderPassDescriptor {
22
+ std::vector<std::variant<std::nullptr_t,
23
+ std::shared_ptr<GPURenderPassColorAttachment>>>
24
+ colorAttachments; // Iterable<GPURenderPassColorAttachment | null>
25
+ std::optional<std::shared_ptr<GPURenderPassDepthStencilAttachment>>
26
+ depthStencilAttachment; // GPURenderPassDepthStencilAttachment
27
+ std::optional<std::shared_ptr<GPUQuerySet>> occlusionQuerySet; // GPUQuerySet
28
+ std::optional<std::shared_ptr<GPURenderPassTimestampWrites>>
29
+ timestampWrites; // GPURenderPassTimestampWrites
30
+ std::optional<double> maxDrawCount; // GPUSize64
31
+ std::optional<std::string> label; // string
32
+ };
33
+
34
+ } // namespace rnwgpu
35
+
36
+ namespace rnwgpu {
37
+
38
+ template <>
39
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURenderPassDescriptor>> {
40
+ static std::shared_ptr<rnwgpu::GPURenderPassDescriptor>
41
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
42
+ auto result = std::make_unique<rnwgpu::GPURenderPassDescriptor>();
43
+ if (!outOfBounds && arg.isObject()) {
44
+ auto value = arg.getObject(runtime);
45
+ if (value.hasProperty(runtime, "colorAttachments")) {
46
+ auto prop = value.getProperty(runtime, "colorAttachments");
47
+ result->colorAttachments = JSIConverter<std::vector<std::variant<
48
+ std::nullptr_t, std::shared_ptr<GPURenderPassColorAttachment>>>>::
49
+ fromJSI(runtime, prop, false);
50
+ }
51
+ if (value.hasProperty(runtime, "depthStencilAttachment")) {
52
+ auto prop = value.getProperty(runtime, "depthStencilAttachment");
53
+ result->depthStencilAttachment =
54
+ JSIConverter<std::optional<std::shared_ptr<
55
+ GPURenderPassDepthStencilAttachment>>>::fromJSI(runtime, prop,
56
+ false);
57
+ }
58
+ if (value.hasProperty(runtime, "occlusionQuerySet")) {
59
+ auto prop = value.getProperty(runtime, "occlusionQuerySet");
60
+ result->occlusionQuerySet =
61
+ JSIConverter<std::optional<std::shared_ptr<GPUQuerySet>>>::fromJSI(
62
+ runtime, prop, false);
63
+ }
64
+ if (value.hasProperty(runtime, "timestampWrites")) {
65
+ auto prop = value.getProperty(runtime, "timestampWrites");
66
+ result->timestampWrites = JSIConverter<std::optional<
67
+ std::shared_ptr<GPURenderPassTimestampWrites>>>::fromJSI(runtime,
68
+ prop,
69
+ false);
70
+ }
71
+ if (value.hasProperty(runtime, "maxDrawCount")) {
72
+ auto prop = value.getProperty(runtime, "maxDrawCount");
73
+ result->maxDrawCount =
74
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
75
+ }
76
+ if (value.hasProperty(runtime, "label")) {
77
+ auto prop = value.getProperty(runtime, "label");
78
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
79
+ runtime, prop, false);
80
+ }
81
+ }
82
+
83
+ return result;
84
+ }
85
+ static jsi::Value
86
+ toJSI(jsi::Runtime &runtime,
87
+ std::shared_ptr<rnwgpu::GPURenderPassDescriptor> arg) {
88
+ throw std::runtime_error("Invalid GPURenderPassDescriptor::toJSI()");
89
+ }
90
+ };
91
+
92
+ } // namespace rnwgpu
@@ -0,0 +1,58 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "jsi2/JSIConverter.h"
8
+
9
+ #include "rnwgpu/api/GPUQuerySet.h"
10
+
11
+ namespace jsi = facebook::jsi;
12
+
13
+ namespace rnwgpu {
14
+
15
+ struct GPURenderPassTimestampWrites {
16
+ std::shared_ptr<GPUQuerySet> querySet; // GPUQuerySet
17
+ std::optional<double> beginningOfPassWriteIndex; // GPUSize32
18
+ std::optional<double> endOfPassWriteIndex; // GPUSize32
19
+ };
20
+
21
+ } // namespace rnwgpu
22
+
23
+ namespace rnwgpu {
24
+
25
+ template <>
26
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURenderPassTimestampWrites>> {
27
+ static std::shared_ptr<rnwgpu::GPURenderPassTimestampWrites>
28
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
29
+ auto result = std::make_unique<rnwgpu::GPURenderPassTimestampWrites>();
30
+ if (!outOfBounds && arg.isObject()) {
31
+ auto value = arg.getObject(runtime);
32
+ if (value.hasProperty(runtime, "querySet")) {
33
+ auto prop = value.getProperty(runtime, "querySet");
34
+ result->querySet = JSIConverter<std::shared_ptr<GPUQuerySet>>::fromJSI(
35
+ runtime, prop, false);
36
+ }
37
+ if (value.hasProperty(runtime, "beginningOfPassWriteIndex")) {
38
+ auto prop = value.getProperty(runtime, "beginningOfPassWriteIndex");
39
+ result->beginningOfPassWriteIndex =
40
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
41
+ }
42
+ if (value.hasProperty(runtime, "endOfPassWriteIndex")) {
43
+ auto prop = value.getProperty(runtime, "endOfPassWriteIndex");
44
+ result->endOfPassWriteIndex =
45
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
46
+ }
47
+ }
48
+
49
+ return result;
50
+ }
51
+ static jsi::Value
52
+ toJSI(jsi::Runtime &runtime,
53
+ std::shared_ptr<rnwgpu::GPURenderPassTimestampWrites> arg) {
54
+ throw std::runtime_error("Invalid GPURenderPassTimestampWrites::toJSI()");
55
+ }
56
+ };
57
+
58
+ } // namespace rnwgpu
@@ -0,0 +1,103 @@
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
+ #include "GPUDepthStencilState.h"
11
+ #include "GPUFragmentState.h"
12
+ #include "GPUMultisampleState.h"
13
+ #include "rnwgpu/api/GPUPipelineLayout.h"
14
+ #include "GPUPrimitiveState.h"
15
+ #include "GPUVertexState.h"
16
+
17
+ namespace jsi = facebook::jsi;
18
+
19
+ namespace rnwgpu {
20
+
21
+ struct GPURenderPipelineDescriptor {
22
+ std::shared_ptr<GPUVertexState> vertex; // GPUVertexState
23
+ std::optional<std::shared_ptr<GPUPrimitiveState>>
24
+ primitive; // GPUPrimitiveState
25
+ std::optional<std::shared_ptr<GPUDepthStencilState>>
26
+ depthStencil; // GPUDepthStencilState
27
+ std::optional<std::shared_ptr<GPUMultisampleState>>
28
+ multisample; // GPUMultisampleState
29
+ std::optional<std::shared_ptr<GPUFragmentState>> fragment; // GPUFragmentState
30
+ std::variant<std::nullptr_t, std::shared_ptr<GPUPipelineLayout>>
31
+ layout; // | GPUPipelineLayout | GPUAutoLayoutMode
32
+ std::optional<std::string> label; // string
33
+ };
34
+
35
+ } // namespace rnwgpu
36
+
37
+ namespace rnwgpu {
38
+
39
+ template <>
40
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURenderPipelineDescriptor>> {
41
+ static std::shared_ptr<rnwgpu::GPURenderPipelineDescriptor>
42
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
43
+ auto result = std::make_unique<rnwgpu::GPURenderPipelineDescriptor>();
44
+ if (!outOfBounds && arg.isObject()) {
45
+ auto value = arg.getObject(runtime);
46
+ if (value.hasProperty(runtime, "vertex")) {
47
+ auto prop = value.getProperty(runtime, "vertex");
48
+ result->vertex = JSIConverter<std::shared_ptr<GPUVertexState>>::fromJSI(
49
+ runtime, prop, false);
50
+ }
51
+ if (value.hasProperty(runtime, "primitive")) {
52
+ auto prop = value.getProperty(runtime, "primitive");
53
+ result->primitive = JSIConverter<
54
+ std::optional<std::shared_ptr<GPUPrimitiveState>>>::fromJSI(runtime,
55
+ prop,
56
+ false);
57
+ }
58
+ if (value.hasProperty(runtime, "depthStencil")) {
59
+ auto prop = value.getProperty(runtime, "depthStencil");
60
+ result->depthStencil =
61
+ JSIConverter<std::optional<std::shared_ptr<GPUDepthStencilState>>>::
62
+ fromJSI(runtime, prop, false);
63
+ }
64
+ if (value.hasProperty(runtime, "multisample")) {
65
+ auto prop = value.getProperty(runtime, "multisample");
66
+ result->multisample =
67
+ JSIConverter<std::optional<std::shared_ptr<GPUMultisampleState>>>::
68
+ fromJSI(runtime, prop, false);
69
+ }
70
+ if (value.hasProperty(runtime, "fragment")) {
71
+ auto prop = value.getProperty(runtime, "fragment");
72
+ result->fragment = JSIConverter<
73
+ std::optional<std::shared_ptr<GPUFragmentState>>>::fromJSI(runtime,
74
+ prop,
75
+ false);
76
+ }
77
+ if (value.hasProperty(runtime, "layout")) {
78
+ auto prop = value.getProperty(runtime, "layout");
79
+ if (prop.isNull() || prop.isString()) {
80
+ result->layout = nullptr;
81
+ } else {
82
+ result->layout =
83
+ JSIConverter<std::shared_ptr<GPUPipelineLayout>>::fromJSI(
84
+ runtime, prop, false);
85
+ }
86
+ }
87
+ if (value.hasProperty(runtime, "label")) {
88
+ auto prop = value.getProperty(runtime, "label");
89
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
90
+ runtime, prop, false);
91
+ }
92
+ }
93
+
94
+ return result;
95
+ }
96
+ static jsi::Value
97
+ toJSI(jsi::Runtime &runtime,
98
+ std::shared_ptr<rnwgpu::GPURenderPipelineDescriptor> arg) {
99
+ throw std::runtime_error("Invalid GPURenderPipelineDescriptor::toJSI()");
100
+ }
101
+ };
102
+
103
+ } // namespace rnwgpu
@@ -0,0 +1,51 @@
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 GPURequestAdapterOptions {
14
+ std::optional<wgpu::PowerPreference> powerPreference; // GPUPowerPreference
15
+ std::optional<bool> forceFallbackAdapter; // boolean
16
+ };
17
+
18
+ } // namespace rnwgpu
19
+
20
+ namespace rnwgpu {
21
+
22
+ template <>
23
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPURequestAdapterOptions>> {
24
+ static std::shared_ptr<rnwgpu::GPURequestAdapterOptions>
25
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
26
+ auto result = std::make_unique<rnwgpu::GPURequestAdapterOptions>();
27
+ if (!outOfBounds && arg.isObject()) {
28
+ auto value = arg.getObject(runtime);
29
+ if (value.hasProperty(runtime, "powerPreference")) {
30
+ auto prop = value.getProperty(runtime, "powerPreference");
31
+ result->powerPreference =
32
+ JSIConverter<std::optional<wgpu::PowerPreference>>::fromJSI(
33
+ runtime, prop, false);
34
+ }
35
+ if (value.hasProperty(runtime, "forceFallbackAdapter")) {
36
+ auto prop = value.getProperty(runtime, "forceFallbackAdapter");
37
+ result->forceFallbackAdapter =
38
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
39
+ }
40
+ }
41
+
42
+ return result;
43
+ }
44
+ static jsi::Value
45
+ toJSI(jsi::Runtime &runtime,
46
+ std::shared_ptr<rnwgpu::GPURequestAdapterOptions> arg) {
47
+ throw std::runtime_error("Invalid GPURequestAdapterOptions::toJSI()");
48
+ }
49
+ };
50
+
51
+ } // namespace rnwgpu
@@ -0,0 +1,45 @@
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 GPUSamplerBindingLayout {
14
+ std::optional<wgpu::SamplerBindingType> type; // GPUSamplerBindingType
15
+ };
16
+
17
+ } // namespace rnwgpu
18
+
19
+ namespace rnwgpu {
20
+
21
+ template <>
22
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUSamplerBindingLayout>> {
23
+ static std::shared_ptr<rnwgpu::GPUSamplerBindingLayout>
24
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
25
+ auto result = std::make_unique<rnwgpu::GPUSamplerBindingLayout>();
26
+ if (!outOfBounds && arg.isObject()) {
27
+ auto value = arg.getObject(runtime);
28
+ if (value.hasProperty(runtime, "type")) {
29
+ auto prop = value.getProperty(runtime, "type");
30
+ result->type =
31
+ JSIConverter<std::optional<wgpu::SamplerBindingType>>::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::GPUSamplerBindingLayout> arg) {
41
+ throw std::runtime_error("Invalid GPUSamplerBindingLayout::toJSI()");
42
+ }
43
+ };
44
+
45
+ } // namespace rnwgpu