(function (vendor, architecture, device, description, limits, features, mode, fabricate) {
var gpuPresent = ('gpu' in navigator);
if (mode === 'block') {
if (gpuPresent) {
try { __zdGetter(navigator, 'gpu', function () { return undefined; }, { enumerable: false }); } catch (e) {}
}
return;
}
if (vendor === null) return;
var info = { vendor: vendor, architecture: architecture, device: device || '', description: description || '', isFallbackAdapter: false };
var featureSet = null;
if (features) {
try { featureSet = new Set(features); } catch (e) { featureSet = null; }
}
if (gpuPresent) {
try {
if (typeof GPUAdapter !== 'undefined' && GPUAdapter.prototype) {
var di = Object.getOwnPropertyDescriptor(GPUAdapter.prototype, 'info');
if (di && typeof di.get === 'function') {
__zdGetter(GPUAdapter.prototype, 'info', function () { return info; }, { enumerable: di.enumerable });
}
if (limits) {
var dl = Object.getOwnPropertyDescriptor(GPUAdapter.prototype, 'limits');
if (dl && typeof dl.get === 'function') {
__zdGetter(GPUAdapter.prototype, 'limits', function () { return limits; }, { enumerable: dl.enumerable });
}
}
if (featureSet) {
var df = Object.getOwnPropertyDescriptor(GPUAdapter.prototype, 'features');
if (df && typeof df.get === 'function') {
__zdGetter(GPUAdapter.prototype, 'features', function () { return featureSet; }, { enumerable: df.enumerable });
}
}
}
} catch (e) {}
}
if (!fabricate) return;
try {
var synthetic = { isFallbackAdapter: false };
__zdGetter(synthetic, 'info', function () { return info; }, { enumerable: false });
__zdGetter(synthetic, 'limits', function () { return limits || {}; }, { enumerable: false });
__zdGetter(synthetic, 'features', function () { return featureSet || new Set(); }, { enumerable: false });
synthetic.requestDevice = __zdMark(function requestDevice() {
return Promise.reject(new DOMException(
'WebGPU device creation is not supported for this adapter.',
'NotSupportedError'
));
}, 'requestDevice', 0);
if (!gpuPresent) {
var syntheticGpu = {};
syntheticGpu.requestAdapter = __zdMark(function requestAdapter() {
return Promise.resolve(synthetic);
}, 'requestAdapter', 0);
syntheticGpu.getPreferredCanvasFormat = __zdMark(function getPreferredCanvasFormat() {
return 'bgra8unorm';
}, 'getPreferredCanvasFormat', 0);
if (typeof Navigator !== 'undefined' && Navigator.prototype) {
__zdGetter(Navigator.prototype, 'gpu', function () { return syntheticGpu; }, { enumerable: true });
} else {
__zdGetter(navigator, 'gpu', function () { return syntheticGpu; }, { enumerable: true });
}
return;
}
if (typeof GPU === 'undefined' || !GPU.prototype || typeof GPU.prototype.requestAdapter !== 'function') return;
__zdReplace(GPU.prototype, 'requestAdapter', function (orig) {
return function () {
var self = this, args = arguments;
try {
return Promise.resolve(orig.apply(self, args)).then(
function (adapter) { return adapter || synthetic; },
function () { return synthetic; }
);
} catch (e) {
return Promise.resolve(synthetic);
}
};
});
} catch (e) {}
})(WEBGPU_VENDOR, WEBGPU_ARCHITECTURE, WEBGPU_DEVICE, WEBGPU_DESCRIPTION, WEBGPU_LIMITS, WEBGPU_FEATURES, WEBGPU_MODE, WEBGPU_FABRICATE);