Extensions de langage WGSL acceptées
Le membre wgslLanguageFeatures
de l'objet GPU
liste les noms des extensions de langage WGSL compatibles. Les extensions de langage WGSL compatibles sont automatiquement activées. Vous n'avez donc pas besoin d'en demander explicitement. Cette liste est actuellement vide, mais vous pouvez vous attendre à en voir beaucoup à l'avenir (par exemple, do-while loops
). Consultez issue dawn:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Compatibilité expérimentale avec Direct3D 11
L'équipe Chromium travaille à l'ajout de la compatibilité WebGPU pour Direct3D 11. Vous pouvez désormais l'expérimenter en local en exécutant Chrome sur Windows avec les indicateurs de ligne de commande --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Consultez le problème dawn:1705.
Obtenir un GPU discret par défaut sur secteur
Sur les appareils macOS à double GPU, si requestAdapter()
est appelé sans option powerPreference
, le GPU discret est renvoyé lorsque l'appareil de l'utilisateur est branché sur le secteur. Sinon, le GPU intégré est renvoyé. Consultez la modification 4499307.
Améliorer l'expérience des développeurs
Nouveaux avertissements dans les outils de développement
Si la clé depth
est utilisée dans un GPUExtend3DDict
, un avertissement s'affiche dans la console des outils de développement, car la clé correcte est depthOrArrayLayers
. Consultez le problème chromium:1440900.
Un avertissement s'affiche également si un GPUBlendComponent
comporte à la fois des membres explicites et des membres par défaut. Consultez le problème dawn:1785.
Bien que les distributions et les tirages de taille nulle soient valides, un avertissement encourage les développeurs à les éviter dans la mesure du possible. Consultez le problème dawn:1786.
Messages d'erreur améliorés
Un message d'erreur amélioré s'affiche désormais lorsque vous utilisez une GPUCommandEncoder
si finish()
a déjà été appelé. Voir issue dawn:1736.
Lorsque vous envoyez des tampons de commandes avec des objets détruits, les libellés des tampons de commandes utilisés dans submit()
sont désormais visibles dans le message d'erreur. Consultez le problème dawn:1747.
La partie non valide de l'état du stencil de profondeur est désormais spécifiée dans le message d'erreur lors de la validation de depthStencil
. Consultez le problème dawn:1735.
Le message d'erreur de validation minBindingSize
indique désormais le groupe et le numéro de la liaison dont la validation a échoué, ainsi que le tampon. Consultez le problème dawn:1604.
Les messages d'erreur renvoyés par la méthode mapAsync()
sur un objet GPUBuffer
ont été améliorés pour aider les développeurs lors du débogage. Consultez l'exemple ci-dessous et le problème chromium:1431622.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
Libellés dans les outils de débogage macOS
Le bouton bascule de débogage use_user_defined_labels_in_backend
vous permet de transférer les libellés d'objet au backend afin qu'ils puissent être vus dans des outils de débogage spécifiques à la plate-forme tels que RenderDoc, PIX ou Instruments. Désormais, vous bénéficiez d'une meilleure expérience de débogage sur macOS lorsque vous l'activez pour le débogage. Consultez le problème dawn:1784.

Enregistrer HLSL en cas d'échec de la compilation
Le bouton bascule de débogage dump_shaders
vous permet de consigner les nuanceurs WGSL d'entrée et les nuanceurs de backend traduits. Désormais, lorsque vous l'activez pour le débogage, le HLSL est vidé en cas d'échec de la compilation. Consultez le problème dawn:1681.
Mises à jour de l'Aube
Annuler la définition du tampon de sommets
Transmettre nullptr
plutôt qu'un wgpu::Buffer
à SetVertexBuffer()
sur wgpu::RenderPassEncoder
ou wgpu::RenderBundleEncoder
vous permet de supprimer un tampon de vertex précédemment défini dans un emplacement donné. Consultez le problème dawn:1675.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Pièces jointes temporaires
Vous pouvez créer des pièces jointes qui permettent aux opérations de passe de rendu de rester dans la mémoire des tuiles, ce qui évite le trafic VRAM et potentiellement l'allocation VRAM pour les textures en définissant l'utilisation wgpu::TextureUsage::TransientAttachment
. Cette fonctionnalité n'est disponible que pour Metal et Vulkan. Consultez le problème dawn: 1695.
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
Compiler sans depot_tools
Une nouvelle option CMake DAWN_FETCH_DEPENDENCIES
vous permet d'extraire les dépendances Dawn à l'aide d'un script Python qui lit les fichiers DEPS au lieu d'exiger l'installation de depot_tools
par tous les projets qui en dépendent. Consultez la modification 131750.
Nouveautés de WebGPU
Liste de tous les sujets abordés dans la série Nouveautés de WebGPU.
Chrome 140
- Les demandes d'appareils consomment l'adaptateur
- Raccourci pour utiliser une texture lorsqu'une vue de texture est utilisée
- WGSL textureSampleLevel prend en charge les textures 1D
- Abandon de l'utilisation de textures de stockage en lecture seule bgra8unorm
- Suppression de l'attribut GPUAdapter isFallbackAdapter
- Informations sur Dawn
Chrome 139
- Prise en charge des textures 3D pour les formats compressés BC et ASTC
- Nouvelle fonctionnalité "core-features-and-limits"
- Phase d'évaluation de l'origine pour le mode de compatibilité WebGPU
- Informations sur Dawn
Chrome 138
- Raccourci pour utiliser le tampon comme ressource de liaison
- Modifications des exigences de taille pour les tampons mappés lors de la création
- Rapport sur l'architecture des GPU récents
- Obsolescence de l'attribut GPUAdapter isFallbackAdapter
- Informations sur Dawn
Chrome 137
- Utiliser la vue de texture pour la liaison externalTexture
- Copier des tampons sans spécifier de décalages ni de taille
- WGSL workgroupUniformLoad utilisant un pointeur vers un atome
- Attribut powerPreference de GPUAdapterInfo
- Suppression de l'attribut compatibilityMode de GPURequestAdapterOptions
- Informations sur Dawn
Chrome 136
- Attribut GPUAdapterInfo isFallbackAdapter
- Améliorations du temps de compilation des nuanceurs sur D3D12
- Enregistrer et copier des images du canevas
- Restrictions du mode Compatibilité avec 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 liaisons nulle
- Autoriser les fenêtres d'affichage à s'étendre au-delà des limites des cibles de rendu
- Accès plus facile au mode de compatibilité expérimental sur Android
- Supprimer la limite maxInterStageShaderComponents
- Informations sur Dawn
Chrome 134
- Améliorer les charges de travail de machine learning avec des sous-groupes
- Supprimer la prise en charge des types de textures filtrables flottantes en tant que textures mélangeables
- Informations sur Dawn
Chrome 133
- Formats de vertex unorm8x4-bgra et à un seul composant supplémentaires
- Autoriser les limites inconnues à être demandées avec une valeur indéfinie
- Modifications des règles d'alignement WGSL
- Gains de performances WGSL avec "discard"
- Utiliser displaySize VideoFrame pour les textures externes
- Gérer les images avec des orientations non définies par défaut à l'aide de copyExternalImageToTexture
- Améliorer l'expérience des développeurs
- Activer le mode Compatibilité avec featureLevel
- Nettoyage des fonctionnalités expérimentales de sous-groupes
- Abandon de la limite maxInterStageShaderComponents
- Informations sur Dawn
Chrome 132
- Utilisation de la vue Texture
- Mélange de textures flottantes 32 bits
- Attribut adapterInfo de GPUDevice
- La configuration du contexte du canevas avec un format non valide génère une erreur JavaScript
- Restrictions du filtreur d'échantillonneur sur les textures
- Tests étendus des sous-groupes
- Améliorer l'expérience des développeurs
- Prise en charge expérimentale des formats de texture normalisés 16 bits
- Informations sur Dawn
Chrome 131
- Distances de clipping dans WGSL
- GPUCanvasContext getConfiguration()
- Les primitives de points et de lignes ne doivent pas avoir de biais de profondeur
- Fonctions intégrées d'analyse inclusive pour les sous-groupes
- Compatibilité expérimentale avec le dessin indirect multiple
- Option de compilation du module de nuanceur "strict math"
- Suppression de GPUAdapter requestAdapterInfo()
- Informations sur Dawn
Chrome 130
- Combinaison de deux sources
- Amélioration du temps de compilation des nuanceurs sur Metal
- Obsolescence de GPUAdapter requestAdapterInfo()
- Informations sur Dawn
Chrome 129
- Compatibilité HDR avec le mode de mappage des tons du canevas
- Prise en charge étendue des sous-groupes
- Informations sur Dawn
Chrome 128
- Tester les sous-groupes
- Obsolète : définir le biais de profondeur pour les lignes et les points
- Masquer l'avertissement d'erreur non capturée dans les outils pour les développeurs si preventDefault
- WGSL interpolate sampling first and either
- Informations sur Dawn
Chrome 127
- Prise en charge expérimentale d'OpenGL ES sur Android
- Attribut info de GPUAdapter
- Améliorations de l'interopérabilité WebAssembly
- Amélioration des erreurs d'encodeur de commandes
- Informations sur Dawn
Chrome 126
- Augmenter la limite maxTextureArrayLayers
- Optimisation de l'importation de tampon pour le backend Vulkan
- Améliorations du temps de compilation des nuanceurs
- Les tampons de commandes envoyés doivent être uniques
- Informations sur Dawn
Chrome 125
- Sous-groupes (fonction en cours de développement)
- Afficher dans 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 shared workers
- Nouveaux attributs d'informations sur l'adaptateur
- Corrections de bugs
- Informations sur Dawn
Chrome 123
- Compatibilité des fonctions intégrées DP4a dans WGSL
- Paramètres de pointeur non restreints dans WGSL
- Sucre syntaxique pour la déréférence des composites dans WGSL
- État de lecture seule distinct pour les aspects de pochoir et de profondeur
- Informations sur Dawn
Chrome 122
- Élargir votre couverture avec le mode de compatibilité (fonctionnalité en cours de développement)
- Augmenter la limite maxVertexAttributes
- Informations sur Dawn
Chrome 121
- Assistance pour WebGPU sur Android
- Utiliser DXC au lieu de FXC pour la compilation des nuanceurs sur Windows
- Requêtes de code temporel dans les passes de calcul et de rendu
- Points d'entrée par défaut des modules de nuanceur
- Prise en charge de display-p3 en tant qu'espace colorimétrique 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 de profondeur/stencil
- Mise à jour des informations sur l'adaptateur
- Quantification des requêtes d'horodatage
- Fonctionnalités de nettoyage de printemps
Chrome 119
- Textures flottantes de 32 bits filtrables
- Format de vertex unorm10-10-10-2
- Format de texture rgb10a2uint
- Informations sur Dawn
Chrome 118
- Compatibilité avec HTMLImageElement et ImageData dans
copyExternalImageToTexture()
- Prise en charge expérimentale des textures de stockage en lecture/écriture et en lecture seule
- Informations sur Dawn
Chrome 117
- Désactiver le tampon de vertex
- Supprimer le groupe de liaisons
- Masquer les erreurs liées à la création de pipelines asynchrones lorsque l'appareil est perdu
- Modifications apportées à la création de modules de nuanceur SPIR-V
- Améliorer l'expérience des développeurs
- Pipelines de mise en cache avec mise en page générée automatiquement
- Informations sur Dawn
Chrome 116
- Intégration de WebCodecs
- Appareil égaré renvoyé par GPUAdapter
requestDevice()
- Lecture vidéo fluide si
importExternalTexture()
est appelé - Conformité des spécifications
- Améliorer l'expérience des développeurs
- Informations sur Dawn
Chrome 115
- Extensions de langage WGSL acceptées
- Compatibilité expérimentale avec Direct3D 11
- Obtenir un GPU discret par défaut sur secteur
- Améliorer l'expérience des développeurs
- Informations sur Dawn
Chrome 114
- Optimize JavaScript
- getCurrentTexture() sur un canevas non configuré génère une erreur InvalidStateError
- Mises à jour de WGSL
- Informations sur Dawn