diff --git a/src/library_webgpu.js b/src/library_webgpu.js index f6d7bfa45928a..a2a104ce6c405 100644 --- a/src/library_webgpu.js +++ b/src/library_webgpu.js @@ -822,16 +822,20 @@ var LibraryWebGPU = { // wgpuDevice wgpuDeviceEnumerateFeatures: (deviceId, featuresOutPtr) => { + var offset = 0; + var numFeatures = 0; var device = WebGPU.mgrDevice.get(deviceId); - if (featuresOutPtr !== 0) { - var offset = 0; - device.features.forEach(feature => { - var featureEnumValue = WebGPU.FeatureNameString2Enum[feature]; - {{{ makeSetValue('featuresOutPtr', 'offset', 'featureEnumValue', 'i32') }}}; - offset += 4; - }); - } - return device.features.size; + device.features.forEach(feature => { + var featureEnumValue = WebGPU.FeatureNameString2Enum[feature]; + if (featureEnumValue !== undefined) { + if (featuresOutPtr !== 0) { + {{{ makeSetValue('featuresOutPtr', 'offset', 'featureEnumValue', 'i32') }}}; + offset += 4; + } + numFeatures++; + } + }); + return numFeatures; }, wgpuDeviceDestroy: (deviceId) => WebGPU.mgrDevice.get(deviceId).destroy(), @@ -2568,16 +2572,20 @@ var LibraryWebGPU = { // WGPUAdapter wgpuAdapterEnumerateFeatures: (adapterId, featuresOutPtr) => { + var offset = 0; + var numFeatures = 0; var adapter = WebGPU.mgrAdapter.get(adapterId); - if (featuresOutPtr !== 0) { - var offset = 0; - adapter.features.forEach(feature => { - var featureEnumValue = WebGPU.FeatureNameString2Enum[feature]; - {{{ makeSetValue('featuresOutPtr', 'offset', 'featureEnumValue', 'i32') }}}; - offset += 4; - }); - } - return adapter.features.size; + adapter.features.forEach(feature => { + var featureEnumValue = WebGPU.FeatureNameString2Enum[feature]; + if (featureEnumValue !== undefined) { + if (featuresOutPtr !== 0) { + {{{ makeSetValue('featuresOutPtr', 'offset', 'featureEnumValue', 'i32') }}}; + offset += 4; + } + numFeatures++; + } + }); + return numFeatures; }, wgpuAdapterGetInfo__deps: ['$stringToNewUTF8'],