GPUAdapter: limits-Eigenschaft

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 vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die limits-Schreibgeschützte Eigenschaft des GPUAdapter-Interfaces gibt ein GPUSupportedLimits-Objekt zurück, das die von diesem Adapter unterstützten Limits beschreibt.

Es sollte beachtet werden, dass Browser anstelle der genauen Grenzen jeder GPU wahrscheinlich unterschiedliche Stufenwerte für verschiedene Limits melden, um die verfügbare eindeutige Information zur Vermeidung von Drive-by-Fingerprinting zu reduzieren. Zum Beispiel könnten die Stufen eines bestimmten Limits 2048, 8192 und 32768 sein. Wenn das tatsächliche Limit Ihrer GPU 16384 beträgt, wird der Browser dennoch 8192 melden.

Da verschiedene Browser dies unterschiedlich handhaben und sich die Stufenwerte im Laufe der Zeit ändern können, ist es schwierig, genaue Angaben darüber zu machen, welche Limitwerte zu erwarten sind – gründliches Testen wird empfohlen.

Wert

Eine Instanz des GPUSupportedLimits-Objekts.

Beispiele

Im folgenden Code prüfen wir den GPUAdapter.limits-Wert von maxBindGroups, um zu sehen, ob er gleich oder größer als 6 ist. Unser theoretisches Beispiel-App benötigt idealerweise 6 Bindgruppen. Wenn der zurückgegebene Wert >= 6 ist, fügen wir dem requiredLimits-Objekt ein maximales Limit von 6 hinzu und fordern ein Gerät mit dieser Limitanforderung mithilfe von GPUAdapter.requestDevice() an:

js
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 requiredLimits = {};

  // App ideally needs 6 bind groups, so we'll try to request what the app needs
  if (adapter.limits.maxBindGroups >= 6) {
    requiredLimits.maxBindGroups = 6;
  }

  const device = await adapter.requestDevice({
    requiredLimits,
  });

  // …
}

Spezifikationen

Specification
WebGPU
# dom-gpuadapter-limits

Browser-Kompatibilität

Siehe auch