react-native-wgpu 0.1.0

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 (208) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +31 -0
  3. package/android/CMakeLists.txt +74 -0
  4. package/android/build.gradle +166 -0
  5. package/android/cpp/cpp-adapter.cpp +12 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/src/main/AndroidManifest.xml +3 -0
  8. package/android/src/main/AndroidManifestNew.xml +2 -0
  9. package/android/src/main/java/com/webgpu/WebGPUModule.java +39 -0
  10. package/android/src/main/java/com/webgpu/WebGPUView.java +24 -0
  11. package/android/src/main/java/com/webgpu/WebGPUViewManager.java +31 -0
  12. package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +26 -0
  13. package/android/src/newarch/WgpuViewManagerSpec.java +24 -0
  14. package/android/src/oldarch/WebGPUViewManagerSpec.java +11 -0
  15. package/cpp/Logger.h +82 -0
  16. package/cpp/dawn/dawn_proc_table.h +308 -0
  17. package/cpp/dawn/webgpu.h +4201 -0
  18. package/cpp/dawn/webgpu_cpp.h +8985 -0
  19. package/cpp/dawn/webgpu_cpp_print.h +2460 -0
  20. package/cpp/dawn/wire/client/webgpu.h +339 -0
  21. package/cpp/dawn/wire/client/webgpu_cpp.h +9140 -0
  22. package/cpp/jsi/RNFEnumMapper.h +49 -0
  23. package/cpp/jsi/RNFHybridObject.cpp +145 -0
  24. package/cpp/jsi/RNFHybridObject.h +162 -0
  25. package/cpp/jsi/RNFJSIConverter.h +412 -0
  26. package/cpp/jsi/RNFJSIHelper.h +49 -0
  27. package/cpp/jsi/RNFPointerHolder.h +95 -0
  28. package/cpp/jsi/RNFPromise.cpp +45 -0
  29. package/cpp/jsi/RNFPromise.h +38 -0
  30. package/cpp/jsi/RNFRuntimeCache.cpp +57 -0
  31. package/cpp/jsi/RNFRuntimeCache.h +79 -0
  32. package/cpp/jsi/RNFWorkletRuntimeCollector.h +43 -0
  33. package/cpp/jsi/RNFWorkletRuntimeRegistry.cpp +11 -0
  34. package/cpp/jsi/RNFWorkletRuntimeRegistry.h +44 -0
  35. package/cpp/rnwgpu/MutableBuffer.h +48 -0
  36. package/cpp/rnwgpu/RNWebGPUManager.cpp +60 -0
  37. package/cpp/rnwgpu/RNWebGPUManager.h +30 -0
  38. package/cpp/rnwgpu/api/GPU.cpp +40 -0
  39. package/cpp/rnwgpu/api/GPU.h +43 -0
  40. package/cpp/rnwgpu/api/GPUAdapter.cpp +33 -0
  41. package/cpp/rnwgpu/api/GPUAdapter.h +40 -0
  42. package/cpp/rnwgpu/api/GPUAdapterInfo.h +33 -0
  43. package/cpp/rnwgpu/api/GPUBindGroup.h +38 -0
  44. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +39 -0
  45. package/cpp/rnwgpu/api/GPUBuffer.cpp +16 -0
  46. package/cpp/rnwgpu/api/GPUBuffer.h +44 -0
  47. package/cpp/rnwgpu/api/GPUCanvasContext.h +33 -0
  48. package/cpp/rnwgpu/api/GPUCommandBuffer.h +38 -0
  49. package/cpp/rnwgpu/api/GPUCommandEncoder.h +38 -0
  50. package/cpp/rnwgpu/api/GPUCompilationInfo.h +33 -0
  51. package/cpp/rnwgpu/api/GPUCompilationMessage.h +33 -0
  52. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +40 -0
  53. package/cpp/rnwgpu/api/GPUComputePipeline.h +39 -0
  54. package/cpp/rnwgpu/api/GPUDevice.cpp +12 -0
  55. package/cpp/rnwgpu/api/GPUDevice.h +45 -0
  56. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +33 -0
  57. package/cpp/rnwgpu/api/GPUExternalTexture.h +39 -0
  58. package/cpp/rnwgpu/api/GPUPipelineLayout.h +38 -0
  59. package/cpp/rnwgpu/api/GPUQuerySet.h +38 -0
  60. package/cpp/rnwgpu/api/GPUQueue.h +38 -0
  61. package/cpp/rnwgpu/api/GPURenderBundle.h +38 -0
  62. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +40 -0
  63. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +40 -0
  64. package/cpp/rnwgpu/api/GPURenderPipeline.h +38 -0
  65. package/cpp/rnwgpu/api/GPUSampler.h +38 -0
  66. package/cpp/rnwgpu/api/GPUShaderModule.h +38 -0
  67. package/cpp/rnwgpu/api/GPUSupportedLimits.h +33 -0
  68. package/cpp/rnwgpu/api/GPUTexture.h +38 -0
  69. package/cpp/rnwgpu/api/GPUTextureView.h +38 -0
  70. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +33 -0
  71. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +81 -0
  72. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +67 -0
  73. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +69 -0
  74. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +95 -0
  75. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +56 -0
  76. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +65 -0
  77. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +72 -0
  78. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +62 -0
  79. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +85 -0
  80. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +43 -0
  81. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +93 -0
  82. package/cpp/rnwgpu/api/descriptors/GPUColorDict.h +81 -0
  83. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +69 -0
  84. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +31 -0
  85. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +62 -0
  86. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +80 -0
  87. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +82 -0
  88. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +126 -0
  89. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +69 -0
  90. package/cpp/rnwgpu/api/descriptors/GPUExtent3DDict.h +76 -0
  91. package/cpp/rnwgpu/api/descriptors/GPUExtent3DDictStrict.h +91 -0
  92. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +44 -0
  93. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +75 -0
  94. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +85 -0
  95. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +83 -0
  96. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +66 -0
  97. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +74 -0
  98. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +88 -0
  99. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +70 -0
  100. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +25 -0
  101. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +68 -0
  102. package/cpp/rnwgpu/api/descriptors/GPUOrigin2DDict.h +61 -0
  103. package/cpp/rnwgpu/api/descriptors/GPUOrigin2DDictStrict.h +75 -0
  104. package/cpp/rnwgpu/api/descriptors/GPUOrigin3DDict.h +71 -0
  105. package/cpp/rnwgpu/api/descriptors/GPUPipelineErrorInit.h +54 -0
  106. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +72 -0
  107. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +66 -0
  108. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +72 -0
  109. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +81 -0
  110. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +102 -0
  111. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +105 -0
  112. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +118 -0
  113. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +100 -0
  114. package/cpp/rnwgpu/api/descriptors/GPURenderPassLayout.h +83 -0
  115. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +80 -0
  116. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +104 -0
  117. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +56 -0
  118. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +48 -0
  119. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +116 -0
  120. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +64 -0
  121. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +88 -0
  122. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +27 -0
  123. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +61 -0
  124. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +67 -0
  125. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +58 -0
  126. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +123 -0
  127. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +40 -0
  128. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +113 -0
  129. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +71 -0
  130. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +80 -0
  131. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +73 -0
  132. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +77 -0
  133. package/cpp/rnwgpu/api/descriptors/Unions.h +1645 -0
  134. package/cpp/webgpu/webgpu.h +33 -0
  135. package/cpp/webgpu/webgpu_cpp.h +33 -0
  136. package/cpp/webgpu/webgpu_cpp_chained_struct.h +55 -0
  137. package/cpp/webgpu/webgpu_enum_class_bitmasks.h +161 -0
  138. package/ios/RNFAppleLogger.mm +22 -0
  139. package/ios/Utils.h +5 -0
  140. package/ios/Utils.m +26 -0
  141. package/ios/WebGPUModule.h +18 -0
  142. package/ios/WebGPUModule.mm +77 -0
  143. package/ios/WebGPUView.h +15 -0
  144. package/ios/WebGPUView.mm +58 -0
  145. package/ios/WebGPUViewManager.mm +21 -0
  146. package/lib/commonjs/WebGPUNativeModule.js +10 -0
  147. package/lib/commonjs/WebGPUNativeModule.js.map +1 -0
  148. package/lib/commonjs/WebGPUViewNativeComponent.js +11 -0
  149. package/lib/commonjs/WebGPUViewNativeComponent.js.map +1 -0
  150. package/lib/commonjs/index.js +45 -0
  151. package/lib/commonjs/index.js.map +1 -0
  152. package/lib/module/WebGPUNativeModule.js +4 -0
  153. package/lib/module/WebGPUNativeModule.js.map +1 -0
  154. package/lib/module/WebGPUViewNativeComponent.js +4 -0
  155. package/lib/module/WebGPUViewNativeComponent.js.map +1 -0
  156. package/lib/module/index.js +9 -0
  157. package/lib/module/index.js.map +1 -0
  158. package/lib/typescript/babel.config.d.ts +2 -0
  159. package/lib/typescript/babel.config.d.ts.map +1 -0
  160. package/lib/typescript/jest.config.d.ts +5 -0
  161. package/lib/typescript/jest.config.d.ts.map +1 -0
  162. package/lib/typescript/lib/commonjs/WebGPUNativeModule.d.ts +5 -0
  163. package/lib/typescript/lib/commonjs/WebGPUNativeModule.d.ts.map +1 -0
  164. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +4 -0
  165. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +1 -0
  166. package/lib/typescript/lib/commonjs/index.d.ts +5 -0
  167. package/lib/typescript/lib/commonjs/index.d.ts.map +1 -0
  168. package/lib/typescript/lib/module/WebGPUNativeModule.d.ts +3 -0
  169. package/lib/typescript/lib/module/WebGPUNativeModule.d.ts.map +1 -0
  170. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +4 -0
  171. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +1 -0
  172. package/lib/typescript/lib/module/index.d.ts +5 -0
  173. package/lib/typescript/lib/module/index.d.ts.map +1 -0
  174. package/lib/typescript/scripts/build/copy-artifacts.d.ts +2 -0
  175. package/lib/typescript/scripts/build/copy-artifacts.d.ts.map +1 -0
  176. package/lib/typescript/scripts/build/dawn.d.ts +2 -0
  177. package/lib/typescript/scripts/build/dawn.d.ts.map +1 -0
  178. package/lib/typescript/scripts/build/util.d.ts +13 -0
  179. package/lib/typescript/scripts/build/util.d.ts.map +1 -0
  180. package/lib/typescript/scripts/codegen/codegen.d.ts +2 -0
  181. package/lib/typescript/scripts/codegen/codegen.d.ts.map +1 -0
  182. package/lib/typescript/scripts/codegen/model/dawn.d.ts +2 -0
  183. package/lib/typescript/scripts/codegen/model/dawn.d.ts.map +1 -0
  184. package/lib/typescript/scripts/codegen/model/model.d.ts +8 -0
  185. package/lib/typescript/scripts/codegen/model/model.d.ts.map +1 -0
  186. package/lib/typescript/scripts/codegen/templates/Descriptor.d.ts +4 -0
  187. package/lib/typescript/scripts/codegen/templates/Descriptor.d.ts.map +1 -0
  188. package/lib/typescript/scripts/codegen/templates/Enum.d.ts +3 -0
  189. package/lib/typescript/scripts/codegen/templates/Enum.d.ts.map +1 -0
  190. package/lib/typescript/scripts/codegen/templates/HybridObject.d.ts +3 -0
  191. package/lib/typescript/scripts/codegen/templates/HybridObject.d.ts.map +1 -0
  192. package/lib/typescript/scripts/codegen/templates/Unions.d.ts +6 -0
  193. package/lib/typescript/scripts/codegen/templates/Unions.d.ts.map +1 -0
  194. package/lib/typescript/scripts/codegen/templates/common.d.ts +9 -0
  195. package/lib/typescript/scripts/codegen/templates/common.d.ts.map +1 -0
  196. package/lib/typescript/scripts/codegen/util.d.ts +2 -0
  197. package/lib/typescript/scripts/codegen/util.d.ts.map +1 -0
  198. package/lib/typescript/src/WebGPUNativeModule.d.ts +7 -0
  199. package/lib/typescript/src/WebGPUNativeModule.d.ts.map +1 -0
  200. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts +8 -0
  201. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +1 -0
  202. package/lib/typescript/src/index.d.ts +9 -0
  203. package/lib/typescript/src/index.d.ts.map +1 -0
  204. package/package.json +120 -0
  205. package/react-native-webgpu.podspec +56 -0
  206. package/src/WebGPUNativeModule.ts +9 -0
  207. package/src/WebGPUViewNativeComponent.ts +9 -0
  208. package/src/index.tsx +13 -0
@@ -0,0 +1,1645 @@
1
+ #pragma once
2
+
3
+ #include <string>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "RNFEnumMapper.h"
8
+
9
+ namespace margelo {
10
+ namespace EnumMapper {
11
+
12
+ static void convertJSUnionToEnum(const std::string &inUnion,
13
+ wgpu::AddressMode *outEnum) {
14
+ if (inUnion == "clamp-to-edge") {
15
+ *outEnum = wgpu::AddressMode::ClampToEdge;
16
+ } else if (inUnion == "repeat") {
17
+ *outEnum = wgpu::AddressMode::Repeat;
18
+ } else if (inUnion == "mirror-repeat") {
19
+ *outEnum = wgpu::AddressMode::MirrorRepeat;
20
+ } else {
21
+ throw invalidUnion(inUnion);
22
+ }
23
+ }
24
+
25
+ static void convertEnumToJSUnion(wgpu::AddressMode inEnum,
26
+ std::string *outUnion) {
27
+ switch (inEnum) {
28
+ case wgpu::AddressMode::ClampToEdge:
29
+ *outUnion = "clamp-to-edge";
30
+ break;
31
+ case wgpu::AddressMode::Repeat:
32
+ *outUnion = "repeat";
33
+ break;
34
+ case wgpu::AddressMode::MirrorRepeat:
35
+ *outUnion = "mirror-repeat";
36
+ break;
37
+ default:
38
+ throw invalidEnum(inEnum);
39
+ }
40
+ }
41
+
42
+ static void convertJSUnionToEnum(const std::string &inUnion,
43
+ wgpu::BlendFactor *outEnum) {
44
+ if (inUnion == "zero") {
45
+ *outEnum = wgpu::BlendFactor::Zero;
46
+ } else if (inUnion == "one") {
47
+ *outEnum = wgpu::BlendFactor::One;
48
+ } else if (inUnion == "src") {
49
+ *outEnum = wgpu::BlendFactor::Src;
50
+ } else if (inUnion == "one-minus-src") {
51
+ *outEnum = wgpu::BlendFactor::OneMinusSrc;
52
+ } else if (inUnion == "src-alpha") {
53
+ *outEnum = wgpu::BlendFactor::SrcAlpha;
54
+ } else if (inUnion == "one-minus-src-alpha") {
55
+ *outEnum = wgpu::BlendFactor::OneMinusSrcAlpha;
56
+ } else if (inUnion == "dst") {
57
+ *outEnum = wgpu::BlendFactor::Dst;
58
+ } else if (inUnion == "one-minus-dst") {
59
+ *outEnum = wgpu::BlendFactor::OneMinusDst;
60
+ } else if (inUnion == "dst-alpha") {
61
+ *outEnum = wgpu::BlendFactor::DstAlpha;
62
+ } else if (inUnion == "one-minus-dst-alpha") {
63
+ *outEnum = wgpu::BlendFactor::OneMinusDstAlpha;
64
+ } else if (inUnion == "src-alpha-saturated") {
65
+ *outEnum = wgpu::BlendFactor::SrcAlphaSaturated;
66
+ } else if (inUnion == "constant") {
67
+ *outEnum = wgpu::BlendFactor::Constant;
68
+ } else if (inUnion == "one-minus-constant") {
69
+ *outEnum = wgpu::BlendFactor::OneMinusConstant;
70
+ } else {
71
+ throw invalidUnion(inUnion);
72
+ }
73
+ }
74
+
75
+ static void convertEnumToJSUnion(wgpu::BlendFactor inEnum,
76
+ std::string *outUnion) {
77
+ switch (inEnum) {
78
+ case wgpu::BlendFactor::Zero:
79
+ *outUnion = "zero";
80
+ break;
81
+ case wgpu::BlendFactor::One:
82
+ *outUnion = "one";
83
+ break;
84
+ case wgpu::BlendFactor::Src:
85
+ *outUnion = "src";
86
+ break;
87
+ case wgpu::BlendFactor::OneMinusSrc:
88
+ *outUnion = "one-minus-src";
89
+ break;
90
+ case wgpu::BlendFactor::SrcAlpha:
91
+ *outUnion = "src-alpha";
92
+ break;
93
+ case wgpu::BlendFactor::OneMinusSrcAlpha:
94
+ *outUnion = "one-minus-src-alpha";
95
+ break;
96
+ case wgpu::BlendFactor::Dst:
97
+ *outUnion = "dst";
98
+ break;
99
+ case wgpu::BlendFactor::OneMinusDst:
100
+ *outUnion = "one-minus-dst";
101
+ break;
102
+ case wgpu::BlendFactor::DstAlpha:
103
+ *outUnion = "dst-alpha";
104
+ break;
105
+ case wgpu::BlendFactor::OneMinusDstAlpha:
106
+ *outUnion = "one-minus-dst-alpha";
107
+ break;
108
+ case wgpu::BlendFactor::SrcAlphaSaturated:
109
+ *outUnion = "src-alpha-saturated";
110
+ break;
111
+ case wgpu::BlendFactor::Constant:
112
+ *outUnion = "constant";
113
+ break;
114
+ case wgpu::BlendFactor::OneMinusConstant:
115
+ *outUnion = "one-minus-constant";
116
+ break;
117
+ default:
118
+ throw invalidEnum(inEnum);
119
+ }
120
+ }
121
+
122
+ static void convertJSUnionToEnum(const std::string &inUnion,
123
+ wgpu::BlendOperation *outEnum) {
124
+ if (inUnion == "add") {
125
+ *outEnum = wgpu::BlendOperation::Add;
126
+ } else if (inUnion == "subtract") {
127
+ *outEnum = wgpu::BlendOperation::Subtract;
128
+ } else if (inUnion == "reverse-subtract") {
129
+ *outEnum = wgpu::BlendOperation::ReverseSubtract;
130
+ } else if (inUnion == "min") {
131
+ *outEnum = wgpu::BlendOperation::Min;
132
+ } else if (inUnion == "max") {
133
+ *outEnum = wgpu::BlendOperation::Max;
134
+ } else {
135
+ throw invalidUnion(inUnion);
136
+ }
137
+ }
138
+
139
+ static void convertEnumToJSUnion(wgpu::BlendOperation inEnum,
140
+ std::string *outUnion) {
141
+ switch (inEnum) {
142
+ case wgpu::BlendOperation::Add:
143
+ *outUnion = "add";
144
+ break;
145
+ case wgpu::BlendOperation::Subtract:
146
+ *outUnion = "subtract";
147
+ break;
148
+ case wgpu::BlendOperation::ReverseSubtract:
149
+ *outUnion = "reverse-subtract";
150
+ break;
151
+ case wgpu::BlendOperation::Min:
152
+ *outUnion = "min";
153
+ break;
154
+ case wgpu::BlendOperation::Max:
155
+ *outUnion = "max";
156
+ break;
157
+ default:
158
+ throw invalidEnum(inEnum);
159
+ }
160
+ }
161
+
162
+ static void convertJSUnionToEnum(const std::string &inUnion,
163
+ wgpu::BufferBindingType *outEnum) {
164
+ if (inUnion == "uniform") {
165
+ *outEnum = wgpu::BufferBindingType::Uniform;
166
+ } else if (inUnion == "storage") {
167
+ *outEnum = wgpu::BufferBindingType::Storage;
168
+ } else if (inUnion == "read-only-storage") {
169
+ *outEnum = wgpu::BufferBindingType::ReadOnlyStorage;
170
+ } else {
171
+ throw invalidUnion(inUnion);
172
+ }
173
+ }
174
+
175
+ static void convertEnumToJSUnion(wgpu::BufferBindingType inEnum,
176
+ std::string *outUnion) {
177
+ switch (inEnum) {
178
+ case wgpu::BufferBindingType::Uniform:
179
+ *outUnion = "uniform";
180
+ break;
181
+ case wgpu::BufferBindingType::Storage:
182
+ *outUnion = "storage";
183
+ break;
184
+ case wgpu::BufferBindingType::ReadOnlyStorage:
185
+ *outUnion = "read-only-storage";
186
+ break;
187
+ default:
188
+ throw invalidEnum(inEnum);
189
+ }
190
+ }
191
+
192
+ static void convertJSUnionToEnum(const std::string &inUnion,
193
+ wgpu::BufferMapState *outEnum) {
194
+ if (inUnion == "unmapped") {
195
+ *outEnum = wgpu::BufferMapState::Unmapped;
196
+ } else if (inUnion == "pending") {
197
+ *outEnum = wgpu::BufferMapState::Pending;
198
+ } else if (inUnion == "mapped") {
199
+ *outEnum = wgpu::BufferMapState::Mapped;
200
+ } else {
201
+ throw invalidUnion(inUnion);
202
+ }
203
+ }
204
+
205
+ static void convertEnumToJSUnion(wgpu::BufferMapState inEnum,
206
+ std::string *outUnion) {
207
+ switch (inEnum) {
208
+ case wgpu::BufferMapState::Unmapped:
209
+ *outUnion = "unmapped";
210
+ break;
211
+ case wgpu::BufferMapState::Pending:
212
+ *outUnion = "pending";
213
+ break;
214
+ case wgpu::BufferMapState::Mapped:
215
+ *outUnion = "mapped";
216
+ break;
217
+ default:
218
+ throw invalidEnum(inEnum);
219
+ }
220
+ }
221
+
222
+ static void convertJSUnionToEnum(const std::string &inUnion,
223
+ wgpu::CompareFunction *outEnum) {
224
+ if (inUnion == "never") {
225
+ *outEnum = wgpu::CompareFunction::Never;
226
+ } else if (inUnion == "less") {
227
+ *outEnum = wgpu::CompareFunction::Less;
228
+ } else if (inUnion == "equal") {
229
+ *outEnum = wgpu::CompareFunction::Equal;
230
+ } else if (inUnion == "less-equal") {
231
+ *outEnum = wgpu::CompareFunction::LessEqual;
232
+ } else if (inUnion == "greater") {
233
+ *outEnum = wgpu::CompareFunction::Greater;
234
+ } else if (inUnion == "not-equal") {
235
+ *outEnum = wgpu::CompareFunction::NotEqual;
236
+ } else if (inUnion == "greater-equal") {
237
+ *outEnum = wgpu::CompareFunction::GreaterEqual;
238
+ } else if (inUnion == "always") {
239
+ *outEnum = wgpu::CompareFunction::Always;
240
+ } else {
241
+ throw invalidUnion(inUnion);
242
+ }
243
+ }
244
+
245
+ static void convertEnumToJSUnion(wgpu::CompareFunction inEnum,
246
+ std::string *outUnion) {
247
+ switch (inEnum) {
248
+ case wgpu::CompareFunction::Never:
249
+ *outUnion = "never";
250
+ break;
251
+ case wgpu::CompareFunction::Less:
252
+ *outUnion = "less";
253
+ break;
254
+ case wgpu::CompareFunction::Equal:
255
+ *outUnion = "equal";
256
+ break;
257
+ case wgpu::CompareFunction::LessEqual:
258
+ *outUnion = "less-equal";
259
+ break;
260
+ case wgpu::CompareFunction::Greater:
261
+ *outUnion = "greater";
262
+ break;
263
+ case wgpu::CompareFunction::NotEqual:
264
+ *outUnion = "not-equal";
265
+ break;
266
+ case wgpu::CompareFunction::GreaterEqual:
267
+ *outUnion = "greater-equal";
268
+ break;
269
+ case wgpu::CompareFunction::Always:
270
+ *outUnion = "always";
271
+ break;
272
+ default:
273
+ throw invalidEnum(inEnum);
274
+ }
275
+ }
276
+
277
+ static void convertJSUnionToEnum(const std::string &inUnion,
278
+ wgpu::CompilationMessageType *outEnum) {
279
+ if (inUnion == "error") {
280
+ *outEnum = wgpu::CompilationMessageType::Error;
281
+ } else if (inUnion == "warning") {
282
+ *outEnum = wgpu::CompilationMessageType::Warning;
283
+ } else if (inUnion == "info") {
284
+ *outEnum = wgpu::CompilationMessageType::Info;
285
+ } else {
286
+ throw invalidUnion(inUnion);
287
+ }
288
+ }
289
+
290
+ static void convertEnumToJSUnion(wgpu::CompilationMessageType inEnum,
291
+ std::string *outUnion) {
292
+ switch (inEnum) {
293
+ case wgpu::CompilationMessageType::Error:
294
+ *outUnion = "error";
295
+ break;
296
+ case wgpu::CompilationMessageType::Warning:
297
+ *outUnion = "warning";
298
+ break;
299
+ case wgpu::CompilationMessageType::Info:
300
+ *outUnion = "info";
301
+ break;
302
+ default:
303
+ throw invalidEnum(inEnum);
304
+ }
305
+ }
306
+
307
+ static void convertJSUnionToEnum(const std::string &inUnion,
308
+ wgpu::CullMode *outEnum) {
309
+ if (inUnion == "none") {
310
+ *outEnum = wgpu::CullMode::None;
311
+ } else if (inUnion == "front") {
312
+ *outEnum = wgpu::CullMode::Front;
313
+ } else if (inUnion == "back") {
314
+ *outEnum = wgpu::CullMode::Back;
315
+ } else {
316
+ throw invalidUnion(inUnion);
317
+ }
318
+ }
319
+
320
+ static void convertEnumToJSUnion(wgpu::CullMode inEnum, std::string *outUnion) {
321
+ switch (inEnum) {
322
+ case wgpu::CullMode::None:
323
+ *outUnion = "none";
324
+ break;
325
+ case wgpu::CullMode::Front:
326
+ *outUnion = "front";
327
+ break;
328
+ case wgpu::CullMode::Back:
329
+ *outUnion = "back";
330
+ break;
331
+ default:
332
+ throw invalidEnum(inEnum);
333
+ }
334
+ }
335
+
336
+ static void convertJSUnionToEnum(const std::string &inUnion,
337
+ wgpu::DeviceLostReason *outEnum) {
338
+ if (inUnion == "unknown") {
339
+ *outEnum = wgpu::DeviceLostReason::Unknown;
340
+ } else if (inUnion == "destroyed") {
341
+ *outEnum = wgpu::DeviceLostReason::Destroyed;
342
+ } else {
343
+ throw invalidUnion(inUnion);
344
+ }
345
+ }
346
+
347
+ static void convertEnumToJSUnion(wgpu::DeviceLostReason inEnum,
348
+ std::string *outUnion) {
349
+ switch (inEnum) {
350
+ case wgpu::DeviceLostReason::Unknown:
351
+ *outUnion = "unknown";
352
+ break;
353
+ case wgpu::DeviceLostReason::Destroyed:
354
+ *outUnion = "destroyed";
355
+ break;
356
+ default:
357
+ throw invalidEnum(inEnum);
358
+ }
359
+ }
360
+
361
+ static void convertJSUnionToEnum(const std::string &inUnion,
362
+ wgpu::ErrorFilter *outEnum) {
363
+ if (inUnion == "validation") {
364
+ *outEnum = wgpu::ErrorFilter::Validation;
365
+ } else if (inUnion == "out-of-memory") {
366
+ *outEnum = wgpu::ErrorFilter::OutOfMemory;
367
+ } else if (inUnion == "internal") {
368
+ *outEnum = wgpu::ErrorFilter::Internal;
369
+ } else {
370
+ throw invalidUnion(inUnion);
371
+ }
372
+ }
373
+
374
+ static void convertEnumToJSUnion(wgpu::ErrorFilter inEnum,
375
+ std::string *outUnion) {
376
+ switch (inEnum) {
377
+ case wgpu::ErrorFilter::Validation:
378
+ *outUnion = "validation";
379
+ break;
380
+ case wgpu::ErrorFilter::OutOfMemory:
381
+ *outUnion = "out-of-memory";
382
+ break;
383
+ case wgpu::ErrorFilter::Internal:
384
+ *outUnion = "internal";
385
+ break;
386
+ default:
387
+ throw invalidEnum(inEnum);
388
+ }
389
+ }
390
+
391
+ static void convertJSUnionToEnum(const std::string &inUnion,
392
+ wgpu::FeatureName *outEnum) {
393
+ if (inUnion == "depth-clip-control") {
394
+ *outEnum = wgpu::FeatureName::DepthClipControl;
395
+ } else if (inUnion == "depth32float-stencil8") {
396
+ *outEnum = wgpu::FeatureName::Depth32FloatStencil8;
397
+ } else if (inUnion == "texture-compression-bc") {
398
+ *outEnum = wgpu::FeatureName::TextureCompressionBC;
399
+ } else if (inUnion == "texture-compression-etc2") {
400
+ *outEnum = wgpu::FeatureName::TextureCompressionETC2;
401
+ } else if (inUnion == "texture-compression-astc") {
402
+ *outEnum = wgpu::FeatureName::TextureCompressionASTC;
403
+ } else if (inUnion == "timestamp-query") {
404
+ *outEnum = wgpu::FeatureName::TimestampQuery;
405
+ } else if (inUnion == "indirect-first-instance") {
406
+ *outEnum = wgpu::FeatureName::IndirectFirstInstance;
407
+ } else if (inUnion == "shader-f16") {
408
+ *outEnum = wgpu::FeatureName::ShaderF16;
409
+ } else if (inUnion == "rg11b10ufloat-renderable") {
410
+ *outEnum = wgpu::FeatureName::RG11B10UfloatRenderable;
411
+ } else if (inUnion == "bgra8unorm-storage") {
412
+ *outEnum = wgpu::FeatureName::BGRA8UnormStorage;
413
+ } else if (inUnion == "float32-filterable") {
414
+ *outEnum = wgpu::FeatureName::Float32Filterable;
415
+ } else {
416
+ throw invalidUnion(inUnion);
417
+ }
418
+ }
419
+
420
+ static void convertEnumToJSUnion(wgpu::FeatureName inEnum,
421
+ std::string *outUnion) {
422
+ switch (inEnum) {
423
+ case wgpu::FeatureName::DepthClipControl:
424
+ *outUnion = "depth-clip-control";
425
+ break;
426
+ case wgpu::FeatureName::Depth32FloatStencil8:
427
+ *outUnion = "depth32float-stencil8";
428
+ break;
429
+ case wgpu::FeatureName::TextureCompressionBC:
430
+ *outUnion = "texture-compression-bc";
431
+ break;
432
+ case wgpu::FeatureName::TextureCompressionETC2:
433
+ *outUnion = "texture-compression-etc2";
434
+ break;
435
+ case wgpu::FeatureName::TextureCompressionASTC:
436
+ *outUnion = "texture-compression-astc";
437
+ break;
438
+ case wgpu::FeatureName::TimestampQuery:
439
+ *outUnion = "timestamp-query";
440
+ break;
441
+ case wgpu::FeatureName::IndirectFirstInstance:
442
+ *outUnion = "indirect-first-instance";
443
+ break;
444
+ case wgpu::FeatureName::ShaderF16:
445
+ *outUnion = "shader-f16";
446
+ break;
447
+ case wgpu::FeatureName::RG11B10UfloatRenderable:
448
+ *outUnion = "rg11b10ufloat-renderable";
449
+ break;
450
+ case wgpu::FeatureName::BGRA8UnormStorage:
451
+ *outUnion = "bgra8unorm-storage";
452
+ break;
453
+ case wgpu::FeatureName::Float32Filterable:
454
+ *outUnion = "float32-filterable";
455
+ break;
456
+ default:
457
+ throw invalidEnum(inEnum);
458
+ }
459
+ }
460
+
461
+ static void convertJSUnionToEnum(const std::string &inUnion,
462
+ wgpu::FilterMode *outEnum) {
463
+ if (inUnion == "nearest") {
464
+ *outEnum = wgpu::FilterMode::Nearest;
465
+ } else if (inUnion == "linear") {
466
+ *outEnum = wgpu::FilterMode::Linear;
467
+ } else {
468
+ throw invalidUnion(inUnion);
469
+ }
470
+ }
471
+
472
+ static void convertEnumToJSUnion(wgpu::FilterMode inEnum,
473
+ std::string *outUnion) {
474
+ switch (inEnum) {
475
+ case wgpu::FilterMode::Nearest:
476
+ *outUnion = "nearest";
477
+ break;
478
+ case wgpu::FilterMode::Linear:
479
+ *outUnion = "linear";
480
+ break;
481
+ default:
482
+ throw invalidEnum(inEnum);
483
+ }
484
+ }
485
+
486
+ static void convertJSUnionToEnum(const std::string &inUnion,
487
+ wgpu::FrontFace *outEnum) {
488
+ if (inUnion == "ccw") {
489
+ *outEnum = wgpu::FrontFace::CCW;
490
+ } else if (inUnion == "cw") {
491
+ *outEnum = wgpu::FrontFace::CW;
492
+ } else {
493
+ throw invalidUnion(inUnion);
494
+ }
495
+ }
496
+
497
+ static void convertEnumToJSUnion(wgpu::FrontFace inEnum,
498
+ std::string *outUnion) {
499
+ switch (inEnum) {
500
+ case wgpu::FrontFace::CCW:
501
+ *outUnion = "ccw";
502
+ break;
503
+ case wgpu::FrontFace::CW:
504
+ *outUnion = "cw";
505
+ break;
506
+ default:
507
+ throw invalidEnum(inEnum);
508
+ }
509
+ }
510
+
511
+ static void convertJSUnionToEnum(const std::string &inUnion,
512
+ wgpu::IndexFormat *outEnum) {
513
+ if (inUnion == "uint16") {
514
+ *outEnum = wgpu::IndexFormat::Uint16;
515
+ } else if (inUnion == "uint32") {
516
+ *outEnum = wgpu::IndexFormat::Uint32;
517
+ } else {
518
+ throw invalidUnion(inUnion);
519
+ }
520
+ }
521
+
522
+ static void convertEnumToJSUnion(wgpu::IndexFormat inEnum,
523
+ std::string *outUnion) {
524
+ switch (inEnum) {
525
+ case wgpu::IndexFormat::Uint16:
526
+ *outUnion = "uint16";
527
+ break;
528
+ case wgpu::IndexFormat::Uint32:
529
+ *outUnion = "uint32";
530
+ break;
531
+ default:
532
+ throw invalidEnum(inEnum);
533
+ }
534
+ }
535
+
536
+ static void convertJSUnionToEnum(const std::string &inUnion,
537
+ wgpu::LoadOp *outEnum) {
538
+ if (inUnion == "load") {
539
+ *outEnum = wgpu::LoadOp::Load;
540
+ } else if (inUnion == "clear") {
541
+ *outEnum = wgpu::LoadOp::Clear;
542
+ } else {
543
+ throw invalidUnion(inUnion);
544
+ }
545
+ }
546
+
547
+ static void convertEnumToJSUnion(wgpu::LoadOp inEnum, std::string *outUnion) {
548
+ switch (inEnum) {
549
+ case wgpu::LoadOp::Load:
550
+ *outUnion = "load";
551
+ break;
552
+ case wgpu::LoadOp::Clear:
553
+ *outUnion = "clear";
554
+ break;
555
+ default:
556
+ throw invalidEnum(inEnum);
557
+ }
558
+ }
559
+
560
+ static void convertJSUnionToEnum(const std::string &inUnion,
561
+ wgpu::MipmapFilterMode *outEnum) {
562
+ if (inUnion == "nearest") {
563
+ *outEnum = wgpu::MipmapFilterMode::Nearest;
564
+ } else if (inUnion == "linear") {
565
+ *outEnum = wgpu::MipmapFilterMode::Linear;
566
+ } else {
567
+ throw invalidUnion(inUnion);
568
+ }
569
+ }
570
+
571
+ static void convertEnumToJSUnion(wgpu::MipmapFilterMode inEnum,
572
+ std::string *outUnion) {
573
+ switch (inEnum) {
574
+ case wgpu::MipmapFilterMode::Nearest:
575
+ *outUnion = "nearest";
576
+ break;
577
+ case wgpu::MipmapFilterMode::Linear:
578
+ *outUnion = "linear";
579
+ break;
580
+ default:
581
+ throw invalidEnum(inEnum);
582
+ }
583
+ }
584
+
585
+ static void convertJSUnionToEnum(const std::string &inUnion,
586
+ wgpu::PowerPreference *outEnum) {
587
+ if (inUnion == "low-power") {
588
+ *outEnum = wgpu::PowerPreference::LowPower;
589
+ } else if (inUnion == "high-performance") {
590
+ *outEnum = wgpu::PowerPreference::HighPerformance;
591
+ } else {
592
+ throw invalidUnion(inUnion);
593
+ }
594
+ }
595
+
596
+ static void convertEnumToJSUnion(wgpu::PowerPreference inEnum,
597
+ std::string *outUnion) {
598
+ switch (inEnum) {
599
+ case wgpu::PowerPreference::LowPower:
600
+ *outUnion = "low-power";
601
+ break;
602
+ case wgpu::PowerPreference::HighPerformance:
603
+ *outUnion = "high-performance";
604
+ break;
605
+ default:
606
+ throw invalidEnum(inEnum);
607
+ }
608
+ }
609
+
610
+ static void convertJSUnionToEnum(const std::string &inUnion,
611
+ wgpu::PrimitiveTopology *outEnum) {
612
+ if (inUnion == "point-list") {
613
+ *outEnum = wgpu::PrimitiveTopology::PointList;
614
+ } else if (inUnion == "line-list") {
615
+ *outEnum = wgpu::PrimitiveTopology::LineList;
616
+ } else if (inUnion == "line-strip") {
617
+ *outEnum = wgpu::PrimitiveTopology::LineStrip;
618
+ } else if (inUnion == "triangle-list") {
619
+ *outEnum = wgpu::PrimitiveTopology::TriangleList;
620
+ } else if (inUnion == "triangle-strip") {
621
+ *outEnum = wgpu::PrimitiveTopology::TriangleStrip;
622
+ } else {
623
+ throw invalidUnion(inUnion);
624
+ }
625
+ }
626
+
627
+ static void convertEnumToJSUnion(wgpu::PrimitiveTopology inEnum,
628
+ std::string *outUnion) {
629
+ switch (inEnum) {
630
+ case wgpu::PrimitiveTopology::PointList:
631
+ *outUnion = "point-list";
632
+ break;
633
+ case wgpu::PrimitiveTopology::LineList:
634
+ *outUnion = "line-list";
635
+ break;
636
+ case wgpu::PrimitiveTopology::LineStrip:
637
+ *outUnion = "line-strip";
638
+ break;
639
+ case wgpu::PrimitiveTopology::TriangleList:
640
+ *outUnion = "triangle-list";
641
+ break;
642
+ case wgpu::PrimitiveTopology::TriangleStrip:
643
+ *outUnion = "triangle-strip";
644
+ break;
645
+ default:
646
+ throw invalidEnum(inEnum);
647
+ }
648
+ }
649
+
650
+ static void convertJSUnionToEnum(const std::string &inUnion,
651
+ wgpu::QueryType *outEnum) {
652
+ if (inUnion == "occlusion") {
653
+ *outEnum = wgpu::QueryType::Occlusion;
654
+ } else if (inUnion == "timestamp") {
655
+ *outEnum = wgpu::QueryType::Timestamp;
656
+ } else {
657
+ throw invalidUnion(inUnion);
658
+ }
659
+ }
660
+
661
+ static void convertEnumToJSUnion(wgpu::QueryType inEnum,
662
+ std::string *outUnion) {
663
+ switch (inEnum) {
664
+ case wgpu::QueryType::Occlusion:
665
+ *outUnion = "occlusion";
666
+ break;
667
+ case wgpu::QueryType::Timestamp:
668
+ *outUnion = "timestamp";
669
+ break;
670
+ default:
671
+ throw invalidEnum(inEnum);
672
+ }
673
+ }
674
+
675
+ static void convertJSUnionToEnum(const std::string &inUnion,
676
+ wgpu::SamplerBindingType *outEnum) {
677
+ if (inUnion == "filtering") {
678
+ *outEnum = wgpu::SamplerBindingType::Filtering;
679
+ } else if (inUnion == "non-filtering") {
680
+ *outEnum = wgpu::SamplerBindingType::NonFiltering;
681
+ } else if (inUnion == "comparison") {
682
+ *outEnum = wgpu::SamplerBindingType::Comparison;
683
+ } else {
684
+ throw invalidUnion(inUnion);
685
+ }
686
+ }
687
+
688
+ static void convertEnumToJSUnion(wgpu::SamplerBindingType inEnum,
689
+ std::string *outUnion) {
690
+ switch (inEnum) {
691
+ case wgpu::SamplerBindingType::Filtering:
692
+ *outUnion = "filtering";
693
+ break;
694
+ case wgpu::SamplerBindingType::NonFiltering:
695
+ *outUnion = "non-filtering";
696
+ break;
697
+ case wgpu::SamplerBindingType::Comparison:
698
+ *outUnion = "comparison";
699
+ break;
700
+ default:
701
+ throw invalidEnum(inEnum);
702
+ }
703
+ }
704
+
705
+ static void convertJSUnionToEnum(const std::string &inUnion,
706
+ wgpu::StencilOperation *outEnum) {
707
+ if (inUnion == "zero") {
708
+ *outEnum = wgpu::StencilOperation::Zero;
709
+ } else if (inUnion == "keep") {
710
+ *outEnum = wgpu::StencilOperation::Keep;
711
+ } else if (inUnion == "replace") {
712
+ *outEnum = wgpu::StencilOperation::Replace;
713
+ } else if (inUnion == "invert") {
714
+ *outEnum = wgpu::StencilOperation::Invert;
715
+ } else if (inUnion == "increment-clamp") {
716
+ *outEnum = wgpu::StencilOperation::IncrementClamp;
717
+ } else if (inUnion == "decrement-clamp") {
718
+ *outEnum = wgpu::StencilOperation::DecrementClamp;
719
+ } else if (inUnion == "increment-wrap") {
720
+ *outEnum = wgpu::StencilOperation::IncrementWrap;
721
+ } else if (inUnion == "decrement-wrap") {
722
+ *outEnum = wgpu::StencilOperation::DecrementWrap;
723
+ } else {
724
+ throw invalidUnion(inUnion);
725
+ }
726
+ }
727
+
728
+ static void convertEnumToJSUnion(wgpu::StencilOperation inEnum,
729
+ std::string *outUnion) {
730
+ switch (inEnum) {
731
+ case wgpu::StencilOperation::Zero:
732
+ *outUnion = "zero";
733
+ break;
734
+ case wgpu::StencilOperation::Keep:
735
+ *outUnion = "keep";
736
+ break;
737
+ case wgpu::StencilOperation::Replace:
738
+ *outUnion = "replace";
739
+ break;
740
+ case wgpu::StencilOperation::Invert:
741
+ *outUnion = "invert";
742
+ break;
743
+ case wgpu::StencilOperation::IncrementClamp:
744
+ *outUnion = "increment-clamp";
745
+ break;
746
+ case wgpu::StencilOperation::DecrementClamp:
747
+ *outUnion = "decrement-clamp";
748
+ break;
749
+ case wgpu::StencilOperation::IncrementWrap:
750
+ *outUnion = "increment-wrap";
751
+ break;
752
+ case wgpu::StencilOperation::DecrementWrap:
753
+ *outUnion = "decrement-wrap";
754
+ break;
755
+ default:
756
+ throw invalidEnum(inEnum);
757
+ }
758
+ }
759
+
760
+ static void convertJSUnionToEnum(const std::string &inUnion,
761
+ wgpu::StorageTextureAccess *outEnum) {
762
+ if (inUnion == "write-only") {
763
+ *outEnum = wgpu::StorageTextureAccess::WriteOnly;
764
+ } else if (inUnion == "read-only") {
765
+ *outEnum = wgpu::StorageTextureAccess::ReadOnly;
766
+ } else if (inUnion == "read-write") {
767
+ *outEnum = wgpu::StorageTextureAccess::ReadWrite;
768
+ } else {
769
+ throw invalidUnion(inUnion);
770
+ }
771
+ }
772
+
773
+ static void convertEnumToJSUnion(wgpu::StorageTextureAccess inEnum,
774
+ std::string *outUnion) {
775
+ switch (inEnum) {
776
+ case wgpu::StorageTextureAccess::WriteOnly:
777
+ *outUnion = "write-only";
778
+ break;
779
+ case wgpu::StorageTextureAccess::ReadOnly:
780
+ *outUnion = "read-only";
781
+ break;
782
+ case wgpu::StorageTextureAccess::ReadWrite:
783
+ *outUnion = "read-write";
784
+ break;
785
+ default:
786
+ throw invalidEnum(inEnum);
787
+ }
788
+ }
789
+
790
+ static void convertJSUnionToEnum(const std::string &inUnion,
791
+ wgpu::StoreOp *outEnum) {
792
+ if (inUnion == "store") {
793
+ *outEnum = wgpu::StoreOp::Store;
794
+ } else if (inUnion == "discard") {
795
+ *outEnum = wgpu::StoreOp::Discard;
796
+ } else {
797
+ throw invalidUnion(inUnion);
798
+ }
799
+ }
800
+
801
+ static void convertEnumToJSUnion(wgpu::StoreOp inEnum, std::string *outUnion) {
802
+ switch (inEnum) {
803
+ case wgpu::StoreOp::Store:
804
+ *outUnion = "store";
805
+ break;
806
+ case wgpu::StoreOp::Discard:
807
+ *outUnion = "discard";
808
+ break;
809
+ default:
810
+ throw invalidEnum(inEnum);
811
+ }
812
+ }
813
+
814
+ static void convertJSUnionToEnum(const std::string &inUnion,
815
+ wgpu::TextureAspect *outEnum) {
816
+ if (inUnion == "all") {
817
+ *outEnum = wgpu::TextureAspect::All;
818
+ } else if (inUnion == "stencil-only") {
819
+ *outEnum = wgpu::TextureAspect::StencilOnly;
820
+ } else if (inUnion == "depth-only") {
821
+ *outEnum = wgpu::TextureAspect::DepthOnly;
822
+ } else {
823
+ throw invalidUnion(inUnion);
824
+ }
825
+ }
826
+
827
+ static void convertEnumToJSUnion(wgpu::TextureAspect inEnum,
828
+ std::string *outUnion) {
829
+ switch (inEnum) {
830
+ case wgpu::TextureAspect::All:
831
+ *outUnion = "all";
832
+ break;
833
+ case wgpu::TextureAspect::StencilOnly:
834
+ *outUnion = "stencil-only";
835
+ break;
836
+ case wgpu::TextureAspect::DepthOnly:
837
+ *outUnion = "depth-only";
838
+ break;
839
+ default:
840
+ throw invalidEnum(inEnum);
841
+ }
842
+ }
843
+
844
+ static void convertJSUnionToEnum(const std::string &inUnion,
845
+ wgpu::TextureDimension *outEnum) {
846
+ if (inUnion == "1d") {
847
+ *outEnum = wgpu::TextureDimension::e1D;
848
+ } else if (inUnion == "2d") {
849
+ *outEnum = wgpu::TextureDimension::e2D;
850
+ } else if (inUnion == "3d") {
851
+ *outEnum = wgpu::TextureDimension::e3D;
852
+ } else {
853
+ throw invalidUnion(inUnion);
854
+ }
855
+ }
856
+
857
+ static void convertEnumToJSUnion(wgpu::TextureDimension inEnum,
858
+ std::string *outUnion) {
859
+ switch (inEnum) {
860
+ case wgpu::TextureDimension::e1D:
861
+ *outUnion = "1d";
862
+ break;
863
+ case wgpu::TextureDimension::e2D:
864
+ *outUnion = "2d";
865
+ break;
866
+ case wgpu::TextureDimension::e3D:
867
+ *outUnion = "3d";
868
+ break;
869
+ default:
870
+ throw invalidEnum(inEnum);
871
+ }
872
+ }
873
+
874
+ static void convertJSUnionToEnum(const std::string &inUnion,
875
+ wgpu::TextureFormat *outEnum) {
876
+ if (inUnion == "depth32float-stencil8") {
877
+ *outEnum = wgpu::TextureFormat::Depth32FloatStencil8;
878
+ } else if (inUnion == "r8unorm") {
879
+ *outEnum = wgpu::TextureFormat::R8Unorm;
880
+ } else if (inUnion == "r8snorm") {
881
+ *outEnum = wgpu::TextureFormat::R8Snorm;
882
+ } else if (inUnion == "r8uint") {
883
+ *outEnum = wgpu::TextureFormat::R8Uint;
884
+ } else if (inUnion == "r8sint") {
885
+ *outEnum = wgpu::TextureFormat::R8Sint;
886
+ } else if (inUnion == "r16uint") {
887
+ *outEnum = wgpu::TextureFormat::R16Uint;
888
+ } else if (inUnion == "r16sint") {
889
+ *outEnum = wgpu::TextureFormat::R16Sint;
890
+ } else if (inUnion == "r16float") {
891
+ *outEnum = wgpu::TextureFormat::R16Float;
892
+ } else if (inUnion == "rg8unorm") {
893
+ *outEnum = wgpu::TextureFormat::RG8Unorm;
894
+ } else if (inUnion == "rg8snorm") {
895
+ *outEnum = wgpu::TextureFormat::RG8Snorm;
896
+ } else if (inUnion == "rg8uint") {
897
+ *outEnum = wgpu::TextureFormat::RG8Uint;
898
+ } else if (inUnion == "rg8sint") {
899
+ *outEnum = wgpu::TextureFormat::RG8Sint;
900
+ } else if (inUnion == "r32uint") {
901
+ *outEnum = wgpu::TextureFormat::R32Uint;
902
+ } else if (inUnion == "r32sint") {
903
+ *outEnum = wgpu::TextureFormat::R32Sint;
904
+ } else if (inUnion == "r32float") {
905
+ *outEnum = wgpu::TextureFormat::R32Float;
906
+ } else if (inUnion == "rg16uint") {
907
+ *outEnum = wgpu::TextureFormat::RG16Uint;
908
+ } else if (inUnion == "rg16sint") {
909
+ *outEnum = wgpu::TextureFormat::RG16Sint;
910
+ } else if (inUnion == "rg16float") {
911
+ *outEnum = wgpu::TextureFormat::RG16Float;
912
+ } else if (inUnion == "rgba8unorm") {
913
+ *outEnum = wgpu::TextureFormat::RGBA8Unorm;
914
+ } else if (inUnion == "rgba8unorm-srgb") {
915
+ *outEnum = wgpu::TextureFormat::RGBA8UnormSrgb;
916
+ } else if (inUnion == "rgba8snorm") {
917
+ *outEnum = wgpu::TextureFormat::RGBA8Snorm;
918
+ } else if (inUnion == "rgba8uint") {
919
+ *outEnum = wgpu::TextureFormat::RGBA8Uint;
920
+ } else if (inUnion == "rgba8sint") {
921
+ *outEnum = wgpu::TextureFormat::RGBA8Sint;
922
+ } else if (inUnion == "bgra8unorm") {
923
+ *outEnum = wgpu::TextureFormat::BGRA8Unorm;
924
+ } else if (inUnion == "bgra8unorm-srgb") {
925
+ *outEnum = wgpu::TextureFormat::BGRA8UnormSrgb;
926
+ } else if (inUnion == "rgb9e5ufloat") {
927
+ *outEnum = wgpu::TextureFormat::RGB9E5Ufloat;
928
+ } else if (inUnion == "rgb10a2uint") {
929
+ *outEnum = wgpu::TextureFormat::RGB10A2Uint;
930
+ } else if (inUnion == "rgb10a2unorm") {
931
+ *outEnum = wgpu::TextureFormat::RGB10A2Unorm;
932
+ } else if (inUnion == "rg11b10ufloat") {
933
+ *outEnum = wgpu::TextureFormat::RG11B10Ufloat;
934
+ } else if (inUnion == "rg32uint") {
935
+ *outEnum = wgpu::TextureFormat::RG32Uint;
936
+ } else if (inUnion == "rg32sint") {
937
+ *outEnum = wgpu::TextureFormat::RG32Sint;
938
+ } else if (inUnion == "rg32float") {
939
+ *outEnum = wgpu::TextureFormat::RG32Float;
940
+ } else if (inUnion == "rgba16uint") {
941
+ *outEnum = wgpu::TextureFormat::RGBA16Uint;
942
+ } else if (inUnion == "rgba16sint") {
943
+ *outEnum = wgpu::TextureFormat::RGBA16Sint;
944
+ } else if (inUnion == "rgba16float") {
945
+ *outEnum = wgpu::TextureFormat::RGBA16Float;
946
+ } else if (inUnion == "rgba32uint") {
947
+ *outEnum = wgpu::TextureFormat::RGBA32Uint;
948
+ } else if (inUnion == "rgba32sint") {
949
+ *outEnum = wgpu::TextureFormat::RGBA32Sint;
950
+ } else if (inUnion == "rgba32float") {
951
+ *outEnum = wgpu::TextureFormat::RGBA32Float;
952
+ } else if (inUnion == "stencil8") {
953
+ *outEnum = wgpu::TextureFormat::Stencil8;
954
+ } else if (inUnion == "depth16unorm") {
955
+ *outEnum = wgpu::TextureFormat::Depth16Unorm;
956
+ } else if (inUnion == "depth24plus") {
957
+ *outEnum = wgpu::TextureFormat::Depth24Plus;
958
+ } else if (inUnion == "depth24plus-stencil8") {
959
+ *outEnum = wgpu::TextureFormat::Depth24PlusStencil8;
960
+ } else if (inUnion == "depth32float") {
961
+ *outEnum = wgpu::TextureFormat::Depth32Float;
962
+ } else if (inUnion == "bc1-rgba-unorm") {
963
+ *outEnum = wgpu::TextureFormat::BC1RGBAUnorm;
964
+ } else if (inUnion == "bc1-rgba-unorm-srgb") {
965
+ *outEnum = wgpu::TextureFormat::BC1RGBAUnormSrgb;
966
+ } else if (inUnion == "bc2-rgba-unorm") {
967
+ *outEnum = wgpu::TextureFormat::BC2RGBAUnorm;
968
+ } else if (inUnion == "bc2-rgba-unorm-srgb") {
969
+ *outEnum = wgpu::TextureFormat::BC2RGBAUnormSrgb;
970
+ } else if (inUnion == "bc3-rgba-unorm") {
971
+ *outEnum = wgpu::TextureFormat::BC3RGBAUnorm;
972
+ } else if (inUnion == "bc3-rgba-unorm-srgb") {
973
+ *outEnum = wgpu::TextureFormat::BC3RGBAUnormSrgb;
974
+ } else if (inUnion == "bc4-r-unorm") {
975
+ *outEnum = wgpu::TextureFormat::BC4RUnorm;
976
+ } else if (inUnion == "bc4-r-snorm") {
977
+ *outEnum = wgpu::TextureFormat::BC4RSnorm;
978
+ } else if (inUnion == "bc5-rg-unorm") {
979
+ *outEnum = wgpu::TextureFormat::BC5RGUnorm;
980
+ } else if (inUnion == "bc5-rg-snorm") {
981
+ *outEnum = wgpu::TextureFormat::BC5RGSnorm;
982
+ } else if (inUnion == "bc6h-rgb-ufloat") {
983
+ *outEnum = wgpu::TextureFormat::BC6HRGBUfloat;
984
+ } else if (inUnion == "bc6h-rgb-float") {
985
+ *outEnum = wgpu::TextureFormat::BC6HRGBFloat;
986
+ } else if (inUnion == "bc7-rgba-unorm") {
987
+ *outEnum = wgpu::TextureFormat::BC7RGBAUnorm;
988
+ } else if (inUnion == "bc7-rgba-unorm-srgb") {
989
+ *outEnum = wgpu::TextureFormat::BC7RGBAUnormSrgb;
990
+ } else if (inUnion == "etc2-rgb8unorm") {
991
+ *outEnum = wgpu::TextureFormat::ETC2RGB8Unorm;
992
+ } else if (inUnion == "etc2-rgb8unorm-srgb") {
993
+ *outEnum = wgpu::TextureFormat::ETC2RGB8UnormSrgb;
994
+ } else if (inUnion == "etc2-rgb8a1unorm") {
995
+ *outEnum = wgpu::TextureFormat::ETC2RGB8A1Unorm;
996
+ } else if (inUnion == "etc2-rgb8a1unorm-srgb") {
997
+ *outEnum = wgpu::TextureFormat::ETC2RGB8A1UnormSrgb;
998
+ } else if (inUnion == "etc2-rgba8unorm") {
999
+ *outEnum = wgpu::TextureFormat::ETC2RGBA8Unorm;
1000
+ } else if (inUnion == "etc2-rgba8unorm-srgb") {
1001
+ *outEnum = wgpu::TextureFormat::ETC2RGBA8UnormSrgb;
1002
+ } else if (inUnion == "eac-r11unorm") {
1003
+ *outEnum = wgpu::TextureFormat::EACR11Unorm;
1004
+ } else if (inUnion == "eac-r11snorm") {
1005
+ *outEnum = wgpu::TextureFormat::EACR11Snorm;
1006
+ } else if (inUnion == "eac-rg11unorm") {
1007
+ *outEnum = wgpu::TextureFormat::EACRG11Unorm;
1008
+ } else if (inUnion == "eac-rg11snorm") {
1009
+ *outEnum = wgpu::TextureFormat::EACRG11Snorm;
1010
+ } else if (inUnion == "astc-4x4-unorm") {
1011
+ *outEnum = wgpu::TextureFormat::ASTC4x4Unorm;
1012
+ } else if (inUnion == "astc-4x4-unorm-srgb") {
1013
+ *outEnum = wgpu::TextureFormat::ASTC4x4UnormSrgb;
1014
+ } else if (inUnion == "astc-5x4-unorm") {
1015
+ *outEnum = wgpu::TextureFormat::ASTC5x4Unorm;
1016
+ } else if (inUnion == "astc-5x4-unorm-srgb") {
1017
+ *outEnum = wgpu::TextureFormat::ASTC5x4UnormSrgb;
1018
+ } else if (inUnion == "astc-5x5-unorm") {
1019
+ *outEnum = wgpu::TextureFormat::ASTC5x5Unorm;
1020
+ } else if (inUnion == "astc-5x5-unorm-srgb") {
1021
+ *outEnum = wgpu::TextureFormat::ASTC5x5UnormSrgb;
1022
+ } else if (inUnion == "astc-6x5-unorm") {
1023
+ *outEnum = wgpu::TextureFormat::ASTC6x5Unorm;
1024
+ } else if (inUnion == "astc-6x5-unorm-srgb") {
1025
+ *outEnum = wgpu::TextureFormat::ASTC6x5UnormSrgb;
1026
+ } else if (inUnion == "astc-6x6-unorm") {
1027
+ *outEnum = wgpu::TextureFormat::ASTC6x6Unorm;
1028
+ } else if (inUnion == "astc-6x6-unorm-srgb") {
1029
+ *outEnum = wgpu::TextureFormat::ASTC6x6UnormSrgb;
1030
+ } else if (inUnion == "astc-8x5-unorm") {
1031
+ *outEnum = wgpu::TextureFormat::ASTC8x5Unorm;
1032
+ } else if (inUnion == "astc-8x5-unorm-srgb") {
1033
+ *outEnum = wgpu::TextureFormat::ASTC8x5UnormSrgb;
1034
+ } else if (inUnion == "astc-8x6-unorm") {
1035
+ *outEnum = wgpu::TextureFormat::ASTC8x6Unorm;
1036
+ } else if (inUnion == "astc-8x6-unorm-srgb") {
1037
+ *outEnum = wgpu::TextureFormat::ASTC8x6UnormSrgb;
1038
+ } else if (inUnion == "astc-8x8-unorm") {
1039
+ *outEnum = wgpu::TextureFormat::ASTC8x8Unorm;
1040
+ } else if (inUnion == "astc-8x8-unorm-srgb") {
1041
+ *outEnum = wgpu::TextureFormat::ASTC8x8UnormSrgb;
1042
+ } else if (inUnion == "astc-10x5-unorm") {
1043
+ *outEnum = wgpu::TextureFormat::ASTC10x5Unorm;
1044
+ } else if (inUnion == "astc-10x5-unorm-srgb") {
1045
+ *outEnum = wgpu::TextureFormat::ASTC10x5UnormSrgb;
1046
+ } else if (inUnion == "astc-10x6-unorm") {
1047
+ *outEnum = wgpu::TextureFormat::ASTC10x6Unorm;
1048
+ } else if (inUnion == "astc-10x6-unorm-srgb") {
1049
+ *outEnum = wgpu::TextureFormat::ASTC10x6UnormSrgb;
1050
+ } else if (inUnion == "astc-10x8-unorm") {
1051
+ *outEnum = wgpu::TextureFormat::ASTC10x8Unorm;
1052
+ } else if (inUnion == "astc-10x8-unorm-srgb") {
1053
+ *outEnum = wgpu::TextureFormat::ASTC10x8UnormSrgb;
1054
+ } else if (inUnion == "astc-10x10-unorm") {
1055
+ *outEnum = wgpu::TextureFormat::ASTC10x10Unorm;
1056
+ } else if (inUnion == "astc-10x10-unorm-srgb") {
1057
+ *outEnum = wgpu::TextureFormat::ASTC10x10UnormSrgb;
1058
+ } else if (inUnion == "astc-12x10-unorm") {
1059
+ *outEnum = wgpu::TextureFormat::ASTC12x10Unorm;
1060
+ } else if (inUnion == "astc-12x10-unorm-srgb") {
1061
+ *outEnum = wgpu::TextureFormat::ASTC12x10UnormSrgb;
1062
+ } else if (inUnion == "astc-12x12-unorm") {
1063
+ *outEnum = wgpu::TextureFormat::ASTC12x12Unorm;
1064
+ } else if (inUnion == "astc-12x12-unorm-srgb") {
1065
+ *outEnum = wgpu::TextureFormat::ASTC12x12UnormSrgb;
1066
+ } else {
1067
+ throw invalidUnion(inUnion);
1068
+ }
1069
+ }
1070
+
1071
+ static void convertEnumToJSUnion(wgpu::TextureFormat inEnum,
1072
+ std::string *outUnion) {
1073
+ switch (inEnum) {
1074
+ case wgpu::TextureFormat::Depth32FloatStencil8:
1075
+ *outUnion = "depth32float-stencil8";
1076
+ break;
1077
+ case wgpu::TextureFormat::R8Unorm:
1078
+ *outUnion = "r8unorm";
1079
+ break;
1080
+ case wgpu::TextureFormat::R8Snorm:
1081
+ *outUnion = "r8snorm";
1082
+ break;
1083
+ case wgpu::TextureFormat::R8Uint:
1084
+ *outUnion = "r8uint";
1085
+ break;
1086
+ case wgpu::TextureFormat::R8Sint:
1087
+ *outUnion = "r8sint";
1088
+ break;
1089
+ case wgpu::TextureFormat::R16Uint:
1090
+ *outUnion = "r16uint";
1091
+ break;
1092
+ case wgpu::TextureFormat::R16Sint:
1093
+ *outUnion = "r16sint";
1094
+ break;
1095
+ case wgpu::TextureFormat::R16Float:
1096
+ *outUnion = "r16float";
1097
+ break;
1098
+ case wgpu::TextureFormat::RG8Unorm:
1099
+ *outUnion = "rg8unorm";
1100
+ break;
1101
+ case wgpu::TextureFormat::RG8Snorm:
1102
+ *outUnion = "rg8snorm";
1103
+ break;
1104
+ case wgpu::TextureFormat::RG8Uint:
1105
+ *outUnion = "rg8uint";
1106
+ break;
1107
+ case wgpu::TextureFormat::RG8Sint:
1108
+ *outUnion = "rg8sint";
1109
+ break;
1110
+ case wgpu::TextureFormat::R32Uint:
1111
+ *outUnion = "r32uint";
1112
+ break;
1113
+ case wgpu::TextureFormat::R32Sint:
1114
+ *outUnion = "r32sint";
1115
+ break;
1116
+ case wgpu::TextureFormat::R32Float:
1117
+ *outUnion = "r32float";
1118
+ break;
1119
+ case wgpu::TextureFormat::RG16Uint:
1120
+ *outUnion = "rg16uint";
1121
+ break;
1122
+ case wgpu::TextureFormat::RG16Sint:
1123
+ *outUnion = "rg16sint";
1124
+ break;
1125
+ case wgpu::TextureFormat::RG16Float:
1126
+ *outUnion = "rg16float";
1127
+ break;
1128
+ case wgpu::TextureFormat::RGBA8Unorm:
1129
+ *outUnion = "rgba8unorm";
1130
+ break;
1131
+ case wgpu::TextureFormat::RGBA8UnormSrgb:
1132
+ *outUnion = "rgba8unorm-srgb";
1133
+ break;
1134
+ case wgpu::TextureFormat::RGBA8Snorm:
1135
+ *outUnion = "rgba8snorm";
1136
+ break;
1137
+ case wgpu::TextureFormat::RGBA8Uint:
1138
+ *outUnion = "rgba8uint";
1139
+ break;
1140
+ case wgpu::TextureFormat::RGBA8Sint:
1141
+ *outUnion = "rgba8sint";
1142
+ break;
1143
+ case wgpu::TextureFormat::BGRA8Unorm:
1144
+ *outUnion = "bgra8unorm";
1145
+ break;
1146
+ case wgpu::TextureFormat::BGRA8UnormSrgb:
1147
+ *outUnion = "bgra8unorm-srgb";
1148
+ break;
1149
+ case wgpu::TextureFormat::RGB9E5Ufloat:
1150
+ *outUnion = "rgb9e5ufloat";
1151
+ break;
1152
+ case wgpu::TextureFormat::RGB10A2Uint:
1153
+ *outUnion = "rgb10a2uint";
1154
+ break;
1155
+ case wgpu::TextureFormat::RGB10A2Unorm:
1156
+ *outUnion = "rgb10a2unorm";
1157
+ break;
1158
+ case wgpu::TextureFormat::RG11B10Ufloat:
1159
+ *outUnion = "rg11b10ufloat";
1160
+ break;
1161
+ case wgpu::TextureFormat::RG32Uint:
1162
+ *outUnion = "rg32uint";
1163
+ break;
1164
+ case wgpu::TextureFormat::RG32Sint:
1165
+ *outUnion = "rg32sint";
1166
+ break;
1167
+ case wgpu::TextureFormat::RG32Float:
1168
+ *outUnion = "rg32float";
1169
+ break;
1170
+ case wgpu::TextureFormat::RGBA16Uint:
1171
+ *outUnion = "rgba16uint";
1172
+ break;
1173
+ case wgpu::TextureFormat::RGBA16Sint:
1174
+ *outUnion = "rgba16sint";
1175
+ break;
1176
+ case wgpu::TextureFormat::RGBA16Float:
1177
+ *outUnion = "rgba16float";
1178
+ break;
1179
+ case wgpu::TextureFormat::RGBA32Uint:
1180
+ *outUnion = "rgba32uint";
1181
+ break;
1182
+ case wgpu::TextureFormat::RGBA32Sint:
1183
+ *outUnion = "rgba32sint";
1184
+ break;
1185
+ case wgpu::TextureFormat::RGBA32Float:
1186
+ *outUnion = "rgba32float";
1187
+ break;
1188
+ case wgpu::TextureFormat::Stencil8:
1189
+ *outUnion = "stencil8";
1190
+ break;
1191
+ case wgpu::TextureFormat::Depth16Unorm:
1192
+ *outUnion = "depth16unorm";
1193
+ break;
1194
+ case wgpu::TextureFormat::Depth24Plus:
1195
+ *outUnion = "depth24plus";
1196
+ break;
1197
+ case wgpu::TextureFormat::Depth24PlusStencil8:
1198
+ *outUnion = "depth24plus-stencil8";
1199
+ break;
1200
+ case wgpu::TextureFormat::Depth32Float:
1201
+ *outUnion = "depth32float";
1202
+ break;
1203
+ case wgpu::TextureFormat::BC1RGBAUnorm:
1204
+ *outUnion = "bc1-rgba-unorm";
1205
+ break;
1206
+ case wgpu::TextureFormat::BC1RGBAUnormSrgb:
1207
+ *outUnion = "bc1-rgba-unorm-srgb";
1208
+ break;
1209
+ case wgpu::TextureFormat::BC2RGBAUnorm:
1210
+ *outUnion = "bc2-rgba-unorm";
1211
+ break;
1212
+ case wgpu::TextureFormat::BC2RGBAUnormSrgb:
1213
+ *outUnion = "bc2-rgba-unorm-srgb";
1214
+ break;
1215
+ case wgpu::TextureFormat::BC3RGBAUnorm:
1216
+ *outUnion = "bc3-rgba-unorm";
1217
+ break;
1218
+ case wgpu::TextureFormat::BC3RGBAUnormSrgb:
1219
+ *outUnion = "bc3-rgba-unorm-srgb";
1220
+ break;
1221
+ case wgpu::TextureFormat::BC4RUnorm:
1222
+ *outUnion = "bc4-r-unorm";
1223
+ break;
1224
+ case wgpu::TextureFormat::BC4RSnorm:
1225
+ *outUnion = "bc4-r-snorm";
1226
+ break;
1227
+ case wgpu::TextureFormat::BC5RGUnorm:
1228
+ *outUnion = "bc5-rg-unorm";
1229
+ break;
1230
+ case wgpu::TextureFormat::BC5RGSnorm:
1231
+ *outUnion = "bc5-rg-snorm";
1232
+ break;
1233
+ case wgpu::TextureFormat::BC6HRGBUfloat:
1234
+ *outUnion = "bc6h-rgb-ufloat";
1235
+ break;
1236
+ case wgpu::TextureFormat::BC6HRGBFloat:
1237
+ *outUnion = "bc6h-rgb-float";
1238
+ break;
1239
+ case wgpu::TextureFormat::BC7RGBAUnorm:
1240
+ *outUnion = "bc7-rgba-unorm";
1241
+ break;
1242
+ case wgpu::TextureFormat::BC7RGBAUnormSrgb:
1243
+ *outUnion = "bc7-rgba-unorm-srgb";
1244
+ break;
1245
+ case wgpu::TextureFormat::ETC2RGB8Unorm:
1246
+ *outUnion = "etc2-rgb8unorm";
1247
+ break;
1248
+ case wgpu::TextureFormat::ETC2RGB8UnormSrgb:
1249
+ *outUnion = "etc2-rgb8unorm-srgb";
1250
+ break;
1251
+ case wgpu::TextureFormat::ETC2RGB8A1Unorm:
1252
+ *outUnion = "etc2-rgb8a1unorm";
1253
+ break;
1254
+ case wgpu::TextureFormat::ETC2RGB8A1UnormSrgb:
1255
+ *outUnion = "etc2-rgb8a1unorm-srgb";
1256
+ break;
1257
+ case wgpu::TextureFormat::ETC2RGBA8Unorm:
1258
+ *outUnion = "etc2-rgba8unorm";
1259
+ break;
1260
+ case wgpu::TextureFormat::ETC2RGBA8UnormSrgb:
1261
+ *outUnion = "etc2-rgba8unorm-srgb";
1262
+ break;
1263
+ case wgpu::TextureFormat::EACR11Unorm:
1264
+ *outUnion = "eac-r11unorm";
1265
+ break;
1266
+ case wgpu::TextureFormat::EACR11Snorm:
1267
+ *outUnion = "eac-r11snorm";
1268
+ break;
1269
+ case wgpu::TextureFormat::EACRG11Unorm:
1270
+ *outUnion = "eac-rg11unorm";
1271
+ break;
1272
+ case wgpu::TextureFormat::EACRG11Snorm:
1273
+ *outUnion = "eac-rg11snorm";
1274
+ break;
1275
+ case wgpu::TextureFormat::ASTC4x4Unorm:
1276
+ *outUnion = "astc-4x4-unorm";
1277
+ break;
1278
+ case wgpu::TextureFormat::ASTC4x4UnormSrgb:
1279
+ *outUnion = "astc-4x4-unorm-srgb";
1280
+ break;
1281
+ case wgpu::TextureFormat::ASTC5x4Unorm:
1282
+ *outUnion = "astc-5x4-unorm";
1283
+ break;
1284
+ case wgpu::TextureFormat::ASTC5x4UnormSrgb:
1285
+ *outUnion = "astc-5x4-unorm-srgb";
1286
+ break;
1287
+ case wgpu::TextureFormat::ASTC5x5Unorm:
1288
+ *outUnion = "astc-5x5-unorm";
1289
+ break;
1290
+ case wgpu::TextureFormat::ASTC5x5UnormSrgb:
1291
+ *outUnion = "astc-5x5-unorm-srgb";
1292
+ break;
1293
+ case wgpu::TextureFormat::ASTC6x5Unorm:
1294
+ *outUnion = "astc-6x5-unorm";
1295
+ break;
1296
+ case wgpu::TextureFormat::ASTC6x5UnormSrgb:
1297
+ *outUnion = "astc-6x5-unorm-srgb";
1298
+ break;
1299
+ case wgpu::TextureFormat::ASTC6x6Unorm:
1300
+ *outUnion = "astc-6x6-unorm";
1301
+ break;
1302
+ case wgpu::TextureFormat::ASTC6x6UnormSrgb:
1303
+ *outUnion = "astc-6x6-unorm-srgb";
1304
+ break;
1305
+ case wgpu::TextureFormat::ASTC8x5Unorm:
1306
+ *outUnion = "astc-8x5-unorm";
1307
+ break;
1308
+ case wgpu::TextureFormat::ASTC8x5UnormSrgb:
1309
+ *outUnion = "astc-8x5-unorm-srgb";
1310
+ break;
1311
+ case wgpu::TextureFormat::ASTC8x6Unorm:
1312
+ *outUnion = "astc-8x6-unorm";
1313
+ break;
1314
+ case wgpu::TextureFormat::ASTC8x6UnormSrgb:
1315
+ *outUnion = "astc-8x6-unorm-srgb";
1316
+ break;
1317
+ case wgpu::TextureFormat::ASTC8x8Unorm:
1318
+ *outUnion = "astc-8x8-unorm";
1319
+ break;
1320
+ case wgpu::TextureFormat::ASTC8x8UnormSrgb:
1321
+ *outUnion = "astc-8x8-unorm-srgb";
1322
+ break;
1323
+ case wgpu::TextureFormat::ASTC10x5Unorm:
1324
+ *outUnion = "astc-10x5-unorm";
1325
+ break;
1326
+ case wgpu::TextureFormat::ASTC10x5UnormSrgb:
1327
+ *outUnion = "astc-10x5-unorm-srgb";
1328
+ break;
1329
+ case wgpu::TextureFormat::ASTC10x6Unorm:
1330
+ *outUnion = "astc-10x6-unorm";
1331
+ break;
1332
+ case wgpu::TextureFormat::ASTC10x6UnormSrgb:
1333
+ *outUnion = "astc-10x6-unorm-srgb";
1334
+ break;
1335
+ case wgpu::TextureFormat::ASTC10x8Unorm:
1336
+ *outUnion = "astc-10x8-unorm";
1337
+ break;
1338
+ case wgpu::TextureFormat::ASTC10x8UnormSrgb:
1339
+ *outUnion = "astc-10x8-unorm-srgb";
1340
+ break;
1341
+ case wgpu::TextureFormat::ASTC10x10Unorm:
1342
+ *outUnion = "astc-10x10-unorm";
1343
+ break;
1344
+ case wgpu::TextureFormat::ASTC10x10UnormSrgb:
1345
+ *outUnion = "astc-10x10-unorm-srgb";
1346
+ break;
1347
+ case wgpu::TextureFormat::ASTC12x10Unorm:
1348
+ *outUnion = "astc-12x10-unorm";
1349
+ break;
1350
+ case wgpu::TextureFormat::ASTC12x10UnormSrgb:
1351
+ *outUnion = "astc-12x10-unorm-srgb";
1352
+ break;
1353
+ case wgpu::TextureFormat::ASTC12x12Unorm:
1354
+ *outUnion = "astc-12x12-unorm";
1355
+ break;
1356
+ case wgpu::TextureFormat::ASTC12x12UnormSrgb:
1357
+ *outUnion = "astc-12x12-unorm-srgb";
1358
+ break;
1359
+ default:
1360
+ throw invalidEnum(inEnum);
1361
+ }
1362
+ }
1363
+
1364
+ static void convertJSUnionToEnum(const std::string &inUnion,
1365
+ wgpu::TextureSampleType *outEnum) {
1366
+ if (inUnion == "float") {
1367
+ *outEnum = wgpu::TextureSampleType::Float;
1368
+ } else if (inUnion == "unfilterable-float") {
1369
+ *outEnum = wgpu::TextureSampleType::UnfilterableFloat;
1370
+ } else if (inUnion == "depth") {
1371
+ *outEnum = wgpu::TextureSampleType::Depth;
1372
+ } else if (inUnion == "sint") {
1373
+ *outEnum = wgpu::TextureSampleType::Sint;
1374
+ } else if (inUnion == "uint") {
1375
+ *outEnum = wgpu::TextureSampleType::Uint;
1376
+ } else {
1377
+ throw invalidUnion(inUnion);
1378
+ }
1379
+ }
1380
+
1381
+ static void convertEnumToJSUnion(wgpu::TextureSampleType inEnum,
1382
+ std::string *outUnion) {
1383
+ switch (inEnum) {
1384
+ case wgpu::TextureSampleType::Float:
1385
+ *outUnion = "float";
1386
+ break;
1387
+ case wgpu::TextureSampleType::UnfilterableFloat:
1388
+ *outUnion = "unfilterable-float";
1389
+ break;
1390
+ case wgpu::TextureSampleType::Depth:
1391
+ *outUnion = "depth";
1392
+ break;
1393
+ case wgpu::TextureSampleType::Sint:
1394
+ *outUnion = "sint";
1395
+ break;
1396
+ case wgpu::TextureSampleType::Uint:
1397
+ *outUnion = "uint";
1398
+ break;
1399
+ default:
1400
+ throw invalidEnum(inEnum);
1401
+ }
1402
+ }
1403
+
1404
+ static void convertJSUnionToEnum(const std::string &inUnion,
1405
+ wgpu::TextureViewDimension *outEnum) {
1406
+ if (inUnion == "1d") {
1407
+ *outEnum = wgpu::TextureViewDimension::e1D;
1408
+ } else if (inUnion == "2d") {
1409
+ *outEnum = wgpu::TextureViewDimension::e2D;
1410
+ } else if (inUnion == "3d") {
1411
+ *outEnum = wgpu::TextureViewDimension::e3D;
1412
+ } else if (inUnion == "2d-array") {
1413
+ *outEnum = wgpu::TextureViewDimension::e2DArray;
1414
+ } else if (inUnion == "cube") {
1415
+ *outEnum = wgpu::TextureViewDimension::Cube;
1416
+ } else if (inUnion == "cube-array") {
1417
+ *outEnum = wgpu::TextureViewDimension::CubeArray;
1418
+ } else {
1419
+ throw invalidUnion(inUnion);
1420
+ }
1421
+ }
1422
+
1423
+ static void convertEnumToJSUnion(wgpu::TextureViewDimension inEnum,
1424
+ std::string *outUnion) {
1425
+ switch (inEnum) {
1426
+ case wgpu::TextureViewDimension::e1D:
1427
+ *outUnion = "1d";
1428
+ break;
1429
+ case wgpu::TextureViewDimension::e2D:
1430
+ *outUnion = "2d";
1431
+ break;
1432
+ case wgpu::TextureViewDimension::e3D:
1433
+ *outUnion = "3d";
1434
+ break;
1435
+ case wgpu::TextureViewDimension::e2DArray:
1436
+ *outUnion = "2d-array";
1437
+ break;
1438
+ case wgpu::TextureViewDimension::Cube:
1439
+ *outUnion = "cube";
1440
+ break;
1441
+ case wgpu::TextureViewDimension::CubeArray:
1442
+ *outUnion = "cube-array";
1443
+ break;
1444
+ default:
1445
+ throw invalidEnum(inEnum);
1446
+ }
1447
+ }
1448
+
1449
+ static void convertJSUnionToEnum(const std::string &inUnion,
1450
+ wgpu::VertexFormat *outEnum) {
1451
+ if (inUnion == "uint32") {
1452
+ *outEnum = wgpu::VertexFormat::Uint32;
1453
+ } else if (inUnion == "uint8x2") {
1454
+ *outEnum = wgpu::VertexFormat::Uint8x2;
1455
+ } else if (inUnion == "uint8x4") {
1456
+ *outEnum = wgpu::VertexFormat::Uint8x4;
1457
+ } else if (inUnion == "sint8x2") {
1458
+ *outEnum = wgpu::VertexFormat::Sint8x2;
1459
+ } else if (inUnion == "sint8x4") {
1460
+ *outEnum = wgpu::VertexFormat::Sint8x4;
1461
+ } else if (inUnion == "unorm8x2") {
1462
+ *outEnum = wgpu::VertexFormat::Unorm8x2;
1463
+ } else if (inUnion == "unorm8x4") {
1464
+ *outEnum = wgpu::VertexFormat::Unorm8x4;
1465
+ } else if (inUnion == "snorm8x2") {
1466
+ *outEnum = wgpu::VertexFormat::Snorm8x2;
1467
+ } else if (inUnion == "snorm8x4") {
1468
+ *outEnum = wgpu::VertexFormat::Snorm8x4;
1469
+ } else if (inUnion == "uint16x2") {
1470
+ *outEnum = wgpu::VertexFormat::Uint16x2;
1471
+ } else if (inUnion == "uint16x4") {
1472
+ *outEnum = wgpu::VertexFormat::Uint16x4;
1473
+ } else if (inUnion == "sint16x2") {
1474
+ *outEnum = wgpu::VertexFormat::Sint16x2;
1475
+ } else if (inUnion == "sint16x4") {
1476
+ *outEnum = wgpu::VertexFormat::Sint16x4;
1477
+ } else if (inUnion == "unorm16x2") {
1478
+ *outEnum = wgpu::VertexFormat::Unorm16x2;
1479
+ } else if (inUnion == "unorm16x4") {
1480
+ *outEnum = wgpu::VertexFormat::Unorm16x4;
1481
+ } else if (inUnion == "snorm16x2") {
1482
+ *outEnum = wgpu::VertexFormat::Snorm16x2;
1483
+ } else if (inUnion == "snorm16x4") {
1484
+ *outEnum = wgpu::VertexFormat::Snorm16x4;
1485
+ } else if (inUnion == "float16x2") {
1486
+ *outEnum = wgpu::VertexFormat::Float16x2;
1487
+ } else if (inUnion == "float16x4") {
1488
+ *outEnum = wgpu::VertexFormat::Float16x4;
1489
+ } else if (inUnion == "float32") {
1490
+ *outEnum = wgpu::VertexFormat::Float32;
1491
+ } else if (inUnion == "float32x2") {
1492
+ *outEnum = wgpu::VertexFormat::Float32x2;
1493
+ } else if (inUnion == "float32x3") {
1494
+ *outEnum = wgpu::VertexFormat::Float32x3;
1495
+ } else if (inUnion == "float32x4") {
1496
+ *outEnum = wgpu::VertexFormat::Float32x4;
1497
+ } else if (inUnion == "uint32x2") {
1498
+ *outEnum = wgpu::VertexFormat::Uint32x2;
1499
+ } else if (inUnion == "uint32x3") {
1500
+ *outEnum = wgpu::VertexFormat::Uint32x3;
1501
+ } else if (inUnion == "uint32x4") {
1502
+ *outEnum = wgpu::VertexFormat::Uint32x4;
1503
+ } else if (inUnion == "sint32") {
1504
+ *outEnum = wgpu::VertexFormat::Sint32;
1505
+ } else if (inUnion == "sint32x2") {
1506
+ *outEnum = wgpu::VertexFormat::Sint32x2;
1507
+ } else if (inUnion == "sint32x3") {
1508
+ *outEnum = wgpu::VertexFormat::Sint32x3;
1509
+ } else if (inUnion == "sint32x4") {
1510
+ *outEnum = wgpu::VertexFormat::Sint32x4;
1511
+ } else if (inUnion == "unorm10-10-10-2") {
1512
+ *outEnum = wgpu::VertexFormat::Unorm10_10_10_2;
1513
+ } else {
1514
+ throw invalidUnion(inUnion);
1515
+ }
1516
+ }
1517
+
1518
+ static void convertEnumToJSUnion(wgpu::VertexFormat inEnum,
1519
+ std::string *outUnion) {
1520
+ switch (inEnum) {
1521
+ case wgpu::VertexFormat::Uint32:
1522
+ *outUnion = "uint32";
1523
+ break;
1524
+ case wgpu::VertexFormat::Uint8x2:
1525
+ *outUnion = "uint8x2";
1526
+ break;
1527
+ case wgpu::VertexFormat::Uint8x4:
1528
+ *outUnion = "uint8x4";
1529
+ break;
1530
+ case wgpu::VertexFormat::Sint8x2:
1531
+ *outUnion = "sint8x2";
1532
+ break;
1533
+ case wgpu::VertexFormat::Sint8x4:
1534
+ *outUnion = "sint8x4";
1535
+ break;
1536
+ case wgpu::VertexFormat::Unorm8x2:
1537
+ *outUnion = "unorm8x2";
1538
+ break;
1539
+ case wgpu::VertexFormat::Unorm8x4:
1540
+ *outUnion = "unorm8x4";
1541
+ break;
1542
+ case wgpu::VertexFormat::Snorm8x2:
1543
+ *outUnion = "snorm8x2";
1544
+ break;
1545
+ case wgpu::VertexFormat::Snorm8x4:
1546
+ *outUnion = "snorm8x4";
1547
+ break;
1548
+ case wgpu::VertexFormat::Uint16x2:
1549
+ *outUnion = "uint16x2";
1550
+ break;
1551
+ case wgpu::VertexFormat::Uint16x4:
1552
+ *outUnion = "uint16x4";
1553
+ break;
1554
+ case wgpu::VertexFormat::Sint16x2:
1555
+ *outUnion = "sint16x2";
1556
+ break;
1557
+ case wgpu::VertexFormat::Sint16x4:
1558
+ *outUnion = "sint16x4";
1559
+ break;
1560
+ case wgpu::VertexFormat::Unorm16x2:
1561
+ *outUnion = "unorm16x2";
1562
+ break;
1563
+ case wgpu::VertexFormat::Unorm16x4:
1564
+ *outUnion = "unorm16x4";
1565
+ break;
1566
+ case wgpu::VertexFormat::Snorm16x2:
1567
+ *outUnion = "snorm16x2";
1568
+ break;
1569
+ case wgpu::VertexFormat::Snorm16x4:
1570
+ *outUnion = "snorm16x4";
1571
+ break;
1572
+ case wgpu::VertexFormat::Float16x2:
1573
+ *outUnion = "float16x2";
1574
+ break;
1575
+ case wgpu::VertexFormat::Float16x4:
1576
+ *outUnion = "float16x4";
1577
+ break;
1578
+ case wgpu::VertexFormat::Float32:
1579
+ *outUnion = "float32";
1580
+ break;
1581
+ case wgpu::VertexFormat::Float32x2:
1582
+ *outUnion = "float32x2";
1583
+ break;
1584
+ case wgpu::VertexFormat::Float32x3:
1585
+ *outUnion = "float32x3";
1586
+ break;
1587
+ case wgpu::VertexFormat::Float32x4:
1588
+ *outUnion = "float32x4";
1589
+ break;
1590
+ case wgpu::VertexFormat::Uint32x2:
1591
+ *outUnion = "uint32x2";
1592
+ break;
1593
+ case wgpu::VertexFormat::Uint32x3:
1594
+ *outUnion = "uint32x3";
1595
+ break;
1596
+ case wgpu::VertexFormat::Uint32x4:
1597
+ *outUnion = "uint32x4";
1598
+ break;
1599
+ case wgpu::VertexFormat::Sint32:
1600
+ *outUnion = "sint32";
1601
+ break;
1602
+ case wgpu::VertexFormat::Sint32x2:
1603
+ *outUnion = "sint32x2";
1604
+ break;
1605
+ case wgpu::VertexFormat::Sint32x3:
1606
+ *outUnion = "sint32x3";
1607
+ break;
1608
+ case wgpu::VertexFormat::Sint32x4:
1609
+ *outUnion = "sint32x4";
1610
+ break;
1611
+ case wgpu::VertexFormat::Unorm10_10_10_2:
1612
+ *outUnion = "unorm10-10-10-2";
1613
+ break;
1614
+ default:
1615
+ throw invalidEnum(inEnum);
1616
+ }
1617
+ }
1618
+
1619
+ static void convertJSUnionToEnum(const std::string &inUnion,
1620
+ wgpu::VertexStepMode *outEnum) {
1621
+ if (inUnion == "vertex") {
1622
+ *outEnum = wgpu::VertexStepMode::Vertex;
1623
+ } else if (inUnion == "instance") {
1624
+ *outEnum = wgpu::VertexStepMode::Instance;
1625
+ } else {
1626
+ throw invalidUnion(inUnion);
1627
+ }
1628
+ }
1629
+
1630
+ static void convertEnumToJSUnion(wgpu::VertexStepMode inEnum,
1631
+ std::string *outUnion) {
1632
+ switch (inEnum) {
1633
+ case wgpu::VertexStepMode::Vertex:
1634
+ *outUnion = "vertex";
1635
+ break;
1636
+ case wgpu::VertexStepMode::Instance:
1637
+ *outUnion = "instance";
1638
+ break;
1639
+ default:
1640
+ throw invalidEnum(inEnum);
1641
+ }
1642
+ }
1643
+
1644
+ } // namespace EnumMapper
1645
+ } // namespace margelo