Extensions de langage WGSL compatibles
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 une explicitement. Cette liste est actuellement vide, mais vous pouvez vous attendre à de nombreuses autres (do-while loops
, par exemple). Consultez l'article dawn:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Prise en charge expérimentale de Direct3D 11
L'équipe Chromium travaille à la prise en charge de WebGPU pour Direct3D 11. Vous pouvez désormais l'essayer en local en exécutant Chrome sur Windows avec les indicateurs de ligne de commande --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Voir le problème dawn:1705.
Obtenir un GPU distinct par défaut sur une alimentation 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 alimenté par courant alternatif. 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 DevTools, car la clé appropriée est depthOrArrayLayers
. Consultez le problème chromium:1440900.
Un avertissement est également déclenché si un GPUBlendComponent
contient à la fois des membres explicites et par défaut. Voir le problème dawn:1785.
Même si les distributions et les dessins de taille nulle sont valides, un avertissement encourage les développeurs à les éviter dans la mesure du possible. Voir le problème dawn:1786.
Amélioration des messages d'erreur
Un message d'erreur amélioré est désormais fourni lorsque vous utilisez une GPUCommandEncoder
si finish()
a déjà été appelé. Voir problème 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. Voir issue dawn:1747.
La partie non valide de l'état du tampon de profondeur est désormais spécifiée dans le message d'erreur lors de la validation de depthStencil
. Voir le problème dawn:1735.
Le message d'erreur de validation minBindingSize
indique désormais le groupe et le numéro de la liaison qui a échoué à la validation, ainsi que le tampon. Voir 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 d'activation/de désactivation du débogage use_user_defined_labels_in_backend
vous permet de transférer les étiquettes d'objets au backend afin qu'elles soient visibles dans les outils de débogage spécifiques à la plate-forme tels que RenderDoc, PIX ou Instruments. Désormais, une meilleure expérience de débogage est proposée sur macOS lorsque vous l'activez pour le débogage. Voir issue dawn:1784
Enregistrer le HLSL en cas d'échec de la compilation
Le bouton 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 code HLSL est généré si la compilation échoue. Voir le problème dawn:1681
Actualités de l'aube
Définir le tampon de sommets
Transmettre nullptr
plutôt qu'un wgpu::Buffer
à SetVertexBuffer()
sur wgpu::RenderPassEncoder
ou wgpu::RenderBundleEncoder
vous permet d'annuler la définition d'un tampon de sommets précédemment défini dans un emplacement donné. Voir 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);
Rattachements temporaires
Vous pouvez créer des pièces jointes qui permettent aux opérations de passage de rendu de rester dans la mémoire de tuile, ce qui évite le trafic VRAM et, potentiellement, l'allocation de VRAM pour les textures en définissant l'utilisation de wgpu::TextureUsage::TransientAttachment
. Cette fonctionnalité n'est compatible qu'avec Metal et Vulkan. Voir 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.
Compilation sans depot_tools
Une nouvelle option CMake DAWN_FETCH_DEPENDENCIES
vous permet de récupérer 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 131
- Couper les distances en 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 stricte
- Suppression de la méthode requestAdapterInfo() de GPUAdapter
- Informations sur l'aube
Chrome 130
- Combinaison de source double
- 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 de la définition du 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 liées à l'encodeur de commande
- 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 sucré pour déréférencer les composites dans WGSL
- État de lecture seule distinct pour les aspects de pochoir et de profondeur
- Informations sur Dawn
Chrome 122
- Élargir la couverture avec le mode de compatibilité (fonctionnalité en 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
- Mises à jour des informations sur l'adaptateur
- 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
- rgb10a2uint format de texture
- 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
- Mettre en cache des pipelines avec une mise en page générée automatiquement
- Informations sur l'aube
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 acceptées
- 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 InvalidStateError
- Mises à jour de WGSL
- Informations sur l'aube