Publié le 23 avril 2025
Attribut GPUAdapterInfo isFallbackAdapter
L'attribut booléen isFallbackAdapter
de GPUAdapterInfo indique si un GPUAdapter présente des limites de performances importantes en échange d'une compatibilité plus large, d'un comportement plus prévisible ou d'une confidentialité améliorée. Cette addition était nécessaire, car les bibliothèques qui utilisent des objets GPUDevice fournis par l'utilisateur ne pouvaient pas accéder à ces informations via l'attribut adapterInfo
sur GPUDevice. Consultez l'exemple suivant et l'problème 403172841.
const adapter = await navigator.gpu.requestAdapter();
if (adapter?.info.isFallbackAdapter) {
// The returned adapter is a software-backed fallback adapter, which
// may have significantly lower performance and fewer features.
}
Chrome n'ayant pas encore pris en charge les adaptateurs de remplacement, isFallbackAdapter
est actuellement toujours faux sur les appareils des utilisateurs. Nous étudions la possibilité de supprimer l'attribut isFallbackAdapter
de GPUAdapter. Voir Intent to ship.
Amélioration du temps de compilation des nuanceurs sur D3D12
L'équipe Chrome continue d'améliorer Tint, le compilateur du langage de nuanceurs WebGPU, en ajoutant une représentation intermédiaire (IR) pour les appareils compatibles avec WebGPU avec le backend D3D12. Ce code intermédiaire, situé entre l'arbre syntaxique abstrait (AST) de Tint et l'écrivain de backend HLSL, rendra le compilateur plus efficace et plus facile à gérer, ce qui profitera à la fois aux développeurs et aux utilisateurs. Les premiers tests montrent que la nouvelle version de Tint est jusqu'à 10 fois plus rapide lors de la traduction des nuanceurs WGSL d'Unity en HLSL.

Ces améliorations, déjà disponibles sur Android, ChromeOS et macOS, sont progressivement déployées sur les appareils Windows compatibles avec WebGPU avec le backend D3D12. Consultez le problème 42251045.
Enregistrer et copier des images sur toile
Les utilisateurs de Chrome peuvent désormais effectuer un clic droit sur un canevas WebGPU et accéder aux options du menu contextuel Enregistrer l'image sous ou Copier l'image. Voir le problème 40902474.

Lever les restrictions du mode de compatibilité
Lorsque la fonctionnalité expérimentale "core-features-and-limits"
est disponible sur un GPUDevice, elle lève toutes les restrictions du mode de compatibilité (fonctionnalités et limites) lorsque l'indicateur chrome://flags/#enable-unsafe-webgpu
est activé. Voir le problème 395855517.
Demander un GPUAdapter avec l'option featureLevel: "compatibility"
indique au navigateur de sélectionner le mode de compatibilité WebGPU expérimental. Si l'opération réussit, l'adaptateur obtenu est "compatibility-defaulting". Sinon, il s'agit de "core-defaulting", ce qui revient à utiliser l'option featureLevel: "core"
. De plus, l'appel de requestDevice()
sans requiredFeatures
et requiredLimits
demande un GPUDevice avec les fonctionnalités par défaut du GPUAdapter.
Les adaptateurs par défaut du noyau sont toujours compatibles avec la fonctionnalité "core-features-and-limits"
, qui est automatiquement activée sur les GPUDevices créés à partir d'eux. Pour les adaptateurs compatibles par défaut, la fonctionnalité "core-features-and-limits"
peut être prise en charge et peut être demandée sur les GPUDevices créés à partir d'eux. Les deux types d'adaptateurs peuvent également prendre en charge des fonctionnalités telles que "float32-blendable"
, qui est facultative en mode principal et en mode de compatibilité.
L'exemple suivant concerne une application qui nécessite "float32-blendable"
et qui accepte l'utilisation des fonctionnalités de base si elles sont disponibles, mais qui n'utilise que les fonctionnalités de compatibilité si les fonctionnalités de base ne sont pas disponibles.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (!adapter || !adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
requiredFeatures.push("core-features-and-limits");
}
const device = await adapter.requestDevice({ requiredFeatures });
if (!device.features.has("core-features-and-limits")) {
// Compatibility mode restrictions validation rules will apply.
}
Les attributs GPUAdapter featureLevel
et isCompatibilityMode
expérimentaux ont été supprimés au profit de la fonctionnalité "core-features-and-limits"
. Voir le problème 395855516.
Informations Dawn
L'énumération InstanceDropped
de l'état du rappel a été rebaptisée CallbackCancelled
pour indiquer clairement que le rappel a été annulé, mais que le traitement en arrière-plan associé à l'événement, tel que la compilation du pipeline, peut toujours s'exécuter. Le nouveau nom est plus général, au cas où un autre mécanisme d'annulation serait ajouté ultérieurement. Voir le problème 520.
L'énumération wgpu::PopErrorScopeStatus::EmptyStack
qui indique que la pile de portée d'erreur n'a pas pu être supprimée a été rebaptisée wgpu::PopErrorScopeStatus::Error
(qui est également plus applicable). Le rappel inclut désormais également un message d'explication d'erreur correspondant pour faciliter le débogage. Consultez le problème 369.
Il ne s'agit là que de quelques-uns des points clés. Consultez la liste exhaustive des commits.
Nouveautés de WebGPU
Liste de tout ce qui a été abordé dans la série Nouveautés de WebGPU.
Chrome 136
- Attribut GPUAdapterInfo isFallbackAdapter
- Amélioration du temps de compilation des nuanceurs sur D3D12
- Enregistrer et copier des images de canevas
- Restrictions du mode de compatibilité Lift
- Informations sur Dawn
Chrome 135
- Autoriser la création d'une mise en forme de pipeline avec une mise en forme de groupe de liaison nulle
- Autoriser les vues d'affichage à s'étendre au-delà des limites des cibles de rendu
- Accès plus facile au mode de compatibilité expérimental sur Android
- Suppression de la limite maxInterStageShaderComponents
- Informations sur Dawn
Chrome 134
- Améliorer les charges de travail de machine learning avec des sous-groupes
- Suppression de la prise en charge des types de textures filtrables à virgule flottante comme mélangeables
- Informations sur Dawn
Chrome 133
- Formats de sommets unorm8x4-bgra et à un seul composant supplémentaires
- Autoriser les limites inconnues à être demandées avec une valeur non définie
- Modifications des règles d'alignement WGSL
- Amélioration des performances WGSL avec la suppression
- Utiliser la taille d'affichage VideoFrame pour les textures externes
- Gérer les images avec des orientations autres que par défaut à l'aide de copyExternalImageToTexture
- Améliorer l'expérience des développeurs
- Activer le mode de compatibilité avec featureLevel
- Nettoyage des fonctionnalités expérimentales des sous-groupes
- Abandon de la limite maxInterStageShaderComponents
- Informations sur Dawn
Chrome 132
- Utilisation de la vue Texture
- Mélange de textures à virgule flottante 32 bits
- Attribut adapterInfo de GPUDevice
- Configurer le contexte de canevas avec un format non valide génère une erreur JavaScript
- Filtrer les restrictions d'échantillonneur sur les textures
- Test étendu des sous-groupes
- Améliorer l'expérience des développeurs
- Compatibilité expérimentale avec les formats de texture normalisés 16 bits
- Informations sur Dawn
Chrome 131
- Couper les distances dans WGSL
- GPUCanvasContext getConfiguration()
- Les primitives de point et de ligne ne doivent pas comporter de biais de profondeur.
- Fonctions intégrées d'analyse inclusive pour les sous-groupes
- Compatibilité expérimentale avec le multi-dessin indirect
- Option de compilation du module de nuanceur : mathématiques strictes
- Suppression de la méthode requestAdapterInfo() de GPUAdapter
- Informations sur Dawn
Chrome 130
- Mélange de deux sources
- Améliorations du temps de compilation des nuanceurs sur Metal
- Obsolete de la méthode requestAdapterInfo() de GPUAdapter
- Informations sur Dawn
Chrome 129
- Compatibilité HDR avec le mode de mappage des tons du canevas
- Prise en charge des sous-groupes étendus
- Informations sur Dawn
Chrome 128
- Tester les sous-groupes
- Abandon du paramètre de biais de profondeur pour les lignes et les points
- Masquer l'avertissement DevTools d'erreur non capturée si preventDefault
- WGSL effectue d'abord l'interpolation de l'échantillonnage, puis
- Informations sur Dawn
Chrome 127
- Compatibilité expérimentale d'OpenGL ES sur Android
- Attribut info de GPUAdapter
- Améliorations de l'interopérabilité WebAssembly
- Amélioration des erreurs de l'encodeur de commandes
- Informations sur Dawn
Chrome 126
- Augmentation de la limite maxTextureArrayLayers
- Optimisation de l'importation de tampons pour le backend Vulkan
- Améliorations du temps de compilation des nuanceurs
- Les tampons de commande envoyés doivent être uniques
- Informations sur Dawn
Chrome 125
- Sous-groupes (fonctionnalité en cours de développement)
- Affichage d'une tranche de texture 3D
- Informations sur Dawn
Chrome 124
- Textures de stockage en lecture seule et en lecture/écriture
- Compatibilité avec les service workers et les workers partagés
- Nouveaux attributs d'informations sur l'adaptateur
- Corrections de bugs
- Informations sur Dawn
Chrome 123
- Compatibilité des fonctions intégrées DP4a avec WGSL
- Paramètres de pointeur non restreints dans WGSL
- Syntaxe simplifiée pour le déréférencement des composites en WGSL
- État en lecture seule distinct pour les aspects du pochoir et de la profondeur
- Informations sur Dawn
Chrome 122
- Élargir la couverture avec le mode de compatibilité (fonctionnalité en cours de développement)
- Augmentation de la limite maxVertexAttributes
- Informations sur Dawn
Chrome 121
- Compatibilité avec WebGPU sur Android
- Utiliser DXC au lieu de FXC pour la compilation de nuanceurs sous Windows
- Requêtes de code temporel dans les passes de calcul et de rendu
- Points d'entrée par défaut vers les modules de nuanceurs
- Compatibilité avec display-p3 en tant qu'espace de couleurs GPUExternalTexture
- Informations sur les tas de mémoire
- Informations sur Dawn
Chrome 120
- Compatibilité avec les valeurs à virgule flottante 16 bits dans WGSL
- Repousser les limites
- Modifications apportées à l'état du tampon de profondeur
- Modifications des informations sur les adaptateurs
- Quantification des requêtes d'horodatage
- Fonctionnalités de nettoyage de printemps
Chrome 119
- Textures à virgule flottante 32 bits filtrables
- Format de sommet unorm10-10-10-2
- Format de texture rgb10a2uint
- Informations sur Dawn
Chrome 118
- Compatibilité avec HTMLImageElement et ImageData dans
copyExternalImageToTexture()
- Compatibilité expérimentale avec la texture de stockage en lecture-écriture et en lecture seule
- Informations sur Dawn
Chrome 117
- Désactiver le tampon de sommets
- Désactiver le groupe de liaisons
- Ignorer les erreurs de création de pipeline asynchrone en cas de perte de l'appareil
- Mise à jour de la création de modules de nuanceurs SPIR-V
- Améliorer l'expérience des développeurs
- Mise en cache des pipelines avec une mise en page générée automatiquement
- Informations sur Dawn
Chrome 116
- Intégration de WebCodecs
- Appareil égaré renvoyé par GPUAdapter
requestDevice()
- Maintenir la fluidité de la lecture vidéo si
importExternalTexture()
est appelé - Conformité aux spécifications
- Améliorer l'expérience des développeurs
- Informations sur Dawn
Chrome 115
- Extensions de langage WGSL compatibles
- Compatibilité expérimentale avec Direct3D 11
- Obtenir un GPU distinct par défaut sur l'alimentation secteur
- Améliorer l'expérience des développeurs
- Informations sur Dawn
Chrome 114
- Optimiser JavaScript
- getCurrentTexture() sur un canevas non configuré génère une erreur InvalidStateError
- Mises à jour de WGSL
- Informations sur Dawn