GPU: Methode requestAdapter()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die requestAdapter()
-Methode der GPU
-Schnittstelle gibt ein Promise
zurück, das mit einer Instanz des GPUAdapter
-Objekts erfüllt wird. Hieraus können Sie ein GPUDevice
anfordern, Informationen zum Adapter sowie Funktionen und Grenzen abrufen.
Bitte beachten Sie, dass der Benutzeragent entscheidet, ob ein Adapter zurückgegeben wird. Wenn ja, wählt er entsprechend den angegebenen Optionen aus. Wenn keine Optionen angegeben werden, bietet das Gerät Zugriff auf den Standardadapter, der normalerweise für die meisten Zwecke ausreichend ist.
Syntax
requestAdapter()
requestAdapter(options)
Parameter
options
Optional-
Ein Objekt, das die folgenden Eigenschaften enthält:
powerPreference
Optional-
Ein enumerierter Wert, der verwendet werden kann, um dem Benutzeragenten einen Hinweis zu geben, welche Klasse von Adapter aus den verfügbaren Adaptern des Systems gewählt werden sollte. Verfügbare Werte sind:
undefined
(oder nicht angegeben), was keinen Hinweis gibt."low-power"
, was einen Hinweis gibt, Energiesparfunktionen über die Leistung zu priorisieren. Wenn Ihre App mit dieser Einstellung gut funktioniert, wird empfohlen, sie zu verwenden, da sie die Akkulaufzeit auf tragbaren Geräten erheblich verbessern kann. Dies ist normalerweise der Standardwert, wenn keine Optionen angegeben werden."high-performance"
, was einen Hinweis gibt, die Leistung über den Energieverbrauch zu priorisieren. Es wird empfohlen, diesen Wert nur anzugeben, wenn es absolut notwendig ist, da er die Akkulaufzeit auf tragbaren Geräten erheblich verringern kann. Dies kann auch zu einem erhöhten Verlust desGPUDevice
führen – das System kann manchmal entscheiden, auf einen energiesparenderen Adapter umzuschalten, um Energie zu sparen.
Der Hauptzweck dieses Hinweises besteht darin, zu beeinflussen, welche GPU in einem Multi-GPU-System verwendet wird. Beispielsweise haben einige Laptops eine energiesparende integrierte GPU und eine leistungsstarke diskrete GPU. Verschiedene Faktoren können beeinflussen, welcher Adapter zurückgegeben wird, einschließlich Akkustatus, angeschlossener Bildschirme oder entfernbarer GPUs.
Hinweis: Auf Chrome, das auf macOS-Geräten mit dualer GPU läuft, wird, wenn
requestAdapter()
ohne die OptionpowerPreference
aufgerufen wird, die leistungsstarke diskrete GPU zurückgegeben, wenn das Gerät des Benutzers mit Netzstrom betrieben wird. Andernfalls wird die energiesparende integrierte GPU zurückgegeben.
Fallback-Adapter
Der vom Benutzeragenten bereitgestellte Adapter kann ein Fallback-Adapter sein, wenn dies als die am besten geeignete verfügbare Option erachtet wird. Ein Fallback-Adapter hat in der Regel erhebliche Leistungseinschränkungen im Austausch für eine Kombination aus größerer Kompatibilität, vorhersehbarem Verhalten oder verbesserter Privatsphäre. Beispielsweise können einige Browser eine softwarebasierte Implementierung der API über einen Fallback-Adapter bereitstellen. Ein Fallback-Adapter wird nicht auf jedem System verfügbar sein.
Wenn Sie verhindern möchten, dass Ihre Anwendungen auf Fallback-Adaptern ausgeführt werden, sollten Sie das Attribut GPUAdapter.isFallbackAdapter
überprüfen, bevor Sie ein GPUDevice
anfordern.
Hinweis: Die Spezifikation umfasst eine forceFallbackAdapter
-Option für requestAdapter()
. Dies ist ein boolescher Wert, der, wenn auf true
gesetzt, den Benutzeragenten zwingt, einen Fallback-Adapter zurückzugeben, falls einer verfügbar ist. Dies wird derzeit von keinem Browser unterstützt.
Rückgabewert
Ein Promise
, das bei Erfolg der Anfrage mit einer GPUAdapter
-Objektinstanz erfüllt wird.
requestAdapter()
wird zu null
, wenn kein geeigneter Adapter verfügbar ist.
Ausnahmen
Keine.
Beispiele
async function init() {
if (!navigator.gpu) {
throw Error("WebGPU not supported.");
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) {
throw Error("Couldn't request WebGPU adapter.");
}
const device = await adapter.requestDevice();
//...
}
Spezifikationen
Specification |
---|
WebGPU # dom-gpu-requestadapter |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API