@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,110 @@
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 GPUSamplerDescriptor {
15
+ std::optional<wgpu::AddressMode> addressModeU; // GPUAddressMode
16
+ std::optional<wgpu::AddressMode> addressModeV; // GPUAddressMode
17
+ std::optional<wgpu::AddressMode> addressModeW; // GPUAddressMode
18
+ std::optional<wgpu::FilterMode> magFilter; // GPUFilterMode
19
+ std::optional<wgpu::FilterMode> minFilter; // GPUFilterMode
20
+ std::optional<wgpu::MipmapFilterMode> mipmapFilter; // GPUMipmapFilterMode
21
+ std::optional<double> lodMinClamp; // number
22
+ std::optional<double> lodMaxClamp; // number
23
+ std::optional<wgpu::CompareFunction> compare; // GPUCompareFunction
24
+ std::optional<double> maxAnisotropy; // number
25
+ std::optional<std::string> label; // string
26
+ };
27
+
28
+ } // namespace rnwgpu
29
+
30
+ namespace rnwgpu {
31
+
32
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUSamplerDescriptor>> {
33
+ static std::shared_ptr<rnwgpu::GPUSamplerDescriptor>
34
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
35
+ auto result = std::make_unique<rnwgpu::GPUSamplerDescriptor>();
36
+ if (!outOfBounds && arg.isObject()) {
37
+ auto value = arg.getObject(runtime);
38
+ if (value.hasProperty(runtime, "addressModeU")) {
39
+ auto prop = value.getProperty(runtime, "addressModeU");
40
+ result->addressModeU =
41
+ JSIConverter<std::optional<wgpu::AddressMode>>::fromJSI(
42
+ runtime, prop, false);
43
+ }
44
+ if (value.hasProperty(runtime, "addressModeV")) {
45
+ auto prop = value.getProperty(runtime, "addressModeV");
46
+ result->addressModeV =
47
+ JSIConverter<std::optional<wgpu::AddressMode>>::fromJSI(
48
+ runtime, prop, false);
49
+ }
50
+ if (value.hasProperty(runtime, "addressModeW")) {
51
+ auto prop = value.getProperty(runtime, "addressModeW");
52
+ result->addressModeW =
53
+ JSIConverter<std::optional<wgpu::AddressMode>>::fromJSI(
54
+ runtime, prop, false);
55
+ }
56
+ if (value.hasProperty(runtime, "magFilter")) {
57
+ auto prop = value.getProperty(runtime, "magFilter");
58
+ result->magFilter =
59
+ JSIConverter<std::optional<wgpu::FilterMode>>::fromJSI(runtime,
60
+ prop, false);
61
+ }
62
+ if (value.hasProperty(runtime, "minFilter")) {
63
+ auto prop = value.getProperty(runtime, "minFilter");
64
+ result->minFilter =
65
+ JSIConverter<std::optional<wgpu::FilterMode>>::fromJSI(runtime,
66
+ prop, false);
67
+ }
68
+ if (value.hasProperty(runtime, "mipmapFilter")) {
69
+ auto prop = value.getProperty(runtime, "mipmapFilter");
70
+ result->mipmapFilter =
71
+ JSIConverter<std::optional<wgpu::MipmapFilterMode>>::fromJSI(
72
+ runtime, prop, false);
73
+ }
74
+ if (value.hasProperty(runtime, "lodMinClamp")) {
75
+ auto prop = value.getProperty(runtime, "lodMinClamp");
76
+ result->lodMinClamp =
77
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
78
+ }
79
+ if (value.hasProperty(runtime, "lodMaxClamp")) {
80
+ auto prop = value.getProperty(runtime, "lodMaxClamp");
81
+ result->lodMaxClamp =
82
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
83
+ }
84
+ if (value.hasProperty(runtime, "compare")) {
85
+ auto prop = value.getProperty(runtime, "compare");
86
+ result->compare =
87
+ JSIConverter<std::optional<wgpu::CompareFunction>>::fromJSI(
88
+ runtime, prop, false);
89
+ }
90
+ if (value.hasProperty(runtime, "maxAnisotropy")) {
91
+ auto prop = value.getProperty(runtime, "maxAnisotropy");
92
+ result->maxAnisotropy =
93
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
94
+ }
95
+ if (value.hasProperty(runtime, "label")) {
96
+ auto prop = value.getProperty(runtime, "label");
97
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
98
+ runtime, prop, false);
99
+ }
100
+ }
101
+
102
+ return result;
103
+ }
104
+ static jsi::Value toJSI(jsi::Runtime &runtime,
105
+ std::shared_ptr<rnwgpu::GPUSamplerDescriptor> arg) {
106
+ throw std::runtime_error("Invalid GPUSamplerDescriptor::toJSI()");
107
+ }
108
+ };
109
+
110
+ } // namespace rnwgpu
@@ -0,0 +1,60 @@
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 "rnwgpu/api/GPUPipelineLayout.h"
11
+
12
+ namespace jsi = facebook::jsi;
13
+
14
+ namespace rnwgpu {
15
+
16
+ struct GPUShaderModuleCompilationHint {
17
+ std::string entryPoint; // string
18
+ std::optional<
19
+ std::variant<std::nullptr_t, std::shared_ptr<GPUPipelineLayout>>>
20
+ layout; // | GPUPipelineLayout | GPUAutoLayoutMode
21
+ };
22
+
23
+ } // namespace rnwgpu
24
+
25
+ namespace rnwgpu {
26
+
27
+ template <>
28
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUShaderModuleCompilationHint>> {
29
+ static std::shared_ptr<rnwgpu::GPUShaderModuleCompilationHint>
30
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
31
+ auto result = std::make_unique<rnwgpu::GPUShaderModuleCompilationHint>();
32
+ if (!outOfBounds && arg.isObject()) {
33
+ auto value = arg.getObject(runtime);
34
+ if (value.hasProperty(runtime, "entryPoint")) {
35
+ auto prop = value.getProperty(runtime, "entryPoint");
36
+ result->entryPoint =
37
+ JSIConverter<std::string>::fromJSI(runtime, prop, false);
38
+ }
39
+ if (value.hasProperty(runtime, "layout")) {
40
+ auto prop = value.getProperty(runtime, "layout");
41
+ if (prop.isNull() || prop.isString()) {
42
+ result->layout = nullptr;
43
+ } else {
44
+ result->layout =
45
+ JSIConverter<std::shared_ptr<GPUPipelineLayout>>::fromJSI(
46
+ runtime, prop, false);
47
+ }
48
+ }
49
+ }
50
+
51
+ return result;
52
+ }
53
+ static jsi::Value
54
+ toJSI(jsi::Runtime &runtime,
55
+ std::shared_ptr<rnwgpu::GPUShaderModuleCompilationHint> arg) {
56
+ throw std::runtime_error("Invalid GPUShaderModuleCompilationHint::toJSI()");
57
+ }
58
+ };
59
+
60
+ } // namespace rnwgpu
@@ -0,0 +1,62 @@
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 "GPUShaderModuleCompilationHint.h"
12
+
13
+ namespace jsi = facebook::jsi;
14
+
15
+ namespace rnwgpu {
16
+
17
+ struct GPUShaderModuleDescriptor {
18
+ std::string code; // string
19
+ std::optional<std::vector<std::shared_ptr<GPUShaderModuleCompilationHint>>>
20
+ compilationHints; // Array<GPUShaderModuleCompilationHint>
21
+ std::optional<std::string> label; // string
22
+ };
23
+
24
+ } // namespace rnwgpu
25
+
26
+ namespace rnwgpu {
27
+
28
+ template <>
29
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUShaderModuleDescriptor>> {
30
+ static std::shared_ptr<rnwgpu::GPUShaderModuleDescriptor>
31
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
32
+ auto result = std::make_unique<rnwgpu::GPUShaderModuleDescriptor>();
33
+ if (!outOfBounds && arg.isObject()) {
34
+ auto value = arg.getObject(runtime);
35
+ if (value.hasProperty(runtime, "code")) {
36
+ auto prop = value.getProperty(runtime, "code");
37
+ result->code = JSIConverter<std::string>::fromJSI(runtime, prop, false);
38
+ }
39
+ if (value.hasProperty(runtime, "compilationHints")) {
40
+ auto prop = value.getProperty(runtime, "compilationHints");
41
+ result->compilationHints = JSIConverter<std::optional<std::vector<
42
+ std::shared_ptr<GPUShaderModuleCompilationHint>>>>::fromJSI(runtime,
43
+ prop,
44
+ false);
45
+ }
46
+ if (value.hasProperty(runtime, "label")) {
47
+ auto prop = value.getProperty(runtime, "label");
48
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
49
+ runtime, prop, false);
50
+ }
51
+ }
52
+
53
+ return result;
54
+ }
55
+ static jsi::Value
56
+ toJSI(jsi::Runtime &runtime,
57
+ std::shared_ptr<rnwgpu::GPUShaderModuleDescriptor> arg) {
58
+ throw std::runtime_error("Invalid GPUShaderModuleDescriptor::toJSI()");
59
+ }
60
+ };
61
+
62
+ } // namespace rnwgpu
@@ -0,0 +1,25 @@
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 GPUShaderStage {
12
+ public:
13
+ static jsi::Object create(jsi::Runtime &runtime) {
14
+ jsi::Object obj(runtime);
15
+ obj.setProperty(runtime, "VERTEX",
16
+ static_cast<double>(wgpu::ShaderStage::Vertex));
17
+ obj.setProperty(runtime, "FRAGMENT",
18
+ static_cast<double>(wgpu::ShaderStage::Fragment));
19
+ obj.setProperty(runtime, "COMPUTE",
20
+ static_cast<double>(wgpu::ShaderStage::Compute));
21
+ return obj;
22
+ }
23
+ };
24
+
25
+ } // namespace rnwgpu
@@ -0,0 +1,64 @@
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 GPUStencilFaceState {
14
+ std::optional<wgpu::CompareFunction> compare; // GPUCompareFunction
15
+ std::optional<wgpu::StencilOperation> failOp; // GPUStencilOperation
16
+ std::optional<wgpu::StencilOperation> depthFailOp; // GPUStencilOperation
17
+ std::optional<wgpu::StencilOperation> passOp; // GPUStencilOperation
18
+ };
19
+
20
+ } // namespace rnwgpu
21
+
22
+ namespace rnwgpu {
23
+
24
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUStencilFaceState>> {
25
+ static std::shared_ptr<rnwgpu::GPUStencilFaceState>
26
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
27
+ auto result = std::make_unique<rnwgpu::GPUStencilFaceState>();
28
+ if (!outOfBounds && arg.isObject()) {
29
+ auto value = arg.getObject(runtime);
30
+ if (value.hasProperty(runtime, "compare")) {
31
+ auto prop = value.getProperty(runtime, "compare");
32
+ result->compare =
33
+ JSIConverter<std::optional<wgpu::CompareFunction>>::fromJSI(
34
+ runtime, prop, false);
35
+ }
36
+ if (value.hasProperty(runtime, "failOp")) {
37
+ auto prop = value.getProperty(runtime, "failOp");
38
+ result->failOp =
39
+ JSIConverter<std::optional<wgpu::StencilOperation>>::fromJSI(
40
+ runtime, prop, false);
41
+ }
42
+ if (value.hasProperty(runtime, "depthFailOp")) {
43
+ auto prop = value.getProperty(runtime, "depthFailOp");
44
+ result->depthFailOp =
45
+ JSIConverter<std::optional<wgpu::StencilOperation>>::fromJSI(
46
+ runtime, prop, false);
47
+ }
48
+ if (value.hasProperty(runtime, "passOp")) {
49
+ auto prop = value.getProperty(runtime, "passOp");
50
+ result->passOp =
51
+ JSIConverter<std::optional<wgpu::StencilOperation>>::fromJSI(
52
+ runtime, prop, false);
53
+ }
54
+ }
55
+
56
+ return result;
57
+ }
58
+ static jsi::Value toJSI(jsi::Runtime &runtime,
59
+ std::shared_ptr<rnwgpu::GPUStencilFaceState> arg) {
60
+ throw std::runtime_error("Invalid GPUStencilFaceState::toJSI()");
61
+ }
62
+ };
63
+
64
+ } // namespace rnwgpu
@@ -0,0 +1,59 @@
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 GPUStorageTextureBindingLayout {
14
+ std::optional<wgpu::StorageTextureAccess> access; // GPUStorageTextureAccess
15
+ wgpu::TextureFormat format; // GPUTextureFormat
16
+ std::optional<wgpu::TextureViewDimension>
17
+ viewDimension; // GPUTextureViewDimension
18
+ };
19
+
20
+ } // namespace rnwgpu
21
+
22
+ namespace rnwgpu {
23
+
24
+ template <>
25
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUStorageTextureBindingLayout>> {
26
+ static std::shared_ptr<rnwgpu::GPUStorageTextureBindingLayout>
27
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
28
+ auto result = std::make_unique<rnwgpu::GPUStorageTextureBindingLayout>();
29
+ if (!outOfBounds && arg.isObject()) {
30
+ auto value = arg.getObject(runtime);
31
+ if (value.hasProperty(runtime, "access")) {
32
+ auto prop = value.getProperty(runtime, "access");
33
+ result->access =
34
+ JSIConverter<std::optional<wgpu::StorageTextureAccess>>::fromJSI(
35
+ runtime, prop, false);
36
+ }
37
+ if (value.hasProperty(runtime, "format")) {
38
+ auto prop = value.getProperty(runtime, "format");
39
+ result->format =
40
+ JSIConverter<wgpu::TextureFormat>::fromJSI(runtime, prop, false);
41
+ }
42
+ if (value.hasProperty(runtime, "viewDimension")) {
43
+ auto prop = value.getProperty(runtime, "viewDimension");
44
+ result->viewDimension =
45
+ JSIConverter<std::optional<wgpu::TextureViewDimension>>::fromJSI(
46
+ runtime, prop, false);
47
+ }
48
+ }
49
+
50
+ return result;
51
+ }
52
+ static jsi::Value
53
+ toJSI(jsi::Runtime &runtime,
54
+ std::shared_ptr<rnwgpu::GPUStorageTextureBindingLayout> arg) {
55
+ throw std::runtime_error("Invalid GPUStorageTextureBindingLayout::toJSI()");
56
+ }
57
+ };
58
+
59
+ } // namespace rnwgpu
@@ -0,0 +1,59 @@
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 GPUTextureBindingLayout {
14
+ std::optional<wgpu::TextureSampleType> sampleType; // GPUTextureSampleType
15
+ std::optional<wgpu::TextureViewDimension>
16
+ viewDimension; // GPUTextureViewDimension
17
+ std::optional<bool> multisampled; // boolean
18
+ };
19
+
20
+ } // namespace rnwgpu
21
+
22
+ namespace rnwgpu {
23
+
24
+ template <>
25
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUTextureBindingLayout>> {
26
+ static std::shared_ptr<rnwgpu::GPUTextureBindingLayout>
27
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
28
+ auto result = std::make_unique<rnwgpu::GPUTextureBindingLayout>();
29
+ if (!outOfBounds && arg.isObject()) {
30
+ auto value = arg.getObject(runtime);
31
+ if (value.hasProperty(runtime, "sampleType")) {
32
+ auto prop = value.getProperty(runtime, "sampleType");
33
+ result->sampleType =
34
+ JSIConverter<std::optional<wgpu::TextureSampleType>>::fromJSI(
35
+ runtime, prop, false);
36
+ }
37
+ if (value.hasProperty(runtime, "viewDimension")) {
38
+ auto prop = value.getProperty(runtime, "viewDimension");
39
+ result->viewDimension =
40
+ JSIConverter<std::optional<wgpu::TextureViewDimension>>::fromJSI(
41
+ runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "multisampled")) {
44
+ auto prop = value.getProperty(runtime, "multisampled");
45
+ result->multisampled =
46
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
47
+ }
48
+ }
49
+
50
+ return result;
51
+ }
52
+ static jsi::Value
53
+ toJSI(jsi::Runtime &runtime,
54
+ std::shared_ptr<rnwgpu::GPUTextureBindingLayout> arg) {
55
+ throw std::runtime_error("Invalid GPUTextureBindingLayout::toJSI()");
56
+ }
57
+ };
58
+
59
+ } // namespace rnwgpu
@@ -0,0 +1,91 @@
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 "GPUExtent3D.h"
12
+
13
+ namespace jsi = facebook::jsi;
14
+
15
+ namespace rnwgpu {
16
+
17
+ struct GPUTextureDescriptor {
18
+ std::shared_ptr<GPUExtent3D> size; // GPUExtent3DStrict
19
+ std::optional<double> mipLevelCount; // GPUIntegerCoordinate
20
+ std::optional<double> sampleCount; // GPUSize32
21
+ std::optional<wgpu::TextureDimension> dimension; // GPUTextureDimension
22
+ wgpu::TextureFormat format; // GPUTextureFormat
23
+ double usage; // GPUTextureUsageFlags
24
+ std::optional<std::vector<wgpu::TextureFormat>>
25
+ viewFormats; // Iterable<GPUTextureFormat>
26
+ std::optional<std::string> label; // string
27
+ };
28
+
29
+ } // namespace rnwgpu
30
+
31
+ namespace rnwgpu {
32
+
33
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUTextureDescriptor>> {
34
+ static std::shared_ptr<rnwgpu::GPUTextureDescriptor>
35
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
36
+ auto result = std::make_unique<rnwgpu::GPUTextureDescriptor>();
37
+ if (!outOfBounds && arg.isObject()) {
38
+ auto value = arg.getObject(runtime);
39
+ if (value.hasProperty(runtime, "size")) {
40
+ auto prop = value.getProperty(runtime, "size");
41
+ result->size = JSIConverter<std::shared_ptr<GPUExtent3D>>::fromJSI(
42
+ runtime, prop, false);
43
+ }
44
+ if (value.hasProperty(runtime, "mipLevelCount")) {
45
+ auto prop = value.getProperty(runtime, "mipLevelCount");
46
+ result->mipLevelCount =
47
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
48
+ }
49
+ if (value.hasProperty(runtime, "sampleCount")) {
50
+ auto prop = value.getProperty(runtime, "sampleCount");
51
+ result->sampleCount =
52
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
53
+ }
54
+ if (value.hasProperty(runtime, "dimension")) {
55
+ auto prop = value.getProperty(runtime, "dimension");
56
+ result->dimension =
57
+ JSIConverter<std::optional<wgpu::TextureDimension>>::fromJSI(
58
+ runtime, prop, false);
59
+ }
60
+ if (value.hasProperty(runtime, "format")) {
61
+ auto prop = value.getProperty(runtime, "format");
62
+ result->format =
63
+ JSIConverter<wgpu::TextureFormat>::fromJSI(runtime, prop, false);
64
+ }
65
+ if (value.hasProperty(runtime, "usage")) {
66
+ auto prop = value.getProperty(runtime, "usage");
67
+ result->usage = JSIConverter<double>::fromJSI(runtime, prop, false);
68
+ }
69
+ if (value.hasProperty(runtime, "viewFormats")) {
70
+ auto prop = value.getProperty(runtime, "viewFormats");
71
+ result->viewFormats = JSIConverter<
72
+ std::optional<std::vector<wgpu::TextureFormat>>>::fromJSI(runtime,
73
+ prop,
74
+ 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 toJSI(jsi::Runtime &runtime,
86
+ std::shared_ptr<rnwgpu::GPUTextureDescriptor> arg) {
87
+ throw std::runtime_error("Invalid GPUTextureDescriptor::toJSI()");
88
+ }
89
+ };
90
+
91
+ } // namespace rnwgpu
@@ -0,0 +1,29 @@
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 GPUTextureUsage {
12
+ public:
13
+ static jsi::Object create(jsi::Runtime &runtime) {
14
+ jsi::Object obj(runtime);
15
+ obj.setProperty(runtime, "COPY_SRC",
16
+ static_cast<double>(wgpu::TextureUsage::CopySrc));
17
+ obj.setProperty(runtime, "COPY_DST",
18
+ static_cast<double>(wgpu::TextureUsage::CopyDst));
19
+ obj.setProperty(runtime, "TEXTURE_BINDING",
20
+ static_cast<double>(wgpu::TextureUsage::TextureBinding));
21
+ obj.setProperty(runtime, "STORAGE_BINDING",
22
+ static_cast<double>(wgpu::TextureUsage::StorageBinding));
23
+ obj.setProperty(runtime, "RENDER_ATTACHMENT",
24
+ static_cast<double>(wgpu::TextureUsage::RenderAttachment));
25
+ return obj;
26
+ }
27
+ };
28
+
29
+ } // namespace rnwgpu
@@ -0,0 +1,91 @@
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 GPUTextureViewDescriptor {
15
+ std::optional<wgpu::TextureFormat> format; // GPUTextureFormat
16
+ std::optional<wgpu::TextureViewDimension>
17
+ dimension; // GPUTextureViewDimension
18
+ std::optional<wgpu::TextureAspect> aspect; // GPUTextureAspect
19
+ std::optional<double> baseMipLevel; // GPUIntegerCoordinate
20
+ std::optional<double> mipLevelCount; // GPUIntegerCoordinate
21
+ std::optional<double> baseArrayLayer; // GPUIntegerCoordinate
22
+ std::optional<double> arrayLayerCount; // GPUIntegerCoordinate
23
+ std::optional<std::string> label; // string
24
+ };
25
+
26
+ } // namespace rnwgpu
27
+
28
+ namespace rnwgpu {
29
+
30
+ template <>
31
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUTextureViewDescriptor>> {
32
+ static std::shared_ptr<rnwgpu::GPUTextureViewDescriptor>
33
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
34
+ auto result = std::make_unique<rnwgpu::GPUTextureViewDescriptor>();
35
+ if (!outOfBounds && arg.isObject()) {
36
+ auto value = arg.getObject(runtime);
37
+ if (value.hasProperty(runtime, "format")) {
38
+ auto prop = value.getProperty(runtime, "format");
39
+ result->format =
40
+ JSIConverter<std::optional<wgpu::TextureFormat>>::fromJSI(
41
+ runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "dimension")) {
44
+ auto prop = value.getProperty(runtime, "dimension");
45
+ result->dimension =
46
+ JSIConverter<std::optional<wgpu::TextureViewDimension>>::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
+ if (value.hasProperty(runtime, "baseMipLevel")) {
56
+ auto prop = value.getProperty(runtime, "baseMipLevel");
57
+ result->baseMipLevel =
58
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
59
+ }
60
+ if (value.hasProperty(runtime, "mipLevelCount")) {
61
+ auto prop = value.getProperty(runtime, "mipLevelCount");
62
+ result->mipLevelCount =
63
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
64
+ }
65
+ if (value.hasProperty(runtime, "baseArrayLayer")) {
66
+ auto prop = value.getProperty(runtime, "baseArrayLayer");
67
+ result->baseArrayLayer =
68
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
69
+ }
70
+ if (value.hasProperty(runtime, "arrayLayerCount")) {
71
+ auto prop = value.getProperty(runtime, "arrayLayerCount");
72
+ result->arrayLayerCount =
73
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
74
+ }
75
+ if (value.hasProperty(runtime, "label")) {
76
+ auto prop = value.getProperty(runtime, "label");
77
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
78
+ runtime, prop, false);
79
+ }
80
+ }
81
+
82
+ return result;
83
+ }
84
+ static jsi::Value
85
+ toJSI(jsi::Runtime &runtime,
86
+ std::shared_ptr<rnwgpu::GPUTextureViewDescriptor> arg) {
87
+ throw std::runtime_error("Invalid GPUTextureViewDescriptor::toJSI()");
88
+ }
89
+ };
90
+
91
+ } // namespace rnwgpu