react-native-webgpu 0.8.1 → 0.8.2

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.
@@ -8,195 +8,124 @@
8
8
 
9
9
  namespace rnwgpu {
10
10
 
11
+ // Single source of truth for the wgpu::FeatureName <-> GPUFeatureName string
12
+ // mapping. Every conversion (both directions, here and in EnumMapper, see
13
+ // api/descriptors/Unions.h) is derived from this list so the tables cannot
14
+ // drift apart.
15
+ //
16
+ // The list must cover every value of wgpu::FeatureName. Dawn adds features on
17
+ // every milestone upgrade; FeatureNames.spec.ts diffs this list against the
18
+ // enum in the installed webgpu_cpp.h and fails when one is missing.
19
+ #define RNWGPU_FOR_EACH_FEATURE_NAME(V) \
20
+ V(CoreFeaturesAndLimits, "core-features-and-limits") \
21
+ V(DepthClipControl, "depth-clip-control") \
22
+ V(Depth32FloatStencil8, "depth32float-stencil8") \
23
+ V(TextureCompressionBC, "texture-compression-bc") \
24
+ V(TextureCompressionBCSliced3D, "texture-compression-bc-sliced-3d") \
25
+ V(TextureCompressionETC2, "texture-compression-etc2") \
26
+ V(TextureCompressionASTC, "texture-compression-astc") \
27
+ V(TextureCompressionASTCSliced3D, "texture-compression-astc-sliced-3d") \
28
+ V(TimestampQuery, "timestamp-query") \
29
+ V(IndirectFirstInstance, "indirect-first-instance") \
30
+ V(ShaderF16, "shader-f16") \
31
+ V(RG11B10UfloatRenderable, "rg11b10ufloat-renderable") \
32
+ V(BGRA8UnormStorage, "bgra8unorm-storage") \
33
+ V(Float32Filterable, "float32-filterable") \
34
+ V(Float32Blendable, "float32-blendable") \
35
+ V(ClipDistances, "clip-distances") \
36
+ V(DualSourceBlending, "dual-source-blending") \
37
+ V(Subgroups, "subgroups") \
38
+ V(TextureFormatsTier1, "texture-formats-tier1") \
39
+ V(TextureFormatsTier2, "texture-formats-tier2") \
40
+ V(PrimitiveIndex, "primitive-index") \
41
+ V(TextureComponentSwizzle, "texture-component-swizzle") \
42
+ V(SubgroupSizeControl, "subgroup-size-control") \
43
+ V(DawnInternalUsages, "dawn-internal-usages") \
44
+ V(DawnMultiPlanarFormats, "dawn-multi-planar-formats") \
45
+ V(DawnNative, "dawn-native") \
46
+ V(ChromiumExperimentalTimestampQueryInsidePasses, \
47
+ "chromium-experimental-timestamp-query-inside-passes") \
48
+ V(ImplicitDeviceSynchronization, "implicit-device-synchronization") \
49
+ V(TransientAttachments, "transient-attachments") \
50
+ V(MSAARenderToSingleSampled, "msaa-render-to-single-sampled") \
51
+ V(D3D11MultithreadProtected, "d3d11-multithread-protected") \
52
+ V(ANGLETextureSharing, "angle-texture-sharing") \
53
+ V(PixelLocalStorageCoherent, "pixel-local-storage-coherent") \
54
+ V(PixelLocalStorageNonCoherent, "pixel-local-storage-non-coherent") \
55
+ V(Unorm16TextureFormats, "unorm16-texture-formats") \
56
+ V(MultiPlanarFormatExtendedUsages, "multi-planar-format-extended-usages") \
57
+ V(MultiPlanarFormatP010, "multi-planar-format-p010") \
58
+ V(HostMappedPointer, "host-mapped-pointer") \
59
+ V(MultiPlanarRenderTargets, "multi-planar-render-targets") \
60
+ V(MultiPlanarFormatNv12a, "multi-planar-format-nv12a") \
61
+ V(FramebufferFetch, "framebuffer-fetch") \
62
+ V(BufferMapExtendedUsages, "buffer-map-extended-usages") \
63
+ V(AdapterPropertiesMemoryHeaps, "adapter-properties-memory-heaps") \
64
+ V(AdapterPropertiesD3D, "adapter-properties-d3d") \
65
+ V(AdapterPropertiesVk, "adapter-properties-vk") \
66
+ V(DawnFormatCapabilities, "format-capabilities") \
67
+ V(DawnDrmFormatCapabilities, "drm-format-capabilities") \
68
+ V(MultiPlanarFormatNv16, "multi-planar-format-nv16") \
69
+ V(MultiPlanarFormatNv24, "multi-planar-format-nv24") \
70
+ V(MultiPlanarFormatP210, "multi-planar-format-p210") \
71
+ V(MultiPlanarFormatP410, "multi-planar-format-p410") \
72
+ V(SharedTextureMemoryVkDedicatedAllocation, \
73
+ "shared-texture-memory-vk-dedicated-allocation") \
74
+ V(SharedTextureMemoryAHardwareBuffer, \
75
+ "shared-texture-memory-ahardware-buffer") \
76
+ V(SharedTextureMemoryDmaBuf, "shared-texture-memory-dma-buf") \
77
+ V(SharedTextureMemoryOpaqueFD, "shared-texture-memory-opaque-fd") \
78
+ V(SharedTextureMemoryZirconHandle, "shared-texture-memory-zircon-handle") \
79
+ V(SharedTextureMemoryDXGISharedHandle, \
80
+ "shared-texture-memory-dxgi-shared-handle") \
81
+ V(SharedTextureMemoryD3D11Texture2D, \
82
+ "shared-texture-memory-d3d11-texture2d") \
83
+ V(SharedTextureMemoryIOSurface, "shared-texture-memory-iosurface") \
84
+ V(SharedTextureMemoryEGLImage, "shared-texture-memory-egl-image") \
85
+ V(SharedFenceVkSemaphoreOpaqueFD, "shared-fence-vk-semaphore-opaque-fd") \
86
+ V(SharedFenceSyncFD, "shared-fence-sync-fd") \
87
+ V(SharedFenceVkSemaphoreZirconHandle, \
88
+ "shared-fence-vk-semaphore-zircon-handle") \
89
+ V(SharedFenceDXGISharedHandle, "shared-fence-dxgi-shared-handle") \
90
+ V(SharedFenceMTLSharedEvent, "shared-fence-mtl-shared-event") \
91
+ V(SharedBufferMemoryD3D12Resource, "shared-buffer-memory-d3d12-resource") \
92
+ V(StaticSamplers, "static-samplers") \
93
+ V(YCbCrVulkanSamplers, "ycbcr-vulkan-samplers") \
94
+ V(ShaderModuleCompilationOptions, "shader-module-compilation-options") \
95
+ V(DawnLoadResolveTexture, "dawn-load-resolve-texture") \
96
+ V(DawnPartialLoadResolveTexture, "dawn-partial-load-resolve-texture") \
97
+ V(MultiDrawIndirect, "multi-draw-indirect") \
98
+ V(DawnTexelCopyBufferRowAlignment, "dawn-texel-copy-buffer-row-alignment") \
99
+ V(FlexibleTextureViews, "flexible-texture-views") \
100
+ V(ChromiumExperimentalSubgroupMatrix, \
101
+ "chromium-experimental-subgroups-matrix") \
102
+ V(SharedFenceEGLSync, "shared-fence-egl-sync") \
103
+ V(DawnDeviceAllocatorControl, "dawn-device-allocator-control") \
104
+ V(AdapterPropertiesWGPU, "adapter-properties-wgpu") \
105
+ V(SharedBufferMemoryFromWindowsHandle, \
106
+ "shared-buffer-memory-from-windows-handle") \
107
+ V(SharedTextureMemoryD3D12Resource, "shared-texture-memory-d3d12-resource") \
108
+ V(ChromiumExperimentalSamplingResourceTable, \
109
+ "chromium-experimental-sampling-resource-table") \
110
+ V(AtomicVec2uMinMax, "atomic-vec2u-min-max") \
111
+ V(Unorm16FormatsForExternalTexture, "unorm16-formats-for-external-texture") \
112
+ V(OpaqueYCbCrAndroidForExternalTexture, \
113
+ "opaque-ycbcr-android-for-external-texture") \
114
+ V(Unorm16Filterable, "unorm16-filterable") \
115
+ V(RenderPassRenderArea, "render-pass-render-area") \
116
+ V(AdapterPropertiesDrm, "adapter-properties-drm") \
117
+ V(TextureCompressionUnaligned, "texture-compression-unaligned") \
118
+ V(DawnAllowUndefinedLoadStoreOp, "dawn-allow-undefined-load-store-op")
119
+
11
120
  static void convertEnumToJSUnion(wgpu::FeatureName inEnum,
12
121
  std::string *outUnion) {
13
122
  switch (inEnum) {
14
- case wgpu::FeatureName::DepthClipControl:
15
- *outUnion = "depth-clip-control";
16
- break;
17
- case wgpu::FeatureName::Depth32FloatStencil8:
18
- *outUnion = "depth32float-stencil8";
19
- break;
20
- case wgpu::FeatureName::TimestampQuery:
21
- *outUnion = "timestamp-query";
22
- break;
23
- case wgpu::FeatureName::TextureCompressionBC:
24
- *outUnion = "texture-compression-bc";
25
- break;
26
- case wgpu::FeatureName::TextureCompressionETC2:
27
- *outUnion = "texture-compression-etc2";
28
- break;
29
- case wgpu::FeatureName::TextureCompressionASTC:
30
- *outUnion = "texture-compression-astc";
31
- break;
32
- case wgpu::FeatureName::IndirectFirstInstance:
33
- *outUnion = "indirect-first-instance";
34
- break;
35
- case wgpu::FeatureName::ShaderF16:
36
- *outUnion = "shader-f16";
37
- break;
38
- case wgpu::FeatureName::RG11B10UfloatRenderable:
39
- *outUnion = "rg11b10ufloat-renderable";
40
- break;
41
- case wgpu::FeatureName::BGRA8UnormStorage:
42
- *outUnion = "bgra8unorm-storage";
43
- break;
44
- case wgpu::FeatureName::Float32Filterable:
45
- *outUnion = "float32-filterable";
46
- break;
47
- case wgpu::FeatureName::Subgroups:
48
- *outUnion = "subgroups";
49
- break;
50
- case wgpu::FeatureName::DawnInternalUsages:
51
- *outUnion = "dawn-internal-usages";
52
- break;
53
- case wgpu::FeatureName::DawnMultiPlanarFormats:
54
- *outUnion = "dawn-multi-planar-formats";
55
- break;
56
- case wgpu::FeatureName::DawnNative:
57
- *outUnion = "dawn-native";
58
- break;
59
- case wgpu::FeatureName::ChromiumExperimentalTimestampQueryInsidePasses:
60
- *outUnion = "chromium-experimental-timestamp-query-inside-passes";
61
- break;
62
- case wgpu::FeatureName::ImplicitDeviceSynchronization:
63
- *outUnion = "implicit-device-synchronization";
64
- break;
65
- case wgpu::FeatureName::TransientAttachments:
66
- *outUnion = "transient-attachments";
67
- break;
68
- case wgpu::FeatureName::MSAARenderToSingleSampled:
69
- *outUnion = "msaa-render-to-single-sampled";
70
- break;
71
- case wgpu::FeatureName::DualSourceBlending:
72
- *outUnion = "dual-source-blending";
73
- break;
74
- case wgpu::FeatureName::D3D11MultithreadProtected:
75
- *outUnion = "d3d11-multithread-protected";
76
- break;
77
- case wgpu::FeatureName::ANGLETextureSharing:
78
- *outUnion = "angle-texture-sharing";
79
- break;
80
- case wgpu::FeatureName::ChromiumExperimentalSubgroupMatrix:
81
- *outUnion = "chromium-experimental-subgroups-matrix";
82
- break;
83
- case wgpu::FeatureName::PixelLocalStorageCoherent:
84
- *outUnion = "pixel-local-storage-coherent";
85
- break;
86
- case wgpu::FeatureName::PixelLocalStorageNonCoherent:
87
- *outUnion = "pixel-local-storage-non-coherent";
88
- break;
89
- case wgpu::FeatureName::Unorm16TextureFormats:
90
- *outUnion = "unorm16-texture-formats";
91
- break;
92
- case wgpu::FeatureName::MultiPlanarFormatExtendedUsages:
93
- *outUnion = "multi-planar-format-extended-usages";
94
- break;
95
- case wgpu::FeatureName::MultiPlanarFormatP010:
96
- *outUnion = "multi-planar-format-p010";
97
- break;
98
- case wgpu::FeatureName::HostMappedPointer:
99
- *outUnion = "host-mapped-pointer";
100
- break;
101
- case wgpu::FeatureName::MultiPlanarRenderTargets:
102
- *outUnion = "multi-planar-render-targets";
103
- break;
104
- case wgpu::FeatureName::MultiPlanarFormatNv12a:
105
- *outUnion = "multi-planar-format-nv12a";
106
- break;
107
- case wgpu::FeatureName::FramebufferFetch:
108
- *outUnion = "framebuffer-fetch";
109
- break;
110
- case wgpu::FeatureName::BufferMapExtendedUsages:
111
- *outUnion = "buffer-map-extended-usages";
112
- break;
113
- case wgpu::FeatureName::AdapterPropertiesMemoryHeaps:
114
- *outUnion = "adapter-properties-memory-heaps";
115
- break;
116
- case wgpu::FeatureName::AdapterPropertiesD3D:
117
- *outUnion = "adapter-properties-d3d";
118
- break;
119
- case wgpu::FeatureName::AdapterPropertiesVk:
120
- *outUnion = "adapter-properties-vk";
121
- break;
122
- case wgpu::FeatureName::DawnFormatCapabilities:
123
- *outUnion = "format-capabilities";
124
- break;
125
- case wgpu::FeatureName::DawnDrmFormatCapabilities:
126
- *outUnion = "drm-format-capabilities";
127
- break;
128
- case wgpu::FeatureName::MultiPlanarFormatNv16:
129
- *outUnion = "multi-planar-format-nv16";
130
- break;
131
- case wgpu::FeatureName::MultiPlanarFormatNv24:
132
- *outUnion = "multi-planar-format-nv24";
133
- break;
134
- case wgpu::FeatureName::MultiPlanarFormatP210:
135
- *outUnion = "multi-planar-format-p210";
136
- break;
137
- case wgpu::FeatureName::MultiPlanarFormatP410:
138
- *outUnion = "multi-planar-format-p410";
139
- break;
140
- case wgpu::FeatureName::SharedTextureMemoryVkDedicatedAllocation:
141
- *outUnion = "shared-texture-memory-vk-dedicated-allocation";
142
- break;
143
- case wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer:
144
- *outUnion = "shared-texture-memory-ahardware-buffer";
145
- break;
146
- case wgpu::FeatureName::SharedTextureMemoryDmaBuf:
147
- *outUnion = "shared-texture-memory-dma-buf";
148
- break;
149
- case wgpu::FeatureName::SharedTextureMemoryOpaqueFD:
150
- *outUnion = "shared-texture-memory-opaque-fd";
151
- break;
152
- case wgpu::FeatureName::SharedTextureMemoryZirconHandle:
153
- *outUnion = "shared-texture-memory-zircon-handle";
154
- break;
155
- case wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle:
156
- *outUnion = "shared-texture-memory-dxgi-shared-handle";
157
- break;
158
- case wgpu::FeatureName::SharedTextureMemoryD3D11Texture2D:
159
- *outUnion = "shared-texture-memory-d3d11-texture2d";
160
- break;
161
- case wgpu::FeatureName::SharedTextureMemoryIOSurface:
162
- *outUnion = "shared-texture-memory-iosurface";
163
- break;
164
- case wgpu::FeatureName::SharedTextureMemoryEGLImage:
165
- *outUnion = "shared-texture-memory-egl-image";
166
- break;
167
- case wgpu::FeatureName::SharedFenceVkSemaphoreOpaqueFD:
168
- *outUnion = "shared-fence-vk-semaphore-opaque-fd";
169
- break;
170
- case wgpu::FeatureName::SharedFenceSyncFD:
171
- *outUnion = "shared-fence-sync-fd";
172
- break;
173
- case wgpu::FeatureName::SharedFenceVkSemaphoreZirconHandle:
174
- *outUnion = "shared-fence-vk-semaphore-zircon-handle";
175
- break;
176
- case wgpu::FeatureName::SharedFenceDXGISharedHandle:
177
- *outUnion = "shared-fence-dxgi-shared-handle";
178
- break;
179
- case wgpu::FeatureName::SharedFenceMTLSharedEvent:
180
- *outUnion = "shared-fence-mtl-shared-event";
181
- break;
182
- case wgpu::FeatureName::SharedBufferMemoryD3D12Resource:
183
- *outUnion = "shared-buffer-memory-d3d12-resource";
184
- break;
185
- case wgpu::FeatureName::StaticSamplers:
186
- *outUnion = "static-samplers";
187
- break;
188
- case wgpu::FeatureName::YCbCrVulkanSamplers:
189
- *outUnion = "ycbcr-vulkan-samplers";
190
- break;
191
- case wgpu::FeatureName::OpaqueYCbCrAndroidForExternalTexture:
192
- *outUnion = "opaque-ycbcr-android-for-external-texture";
193
- break;
194
- case wgpu::FeatureName::ShaderModuleCompilationOptions:
195
- *outUnion = "shader-module-compilation-options";
196
- break;
197
- case wgpu::FeatureName::DawnLoadResolveTexture:
198
- *outUnion = "dawn-load-resolve-texture";
123
+ #define RNWGPU_FEATURE_NAME_CASE(Enum, Name) \
124
+ case wgpu::FeatureName::Enum: \
125
+ *outUnion = Name; \
199
126
  break;
127
+ RNWGPU_FOR_EACH_FEATURE_NAME(RNWGPU_FEATURE_NAME_CASE)
128
+ #undef RNWGPU_FEATURE_NAME_CASE
200
129
  default:
201
130
  fprintf(stderr, "Unknown feature name %d\n", static_cast<int>(inEnum));
202
131
  *outUnion = "";
@@ -4,6 +4,7 @@
4
4
 
5
5
  #include "EnumMapper.h"
6
6
  #include "External.h"
7
+ #include "GPUFeatures.h"
7
8
  #include "webgpu/webgpu_cpp.h"
8
9
 
9
10
  namespace rnwgpu {
@@ -410,328 +411,25 @@ inline void convertEnumToJSUnion(wgpu::ErrorFilter inEnum,
410
411
 
411
412
  inline void convertJSUnionToEnum(const std::string &inUnion,
412
413
  wgpu::FeatureName *outEnum) {
413
- if (inUnion == "depth-clip-control") {
414
- *outEnum = wgpu::FeatureName::DepthClipControl;
415
- } else if (inUnion == "depth32float-stencil8") {
416
- *outEnum = wgpu::FeatureName::Depth32FloatStencil8;
417
- } else if (inUnion == "texture-compression-bc") {
418
- *outEnum = wgpu::FeatureName::TextureCompressionBC;
419
- } else if (inUnion == "texture-compression-etc2") {
420
- *outEnum = wgpu::FeatureName::TextureCompressionETC2;
421
- } else if (inUnion == "texture-compression-astc") {
422
- *outEnum = wgpu::FeatureName::TextureCompressionASTC;
423
- } else if (inUnion == "timestamp-query") {
424
- *outEnum = wgpu::FeatureName::TimestampQuery;
425
- } else if (inUnion == "indirect-first-instance") {
426
- *outEnum = wgpu::FeatureName::IndirectFirstInstance;
427
- } else if (inUnion == "shader-f16") {
428
- *outEnum = wgpu::FeatureName::ShaderF16;
429
- } else if (inUnion == "rg11b10ufloat-renderable") {
430
- *outEnum = wgpu::FeatureName::RG11B10UfloatRenderable;
431
- } else if (inUnion == "bgra8unorm-storage") {
432
- *outEnum = wgpu::FeatureName::BGRA8UnormStorage;
433
- } else if (inUnion == "float32-filterable") {
434
- *outEnum = wgpu::FeatureName::Float32Filterable;
435
- } else if (inUnion == "subgroups") {
436
- *outEnum = wgpu::FeatureName::Subgroups;
437
- } else if (inUnion == "dawn-internal-usages") {
438
- *outEnum = wgpu::FeatureName::DawnInternalUsages;
439
- } else if (inUnion == "dawn-multi-planar-formats") {
440
- *outEnum = wgpu::FeatureName::DawnMultiPlanarFormats;
441
- } else if (inUnion == "dawn-native") {
442
- *outEnum = wgpu::FeatureName::DawnNative;
443
- } else if (inUnion == "chromium-experimental-timestamp-query-inside-passes") {
444
- *outEnum =
445
- wgpu::FeatureName::ChromiumExperimentalTimestampQueryInsidePasses;
446
- } else if (inUnion == "implicit-device-synchronization") {
447
- *outEnum = wgpu::FeatureName::ImplicitDeviceSynchronization;
448
- } else if (inUnion == "transient-attachments") {
449
- *outEnum = wgpu::FeatureName::TransientAttachments;
450
- } else if (inUnion == "msaa-render-to-single-sampled") {
451
- *outEnum = wgpu::FeatureName::MSAARenderToSingleSampled;
452
- } else if (inUnion == "dual-source-blending") {
453
- *outEnum = wgpu::FeatureName::DualSourceBlending;
454
- } else if (inUnion == "d3d11-multithread-protected") {
455
- *outEnum = wgpu::FeatureName::D3D11MultithreadProtected;
456
- } else if (inUnion == "angle-texture-sharing") {
457
- *outEnum = wgpu::FeatureName::ANGLETextureSharing;
458
- } else if (inUnion == "chromium-experimental-subgroups-matrix") {
459
- *outEnum = wgpu::FeatureName::ChromiumExperimentalSubgroupMatrix;
460
- } else if (inUnion == "pixel-local-storage-coherent") {
461
- *outEnum = wgpu::FeatureName::PixelLocalStorageCoherent;
462
- } else if (inUnion == "pixel-local-storage-non-coherent") {
463
- *outEnum = wgpu::FeatureName::PixelLocalStorageNonCoherent;
464
- } else if (inUnion == "unorm16-texture-formats") {
465
- *outEnum = wgpu::FeatureName::Unorm16TextureFormats;
466
- } else if (inUnion == "multi-planar-format-extended-usages") {
467
- *outEnum = wgpu::FeatureName::MultiPlanarFormatExtendedUsages;
468
- } else if (inUnion == "multi-planar-format-p010") {
469
- *outEnum = wgpu::FeatureName::MultiPlanarFormatP010;
470
- } else if (inUnion == "host-mapped-pointer") {
471
- *outEnum = wgpu::FeatureName::HostMappedPointer;
472
- } else if (inUnion == "multi-planar-render-targets") {
473
- *outEnum = wgpu::FeatureName::MultiPlanarRenderTargets;
474
- } else if (inUnion == "multi-planar-format-nv12a") {
475
- *outEnum = wgpu::FeatureName::MultiPlanarFormatNv12a;
476
- } else if (inUnion == "framebuffer-fetch") {
477
- *outEnum = wgpu::FeatureName::FramebufferFetch;
478
- } else if (inUnion == "buffer-map-extended-usages") {
479
- *outEnum = wgpu::FeatureName::BufferMapExtendedUsages;
480
- } else if (inUnion == "adapter-properties-memory-heaps") {
481
- *outEnum = wgpu::FeatureName::AdapterPropertiesMemoryHeaps;
482
- } else if (inUnion == "adapter-properties-d3d") {
483
- *outEnum = wgpu::FeatureName::AdapterPropertiesD3D;
484
- } else if (inUnion == "adapter-properties-vk") {
485
- *outEnum = wgpu::FeatureName::AdapterPropertiesVk;
486
- } else if (inUnion == "format-capabilities") {
487
- *outEnum = wgpu::FeatureName::DawnFormatCapabilities;
488
- } else if (inUnion == "multi-planar-format-nv16") {
489
- *outEnum = wgpu::FeatureName::MultiPlanarFormatNv16;
490
- } else if (inUnion == "multi-planar-format-nv24") {
491
- *outEnum = wgpu::FeatureName::MultiPlanarFormatNv24;
492
- } else if (inUnion == "multi-planar-format-p210") {
493
- *outEnum = wgpu::FeatureName::MultiPlanarFormatP210;
494
- } else if (inUnion == "multi-planar-format-p410") {
495
- *outEnum = wgpu::FeatureName::MultiPlanarFormatP410;
496
- } else if (inUnion == "shared-texture-memory-vk-dedicated-allocation") {
497
- *outEnum = wgpu::FeatureName::SharedTextureMemoryVkDedicatedAllocation;
498
- } else if (inUnion == "shared-texture-memory-ahardware-buffer") {
499
- *outEnum = wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer;
500
- } else if (inUnion == "shared-texture-memory-dma-buf") {
501
- *outEnum = wgpu::FeatureName::SharedTextureMemoryDmaBuf;
502
- } else if (inUnion == "shared-texture-memory-opaque-fd") {
503
- *outEnum = wgpu::FeatureName::SharedTextureMemoryOpaqueFD;
504
- } else if (inUnion == "shared-texture-memory-zircon-handle") {
505
- *outEnum = wgpu::FeatureName::SharedTextureMemoryZirconHandle;
506
- } else if (inUnion == "shared-texture-memory-dxgi-shared-handle") {
507
- *outEnum = wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle;
508
- } else if (inUnion == "shared-texture-memory-d3d11-texture2d") {
509
- *outEnum = wgpu::FeatureName::SharedTextureMemoryD3D11Texture2D;
510
- } else if (inUnion == "shared-texture-memory-iosurface") {
511
- *outEnum = wgpu::FeatureName::SharedTextureMemoryIOSurface;
512
- } else if (inUnion == "shared-texture-memory-egl-image") {
513
- *outEnum = wgpu::FeatureName::SharedTextureMemoryEGLImage;
514
- } else if (inUnion == "shared-fence-vk-semaphore-opaque-fd") {
515
- *outEnum = wgpu::FeatureName::SharedFenceVkSemaphoreOpaqueFD;
516
- } else if (inUnion == "shared-fence-sync-fd") {
517
- *outEnum = wgpu::FeatureName::SharedFenceSyncFD;
518
- } else if (inUnion == "shared-fence-vk-semaphore-zircon-handle") {
519
- *outEnum = wgpu::FeatureName::SharedFenceVkSemaphoreZirconHandle;
520
- } else if (inUnion == "shared-fence-dxgi-shared-handle") {
521
- *outEnum = wgpu::FeatureName::SharedFenceDXGISharedHandle;
522
- } else if (inUnion == "shared-fence-mtl-shared-event") {
523
- *outEnum = wgpu::FeatureName::SharedFenceMTLSharedEvent;
524
- } else if (inUnion == "shared-buffer-memory-d3d12-resource") {
525
- *outEnum = wgpu::FeatureName::SharedBufferMemoryD3D12Resource;
526
- } else if (inUnion == "static-samplers") {
527
- *outEnum = wgpu::FeatureName::StaticSamplers;
528
- } else if (inUnion == "ycbcr-vulkan-samplers") {
529
- *outEnum = wgpu::FeatureName::YCbCrVulkanSamplers;
530
- } else if (inUnion == "opaque-ycbcr-android-for-external-texture") {
531
- *outEnum = wgpu::FeatureName::OpaqueYCbCrAndroidForExternalTexture;
532
- } else if (inUnion == "shader-module-compilation-options") {
533
- *outEnum = wgpu::FeatureName::ShaderModuleCompilationOptions;
534
- } else if (inUnion == "dawn-load-resolve-texture") {
535
- *outEnum = wgpu::FeatureName::DawnLoadResolveTexture;
536
- } else if (inUnion == "clip-distances") {
537
- *outEnum = wgpu::FeatureName::ClipDistances;
538
- } else {
539
- throw invalidUnion(inUnion);
414
+ #define RNWGPU_FEATURE_NAME_IF(Enum, Name) \
415
+ if (inUnion == Name) { \
416
+ *outEnum = wgpu::FeatureName::Enum; \
417
+ return; \
540
418
  }
419
+ RNWGPU_FOR_EACH_FEATURE_NAME(RNWGPU_FEATURE_NAME_IF)
420
+ #undef RNWGPU_FEATURE_NAME_IF
421
+ throw invalidUnion(inUnion);
541
422
  }
542
423
 
543
424
  inline void convertEnumToJSUnion(wgpu::FeatureName inEnum,
544
425
  std::string *outUnion) {
545
426
  switch (inEnum) {
546
- case wgpu::FeatureName::DepthClipControl:
547
- *outUnion = "depth-clip-control";
548
- break;
549
- case wgpu::FeatureName::Depth32FloatStencil8:
550
- *outUnion = "depth32float-stencil8";
551
- break;
552
- case wgpu::FeatureName::TextureCompressionBC:
553
- *outUnion = "texture-compression-bc";
554
- break;
555
- case wgpu::FeatureName::TextureCompressionETC2:
556
- *outUnion = "texture-compression-etc2";
557
- break;
558
- case wgpu::FeatureName::TextureCompressionASTC:
559
- *outUnion = "texture-compression-astc";
560
- break;
561
- case wgpu::FeatureName::TimestampQuery:
562
- *outUnion = "timestamp-query";
563
- break;
564
- case wgpu::FeatureName::IndirectFirstInstance:
565
- *outUnion = "indirect-first-instance";
566
- break;
567
- case wgpu::FeatureName::ShaderF16:
568
- *outUnion = "shader-f16";
569
- break;
570
- case wgpu::FeatureName::RG11B10UfloatRenderable:
571
- *outUnion = "rg11b10ufloat-renderable";
572
- break;
573
- case wgpu::FeatureName::BGRA8UnormStorage:
574
- *outUnion = "bgra8unorm-storage";
575
- break;
576
- case wgpu::FeatureName::Float32Filterable:
577
- *outUnion = "float32-filterable";
578
- break;
579
- case wgpu::FeatureName::Subgroups:
580
- *outUnion = "subgroups";
581
- break;
582
- case wgpu::FeatureName::DawnInternalUsages:
583
- *outUnion = "dawn-internal-usages";
584
- break;
585
- case wgpu::FeatureName::DawnMultiPlanarFormats:
586
- *outUnion = "dawn-multi-planar-formats";
587
- break;
588
- case wgpu::FeatureName::DawnNative:
589
- *outUnion = "dawn-native";
590
- break;
591
- case wgpu::FeatureName::DawnFormatCapabilities:
592
- *outUnion = "format-capabilities";
593
- break;
594
- case wgpu::FeatureName::ChromiumExperimentalTimestampQueryInsidePasses:
595
- *outUnion = "chromium-experimental-timestamp-query-inside-passes";
596
- break;
597
- case wgpu::FeatureName::ImplicitDeviceSynchronization:
598
- *outUnion = "implicit-device-synchronization";
599
- break;
600
- // case wgpu::FeatureName::SurfaceCapabilities:
601
- // *outUnion = "surface-capabilities";
602
- // break;
603
- case wgpu::FeatureName::TransientAttachments:
604
- *outUnion = "transient-attachments";
605
- break;
606
- case wgpu::FeatureName::MSAARenderToSingleSampled:
607
- *outUnion = "msaa-render-to-single-sampled";
608
- break;
609
- case wgpu::FeatureName::DualSourceBlending:
610
- *outUnion = "dual-source-blending";
611
- break;
612
- case wgpu::FeatureName::D3D11MultithreadProtected:
613
- *outUnion = "d3d11-multithread-protected";
614
- break;
615
- case wgpu::FeatureName::ANGLETextureSharing:
616
- *outUnion = "angle-texture-sharing";
617
- break;
618
- case wgpu::FeatureName::ChromiumExperimentalSubgroupMatrix:
619
- *outUnion = "chromium-experimental-subgroups-matrix";
620
- break;
621
- case wgpu::FeatureName::PixelLocalStorageCoherent:
622
- *outUnion = "pixel-local-storage-coherent";
623
- break;
624
- case wgpu::FeatureName::PixelLocalStorageNonCoherent:
625
- *outUnion = "pixel-local-storage-non-coherent";
626
- break;
627
- case wgpu::FeatureName::Unorm16TextureFormats:
628
- *outUnion = "unorm16-texture-formats";
629
- break;
630
- case wgpu::FeatureName::MultiPlanarFormatExtendedUsages:
631
- *outUnion = "multi-planar-format-extended-usages";
632
- break;
633
- case wgpu::FeatureName::MultiPlanarFormatP010:
634
- *outUnion = "multi-planar-format-p010";
635
- break;
636
- case wgpu::FeatureName::HostMappedPointer:
637
- *outUnion = "host-mapped-pointer";
638
- break;
639
- case wgpu::FeatureName::MultiPlanarRenderTargets:
640
- *outUnion = "multi-planar-render-targets";
641
- break;
642
- case wgpu::FeatureName::MultiPlanarFormatNv12a:
643
- *outUnion = "multi-planar-format-nv12a";
644
- break;
645
- case wgpu::FeatureName::FramebufferFetch:
646
- *outUnion = "framebuffer-fetch";
647
- break;
648
- case wgpu::FeatureName::BufferMapExtendedUsages:
649
- *outUnion = "buffer-map-extended-usages";
650
- break;
651
- case wgpu::FeatureName::AdapterPropertiesMemoryHeaps:
652
- *outUnion = "adapter-properties-memory-heaps";
653
- break;
654
- case wgpu::FeatureName::AdapterPropertiesD3D:
655
- *outUnion = "adapter-properties-d3d";
656
- break;
657
- case wgpu::FeatureName::AdapterPropertiesVk:
658
- *outUnion = "adapter-properties-vk";
659
- break;
660
- case wgpu::FeatureName::MultiPlanarFormatNv16:
661
- *outUnion = "multi-planar-format-nv16";
662
- break;
663
- case wgpu::FeatureName::MultiPlanarFormatNv24:
664
- *outUnion = "multi-planar-format-nv24";
665
- break;
666
- case wgpu::FeatureName::MultiPlanarFormatP210:
667
- *outUnion = "multi-planar-format-p210";
668
- break;
669
- case wgpu::FeatureName::MultiPlanarFormatP410:
670
- *outUnion = "multi-planar-format-p410";
671
- break;
672
- case wgpu::FeatureName::SharedTextureMemoryVkDedicatedAllocation:
673
- *outUnion = "shared-texture-memory-vk-dedicated-allocation";
674
- break;
675
- case wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer:
676
- *outUnion = "shared-texture-memory-ahardware-buffer";
677
- break;
678
- case wgpu::FeatureName::SharedTextureMemoryDmaBuf:
679
- *outUnion = "shared-texture-memory-dma-buf";
680
- break;
681
- case wgpu::FeatureName::SharedTextureMemoryOpaqueFD:
682
- *outUnion = "shared-texture-memory-opaque-fd";
683
- break;
684
- case wgpu::FeatureName::SharedTextureMemoryZirconHandle:
685
- *outUnion = "shared-texture-memory-zircon-handle";
686
- break;
687
- case wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle:
688
- *outUnion = "shared-texture-memory-dxgi-shared-handle";
689
- break;
690
- case wgpu::FeatureName::SharedTextureMemoryD3D11Texture2D:
691
- *outUnion = "shared-texture-memory-d3d11-texture2d";
692
- break;
693
- case wgpu::FeatureName::SharedTextureMemoryIOSurface:
694
- *outUnion = "shared-texture-memory-iosurface";
695
- break;
696
- case wgpu::FeatureName::SharedTextureMemoryEGLImage:
697
- *outUnion = "shared-texture-memory-egl-image";
698
- break;
699
- case wgpu::FeatureName::SharedFenceVkSemaphoreOpaqueFD:
700
- *outUnion = "shared-fence-vk-semaphore-opaque-fd";
701
- break;
702
- case wgpu::FeatureName::SharedFenceSyncFD:
703
- *outUnion = "shared-fence-sync-fd";
704
- break;
705
- case wgpu::FeatureName::SharedFenceVkSemaphoreZirconHandle:
706
- *outUnion = "shared-fence-vk-semaphore-zircon-handle";
707
- break;
708
- case wgpu::FeatureName::SharedFenceDXGISharedHandle:
709
- *outUnion = "shared-fence-dxgi-shared-handle";
710
- break;
711
- case wgpu::FeatureName::SharedFenceMTLSharedEvent:
712
- *outUnion = "shared-fence-mtl-shared-event";
713
- break;
714
- case wgpu::FeatureName::SharedBufferMemoryD3D12Resource:
715
- *outUnion = "shared-buffer-memory-d3d12-resource";
716
- break;
717
- case wgpu::FeatureName::StaticSamplers:
718
- *outUnion = "static-samplers";
719
- break;
720
- case wgpu::FeatureName::YCbCrVulkanSamplers:
721
- *outUnion = "ycbcr-vulkan-samplers";
722
- break;
723
- case wgpu::FeatureName::OpaqueYCbCrAndroidForExternalTexture:
724
- *outUnion = "opaque-ycbcr-android-for-external-texture";
725
- break;
726
- case wgpu::FeatureName::ShaderModuleCompilationOptions:
727
- *outUnion = "shader-module-compilation-options";
728
- break;
729
- case wgpu::FeatureName::DawnLoadResolveTexture:
730
- *outUnion = "dawn-load-resolve-texture";
731
- break;
732
- case wgpu::FeatureName::ClipDistances:
733
- *outUnion = "clip-distances";
427
+ #define RNWGPU_FEATURE_NAME_CASE(Enum, Name) \
428
+ case wgpu::FeatureName::Enum: \
429
+ *outUnion = Name; \
734
430
  break;
431
+ RNWGPU_FOR_EACH_FEATURE_NAME(RNWGPU_FEATURE_NAME_CASE)
432
+ #undef RNWGPU_FEATURE_NAME_CASE
735
433
  default:
736
434
  throw invalidEnum(inEnum);
737
435
  }