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:
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