GPUSupportedLimits
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.
Das GPUSupportedLimits
Interface der WebGPU API beschreibt die von einem GPUAdapter
unterstützten Grenzen.
Das GPUSupportedLimits
-Objekt für den aktuellen Adapter wird über die Eigenschaft GPUAdapter.limits
abgerufen.
Sie sollten beachten, dass Browser anstatt die genauen Begrenzungen jeder GPU zu melden, wahrscheinlich unterschiedliche Stufenwerte verschiedener Begrenzungen angeben werden, um die verfügbaren eindeutigen Informationen zur Vermeidung von Fingerprinting zu verringern. Zum Beispiel könnten die Stufen einer bestimmten Begrenzung 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 behandeln und sich die Stufenwerte im Laufe der Zeit ändern können, ist es schwierig, eine genaue Angabe darüber zu machen, welche Limitwerte zu erwarten sind — gründliche Tests werden empfohlen.
Instanzeigenschaften
Die folgenden Begrenzungen werden durch Eigenschaften eines GPUSupportedLimits
-Objekts dargestellt. Siehe den Limits-Abschnitt der Spezifikation für detaillierte Beschreibungen, worauf sich die Begrenzungen beziehen.
Begrenzungsname | Standardwert |
---|---|
maxTextureDimension1D |
8192 |
maxTextureDimension2D |
8192 |
maxTextureDimension3D |
2048 |
maxTextureArrayLayers |
256 |
maxBindGroups |
4 |
maxBindingsPerBindGroup |
640 |
maxDynamicUniformBuffersPerPipelineLayout |
8 |
maxDynamicStorageBuffersPerPipelineLayout |
4 |
maxSampledTexturesPerShaderStage |
16 |
maxSamplersPerShaderStage |
16 |
maxStorageBuffersPerShaderStage |
8 |
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
Veraltet
Nicht standardisiert
(verwenden Sie stattdessen maxInterStageShaderVariables , siehe Abkündigungshinweis für weitere Informationen) |
60 |
maxInterStageShaderVariables |
16 |
maxColorAttachments |
8 |
maxColorAttachmentBytesPerSample |
32 |
maxComputeWorkgroupStorageSize |
16384 bytes |
maxComputeInvocationsPerWorkgroup |
256 |
maxComputeWorkgroupSizeX |
256 |
maxComputeWorkgroupSizeY |
256 |
maxComputeWorkgroupSizeZ |
64 |
maxComputeWorkgroupsPerDimension |
65535 |
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 Bindungsgruppen. Wenn der zurückgegebene Wert >= 6 ist, fügen wir dem requiredLimits
-Objekt eine maximale Begrenzung von 6 hinzu. Anschließend bitten wir um ein Gerät mit dieser Begrenzungsanforderung unter Verwendung von GPUAdapter.requestDevice()
:
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 # gpusupportedlimits |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API