Novedades de WebGPU (Chrome 140)

François Beaufort
François Beaufort

Publicado: 27 de agosto de 2025

Las solicitudes de dispositivos consumen el adaptador

Según la especificación de WebGPU, un adaptador se marca como "consumido" cuando se realiza una solicitud de dispositivo correcta. En consecuencia, cualquier llamada posterior a requestDevice() que use el mismo adaptador ahora generará una promesa rechazada. Anteriormente, estas llamadas devolvían un dispositivo que se había perdido en el momento de la creación. Consulta el problema 415825174.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

Abreviatura para usar la textura donde se usa la vista de textura

Ahora se puede usar un GPUTexture directamente como un GPUBindingResource para exponerlo al sombreador para la vinculación. También se puede usar como GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget y GPURenderPassDepthStencilAttachment view para mejorar la ergonomía. Esto ofrece un enfoque más simple que usar un GPUTextureView para obtener una vista predeterminada. Consulta el problema 425906323.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel admite texturas 1D

Ahora se pueden muestrear las texturas 1D con textureSampleLevel() para que sean coherentes con las texturas 2D. Esto te permite tomar muestras de una textura 1D desde un sombreador de vértices, lo que antes solo era posible desde un sombreador de fragmentos con textureSample(). Consulta el problema 382514673.

Se dejó de usar la textura de almacenamiento de solo lectura bgra8unorm

El uso del formato "bgra8unorm" con texturas de almacenamiento de solo lectura ahora está obsoleto. La especificación de WebGPU prohíbe explícitamente esto, y su permiso anterior en Chrome era un error, ya que este formato está diseñado para el acceso de solo escritura y no es portátil. Consulta el problema 427681156.

Se quitó el atributo isFallbackAdapter de GPUAdapter

Como se anunció anteriormente, se quitó el atributo isFallbackAdapter de GPUAdapter. Se reemplazó por el atributo isFallbackAdapter de GPUAdapterInfo que se introdujo en Chrome 136. Consulta intención de quitar.

Actualizaciones de Dawn

La función wgpuInstanceGetWGSLLanguageFeatures() se usa para obtener una lista de las funciones del lenguaje WGSL que admite la instancia. Antes, mostraba un valor WGPUStatus. Se actualizó para que no devuelva un valor, ya que no puede fallar. Consulta el problema 429178774.

La función wgpuSurfacePresent() ahora devuelve un error WGPUStatus si la superficie no tiene una textura actual. Consulta el problema 425930323.

La nueva función wgpu::InstanceFeatureName::MultipleDevicesPerAdapter permite que los adaptadores creen varios dispositivos sin "consumirse". Consulta el problema 415825174.

El botón de activación del dispositivo dump_shaders_on_failure te permite volcar sombreadores solo en caso de falla para fines de depuración. Se aplica exclusivamente a los back-ends de D3, aunque es posible que se expanda a otros back-ends en el futuro. Consulta el problema 429187478.

Se realizaron varios cambios en el backend de Vulkan para reducir la sobrecarga cuando se envían pases de renderización, especialmente para mejorar el rendimiento en las GPU para dispositivos móviles. Por ejemplo, almacenamiento en caché de VkFramebuffers.

Esto solo abarca algunos de los aspectos destacados clave. Consulta la lista exhaustiva de confirmaciones.

Novedades de WebGPU

Una lista de todo lo que se abordó en la serie Novedades de WebGPU

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113