GPUSupportedLimits
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
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 GPUSupportedLimits-Interface der WebGPU API beschreibt die von einem GPUAdapter unterstützten Grenzen.
Instanzeigenschaften
Die folgenden Grenzen werden durch Eigenschaften in einem GPUSupportedLimits-Objekt dargestellt. Siehe den Abschnitt Limits der Spezifikation für detaillierte Beschreibungen, worauf sich die Grenzen beziehen.
| Grenzname | 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 (anstelle dessen maxInterStageShaderVariables verwenden, siehe Hinweis zur Veraltung für mehr Infos) |
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 für den aktuellen Adapter wird über die GPUAdapter.limits-Eigenschaft zugegriffen.
Anstatt die genauen Grenzen jeder GPU zu melden, geben Browser typischerweise unterschiedliche Staffelwerte verschiedener Grenzen an (um die einzigartige Information zu verringern, die für das Fingerprinting verfügbar ist). Zum Beispiel könnten die Stufen einer bestimmten Grenze 2048, 8192 und 32768 sein. Wenn das tatsächliche Limit Ihrer GPU 16384 ist, wird der Browser trotzdem 8192 melden.
Da verschiedene Browser dies unterschiedlich handhaben und die Staffelwerte sich im Laufe der Zeit ändern können, ist es schwierig, eine genaue Angabe dessen zu machen, welche Grenzwerte zu erwarten sind — gründliches Testen wird empfohlen.
Beachten Sie, dass beim Aufruf von GPUAdapter.requestDevice() zur Anforderung eines GPUDevice, das einige Mindestanforderungen ("limits") erfüllt, Sie ein Objekt übergeben, das dieselben Eigenschaftsnamen wie GPUSupportedLimits hat.
Beispiele
Im folgenden Code fragen wir den GPUAdapter.limits Wert von maxBindGroups ab, um zu sehen, ob er gleich oder größer als 6 ist.
Unsere theoretische Beispielanwendung benötigt idealerweise 6 Bind-Gruppen, also fügen wir dem requiredLimits-Objekt ein maximales Limit von 6 hinzu, wenn der zurückgegebene Wert >= 6 ist.
Dann fordern wir ein Gerät mit dieser Grenzanforderung mit GPUAdapter.requestDevice() an:
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
- Die WebGPU API