Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

GPUSupportedLimits

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

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 Schnittstelle GPUSupportedLimits der WebGPU API beschreibt die von einem GPUAdapter unterstützten Grenzwerte.

Instanzeigenschaften

Die folgenden Grenzwerte werden durch Eigenschaften eines GPUSupportedLimits-Objekts dargestellt. Ausführliche Beschreibungen dazu, worauf sich die Grenzwerte beziehen, finden Sie im Abschnitt Grenzwerte der Spezifikation.

Alle Eigenschaften sind schreibgeschützt.

Name des Grenzwerts Standardwert
maxTextureDimension1D 8192
maxTextureDimension2D 8192
maxTextureDimension3D 2048
maxTextureArrayLayers 256
maxBindGroups 4
maxBindingsPerBindGroup 640
maxDynamicUniformBuffersPerPipelineLayout 8
maxDynamicStorageBuffersPerPipelineLayout 4
maxSampledTexturesPerShaderStage 16
maxSamplersPerShaderStage 16
maxStorageBuffersInFragmentStage 8
maxStorageBuffersInVertexStage 8
maxStorageBuffersPerShaderStage 8
maxStorageTexturesInFragmentStage 4
maxStorageTexturesInVertexStage 4
maxStorageTexturesPerShaderStage 4
maxUniformBuffersPerShaderStage 12
maxUniformBufferBindingSize 65536 Bytes
maxStorageBufferBindingSize 134217728 Bytes (128 MB)
minUniformBufferOffsetAlignment 256 Bytes
minStorageBufferOffsetAlignment 256 Bytes
maxVertexBuffers 8
maxBufferSize 268435456 Bytes (256 MB)
maxVertexAttributes 16
maxVertexBufferArrayStride 2048 Bytes
maxInterStageShaderComponents (verwenden Sie stattdessen maxInterStageShaderVariables; weitere Informationen finden Sie im Hinweis zur Veraltung) 60
maxInterStageShaderVariables 16
maxColorAttachments 8
maxColorAttachmentBytesPerSample 32
maxComputeWorkgroupStorageSize 16384 Bytes
maxComputeInvocationsPerWorkgroup 256
maxComputeWorkgroupSizeX 256
maxComputeWorkgroupSizeY 256
maxComputeWorkgroupSizeZ 64
maxComputeWorkgroupsPerDimension 65535

Beschreibung

Auf das GPUSupportedLimits-Objekt des aktuellen Adapters greifen Sie über die Eigenschaft GPUAdapter.limits zu.

Anstatt die genauen Grenzwerte jeder GPU anzugeben, melden Browser üblicherweise abgestufte Werte für die einzelnen Grenzwerte. Dadurch stehen weniger eindeutige Informationen für beiläufiges Fingerprinting zur Verfügung. Die Abstufungen eines bestimmten Grenzwerts könnten beispielsweise bei 2048, 8192 und 32768 liegen. Wenn der tatsächliche Grenzwert Ihrer GPU 16384 beträgt, meldet der Browser dennoch 8192.

Da verschiedene Browser dies unterschiedlich handhaben und sich die abgestuften Werte im Laufe der Zeit ändern können, lässt sich kaum genau vorhersagen, welche Grenzwerte zu erwarten sind. Gründliche Tests sind daher empfehlenswert.

Wenn Sie GPUAdapter.requestDevice() aufrufen, um ein GPUDevice anzufordern, das bestimmte Mindestanforderungen („Grenzwerte“) erfüllt, übergeben Sie ein Objekt mit denselben Eigenschaftsnamen wie GPUSupportedLimits.

Grenzwerte für Storage Buffer und Texturen außerhalb des Kompatibilitätsmodus

Wenn Sie ein Device erstellen, werden die angeforderten Grenzwerte maxStorageBuffersInFragmentStage, maxStorageBuffersInVertexStage, maxStorageTexturesInFragmentStage und maxStorageTexturesInVertexStage nicht als separate Werte beibehalten, sofern der WebGPU-Kompatibilitätsmodus nicht verwendet wird. Stattdessen erhöhen sie die Grenzwerte maxStorageBuffersPerShaderStage beziehungsweise maxStorageTexturesPerShaderStage, falls sie höher sind, und werden anschließend an diese angeglichen.

Beispiele

Im folgenden Code fragen wir den Wert von maxBindGroups über GPUAdapter.limits ab, um zu prüfen, ob er mindestens 6 beträgt. Unsere hypothetische Beispielanwendung benötigt idealerweise 6 Bind Groups. Wenn der zurückgegebene Wert >= 6 ist, fügen wir dem Objekt requiredLimits daher einen maximalen Grenzwert von 6 hinzu. Anschließend fordern wir mit GPUAdapter.requestDevice() ein Device mit dieser Grenzwertanforderung 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

Spezifikation
WebGPU
# gpusupportedlimits

Browser-Kompatibilität

Siehe auch