Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.

View in English Always switch to English

GPUAdapter: Propiedad limits

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Contexto seguro: Esta función está disponible solo en contextos seguros (HTTPS), en algunos o todos los navegadores que lo soportan.

Nota: Esta característica está disponible en Web Workers.

La propiedad de solo lectura limits de la interfaz GPUAdapter devuelve un objeto GPUSupportedLimits que describe los límites soportados por el adaptador.

Deberías tener en cuenta que, en lugar de reportar los límites exactos de cada GPU, los navegadores probablemente reporten diferentes niveles para distintos límites con el fin de reducir la información única disponible para el drive-by fingerprinting. Por ejemplo, los niveles de un cierto límite podrían ser de 2048, 8192 y 32768. Si el límite real de tu GPU es 16384, el navegador seguirá reportando 8192.

Dado que los diferentes navegadores gestionarán esto de diferentes formas y los niveles pueden cambiar sobre el tiempo, es difícil proporcionar una cantidad precisa de qué valores límite esperar, se recomienda realizar pruebas exhaustivas.

Valor

Una instancia del objeto GPUSupportedLimits.

Ejemplos

En el siguiente código consultamos el valor GPUAdapter.limits de maxBindGroups para ver si es igual o mayor que 6. Nuestra aplicación de ejemplo necesita idealmente 6 grupos de enlace, así que si el valor devuelto es >= 6, añadimos un límite máximo de 6 al objeto requiredLimits, y solicitamos un dispositivo con ese requerimiento de límite usando GPUAdapter.requestDevice():

js
async function init() {
  if (!navigator.gpu) {
    throw Error("WebGPU no está soportado.");
  }

  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    throw Error("No se pudo solicitar un adaptador de WebGPU.");
  }

  const requiredLimits = {};

  // La aplicación necesita idealmente 6 grupos de enlace,
  // así que intentaremos solicitar lo que la aplicación requiere
  if (adapter.limits.maxBindGroups >= 6) {
    requiredLimits.maxBindGroups = 6;
  }

  const device = await adapter.requestDevice({
    requiredLimits,
  });

  // …
}

Especificaciones

Specification
WebGPU
# dom-gpuadapter-limits

Compatibilidad con navegadores

Véase también