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.

Das Interface GPUSupportedLimits der WebGPU API beschreibt die von einem GPUAdapter unterstützten Limits.

Instanzeigenschaften

Die folgenden Limits werden durch Eigenschaften eines GPUSupportedLimits-Objekts dargestellt. Ausführliche Beschreibungen der einzelnen Limits finden Sie im Abschnitt Limits der Spezifikation.

Alle Eigenschaften sind schreibgeschützt.

Name des Limits 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 Byte
maxStorageBufferBindingSize 134217728 Byte (128 MB)
minUniformBufferOffsetAlignment 256 Byte
minStorageBufferOffsetAlignment 256 Byte
maxVertexBuffers 8
maxBufferSize 268435456 Byte (256 MB)
maxVertexAttributes 16
maxVertexBufferArrayStride 2048 Byte
maxInterStageShaderComponents (verwenden Sie stattdessen maxInterStageShaderVariables; weitere Informationen finden Sie im Hinweis zur Einstellung) 60
maxInterStageShaderVariables 16
maxColorAttachments 8
maxColorAttachmentBytesPerSample 32
maxComputeWorkgroupStorageSize 16384 Byte
maxComputeInvocationsPerWorkgroup 256
maxComputeWorkgroupSizeX 256
maxComputeWorkgroupSizeY 256
maxComputeWorkgroupSizeZ 64
maxComputeWorkgroupsPerDimension 65535

Beschreibung

Auf das GPUSupportedLimits-Objekt des aktuellen Adapters wird über die Eigenschaft GPUAdapter.limits zugegriffen.

Anstatt die genauen Limits jeder GPU anzugeben, melden Browser üblicherweise Werte aus verschiedenen Stufen für die jeweiligen Limits. Dadurch stehen weniger eindeutige Informationen für beiläufiges Fingerprinting zur Verfügung. Die Stufen eines bestimmten Limits könnten beispielsweise bei 2048, 8192 und 32768 liegen. Wenn das tatsächliche Limit Ihrer GPU 16384 beträgt, meldet der Browser dennoch 8192.

Da verschiedene Browser dies unterschiedlich handhaben und sich die Stufenwerte im Laufe der Zeit ändern können, lässt sich nur schwer genau vorhersagen, welche Limitwerte zu erwarten sind. Gründliche Tests sind daher ratsam.

Beachten Sie: Wenn Sie mit GPUAdapter.requestDevice() ein GPUDevice anfordern, das bestimmte Mindestanforderungen („Limits“) erfüllt, übergeben Sie ein Objekt mit denselben Eigenschaftsnamen wie GPUSupportedLimits.

Beispiele

Im folgenden Code fragen wir über GPUAdapter.limits den Wert von maxBindGroups ab, um zu prüfen, ob er mindestens 6 beträgt. Unsere hypothetische Beispielanwendung benötigt idealerweise 6 Bind Groups. Ist der zurückgegebene Wert mindestens 6, fügen wir dem Objekt requiredLimits daher ein Limit von 6 hinzu. Anschließend fordern wir mit GPUAdapter.requestDevice() ein Gerät an, das diese Anforderung erfüllt:

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