[dawn] Remove return value from wgpuInstanceGetWGSLLanguageFeatures

This method just returns an array, it doesn't take an extensible struct.
So it's infallible like wgpuAdapter/DeviceGetFeatures and
wgpuGetInstanceFeatures and should return void.

Corresponding upstream PR:
https://github.com/webgpu-native/webgpu-headers/pull/554

Fixed: 429178774
Change-Id: Ibf21e2db11a1172be8a8d9271db3c6a282f0bc00
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/252256
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index 4b79317..5dba355 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -2463,7 +2463,6 @@
             },
             {
                 "name": "get WGSL language features",
-                "returns": "status",
                 "args": [
                     {"name": "features", "type": "supported WGSL language features", "annotation": "*"}
                 ]
diff --git a/src/dawn/native/Instance.cpp b/src/dawn/native/Instance.cpp
index f17eb8f..0dda157 100644
--- a/src/dawn/native/Instance.cpp
+++ b/src/dawn/native/Instance.cpp
@@ -733,8 +733,7 @@
     return mWGSLFeatures.contains(feature);
 }
 
-wgpu::Status InstanceBase::APIGetWGSLLanguageFeatures(
-    SupportedWGSLLanguageFeatures* features) const {
+void InstanceBase::APIGetWGSLLanguageFeatures(SupportedWGSLLanguageFeatures* features) const {
     DAWN_ASSERT(features != nullptr);
 
     size_t featureCount = mWGSLFeatures.size();
@@ -747,7 +746,6 @@
 
     features->featureCount = featureCount;
     features->features = wgslFeatures;
-    return wgpu::Status::Success;
 }
 
 void APISupportedWGSLLanguageFeaturesFreeMembers(
diff --git a/src/dawn/native/Instance.h b/src/dawn/native/Instance.h
index b8eb1d4..d830259 100644
--- a/src/dawn/native/Instance.h
+++ b/src/dawn/native/Instance.h
@@ -152,7 +152,7 @@
                                               FutureWaitInfo* futures,
                                               uint64_t timeoutNS);
     bool APIHasWGSLLanguageFeature(wgpu::WGSLLanguageFeatureName feature) const;
-    wgpu::Status APIGetWGSLLanguageFeatures(SupportedWGSLLanguageFeatures* features) const;
+    void APIGetWGSLLanguageFeatures(SupportedWGSLLanguageFeatures* features) const;
 
     void DisconnectDawnPlatform();
 
diff --git a/src/dawn/tests/unittests/validation/WGSLFeatureValidationTests.cpp b/src/dawn/tests/unittests/validation/WGSLFeatureValidationTests.cpp
index fe937bf..019bb63 100644
--- a/src/dawn/tests/unittests/validation/WGSLFeatureValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/WGSLFeatureValidationTests.cpp
@@ -177,7 +177,7 @@
     SetUp({});
 
     wgpu::SupportedWGSLLanguageFeatures supportedFeatures = {};
-    ASSERT_EQ(wgpu::Status::Success, instance.GetWGSLLanguageFeatures(&supportedFeatures));
+    instance.GetWGSLLanguageFeatures(&supportedFeatures);
     ASSERT_NE(0u, supportedFeatures.featureCount);
     const wgpu::WGSLLanguageFeatureName* features = supportedFeatures.features;
 
diff --git a/src/dawn/wire/client/Instance.cpp b/src/dawn/wire/client/Instance.cpp
index fdd5246..2d75c8a 100644
--- a/src/dawn/wire/client/Instance.cpp
+++ b/src/dawn/wire/client/Instance.cpp
@@ -291,11 +291,8 @@
     return mWGSLFeatures.contains(feature);
 }
 
-WGPUStatus Instance::APIGetWGSLLanguageFeatures(WGPUSupportedWGSLLanguageFeatures* features) const {
-    if (features == nullptr) {
-        return WGPUStatus_Error;
-    }
-
+void Instance::APIGetWGSLLanguageFeatures(WGPUSupportedWGSLLanguageFeatures* features) const {
+    DAWN_ASSERT(features != nullptr);
     size_t featureCount = mWGSLFeatures.size();
     WGPUWGSLLanguageFeatureName* wgslFeatures = new WGPUWGSLLanguageFeatureName[featureCount];
     uint32_t index = 0;
@@ -306,7 +303,6 @@
 
     features->featureCount = featureCount;
     features->features = wgslFeatures;
-    return WGPUStatus_Success;
 }
 
 WGPUSurface Instance::APICreateSurface(const WGPUSurfaceDescriptor* desc) const {
diff --git a/src/dawn/wire/client/Instance.h b/src/dawn/wire/client/Instance.h
index 5624c3a..7a78cdc 100644
--- a/src/dawn/wire/client/Instance.h
+++ b/src/dawn/wire/client/Instance.h
@@ -56,7 +56,7 @@
     WGPUWaitStatus APIWaitAny(size_t count, WGPUFutureWaitInfo* infos, uint64_t timeoutNS);
 
     bool APIHasWGSLLanguageFeature(WGPUWGSLLanguageFeatureName feature) const;
-    WGPUStatus APIGetWGSLLanguageFeatures(WGPUSupportedWGSLLanguageFeatures* features) const;
+    void APIGetWGSLLanguageFeatures(WGPUSupportedWGSLLanguageFeatures* features) const;
 
     WGPUSurface APICreateSurface(const WGPUSurfaceDescriptor* desc) const;
 
diff --git a/third_party/webgpu-headers/webgpu.h.diff b/third_party/webgpu-headers/webgpu.h.diff
index e69de29..4d4f0d4 100644
--- a/third_party/webgpu-headers/webgpu.h.diff
+++ b/third_party/webgpu-headers/webgpu.h.diff
@@ -0,0 +1,20 @@
+--- webgpu_header
++++ dawn_header
+@@
+ typedef void (*WGPUProcDeviceRelease)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
+ 
+ typedef WGPUSurface (*WGPUProcInstanceCreateSurface)(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
+-typedef WGPUStatus (*WGPUProcInstanceGetWGSLLanguageFeatures)(WGPUInstance instance, WGPUSupportedWGSLLanguageFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
++typedef void (*WGPUProcInstanceGetWGSLLanguageFeatures)(WGPUInstance instance, WGPUSupportedWGSLLanguageFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
+ typedef WGPUBool (*WGPUProcInstanceHasWGSLLanguageFeature)(WGPUInstance instance, WGPUWGSLLanguageFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
+ typedef void (*WGPUProcInstanceProcessEvents)(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
+ typedef WGPUFuture (*WGPUProcInstanceRequestAdapter)(WGPUInstance instance, WGPU_NULLABLE WGPURequestAdapterOptions const * options, WGPURequestAdapterCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
+@@
+ WGPU_EXPORT void wgpuDeviceRelease(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
+ 
+ WGPU_EXPORT WGPUSurface wgpuInstanceCreateSurface(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
+-WGPU_EXPORT WGPUStatus wgpuInstanceGetWGSLLanguageFeatures(WGPUInstance instance, WGPUSupportedWGSLLanguageFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
++WGPU_EXPORT void wgpuInstanceGetWGSLLanguageFeatures(WGPUInstance instance, WGPUSupportedWGSLLanguageFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
+ WGPU_EXPORT WGPUBool wgpuInstanceHasWGSLLanguageFeature(WGPUInstance instance, WGPUWGSLLanguageFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
+ WGPU_EXPORT void wgpuInstanceProcessEvents(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
+ WGPU_EXPORT WGPUFuture wgpuInstanceRequestAdapter(WGPUInstance instance, WGPU_NULLABLE WGPURequestAdapterOptions const * options, WGPURequestAdapterCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;