Extensions de langage WGSL compatibles
Le membre wgslLanguageFeatures
de l'objet GPU
répertorie les noms des extensions de langue WGSL compatibles. Les extensions de langue WGSL compatibles sont automatiquement activées. Vous n'avez donc pas besoin d'en demander explicitement une. Cette liste est actuellement vide, mais vous devriez en recevoir un grand nombre à 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 sur la prise en charge de WebGPU pour Direct3D 11. Vous pouvez maintenant tester cette fonctionnalité en local en exécutant Chrome sous Windows avec les indicateurs de ligne de commande --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Voir issue dawn:1705.
Obtenir un GPU distinct par défaut sur secteur
Sur les appareils macOS à deux GPU, si requestAdapter()
est appelé sans option powerPreference
, le GPU distinct est renvoyé lorsque l'appareil de l'utilisateur est sur secteur. Sinon, le GPU intégré est renvoyé. Voir 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 problème chromium:1440900.
Un avertissement est également généré si une GPUBlendComponent
contient à la fois des membres explicites et des membres par défaut. Voir issue dawn:1785.
Même si les envois et draws de taille zéro sont valides, un avertissement encourage les développeurs à les éviter dans la mesure du possible. Voir issue dawn:1786.
Messages d'erreur améliorés
Amélioration du message d'erreur fourni lors de l'utilisation d'un GPUCommandEncoder
si finish()
a déjà été appelé. Voir issue dawn:1736.
Lors de l'envoi de tampons de commande avec des objets détruits, les libellés des tampons de commande 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 pochoir de profondeur est désormais spécifiée dans le message d'erreur lors de la validation de depthStencil
. Voir issue dawn:1735.
Le message d'erreur de validation minBindingSize
indique maintenant le groupe et le numéro de la liaison dont la validation a échoué, ainsi que le tampon. Voir issue 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 envoyez 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);
}
Étiquettes dans les outils de débogage macOS
L'option de débogage use_user_defined_labels_in_backend
vous permet de transférer les libellés d'objets au backend afin qu'ils soient visibles dans les outils de débogage spécifiques à la plate-forme, tels que RenderDoc, PIX ou Instruments. À partir de maintenant, l'activation du débogage offre une meilleure expérience de débogage sous macOS. Voir problème aube 1784.
Enregistrer le HLSL en cas d'échec de la compilation
L'option de débogage dump_shaders
vous permet de consigner les nuanceurs WGSL d'entrée et les nuanceurs backend traduits. À partir de maintenant, lorsque vous l'activerez pour le débogage, le HLSL sera vidé en cas d'échec de la compilation. Consultez issue dawn:1681.
Mises à jour de l'aube
Désactiver le tampon des sommets
La transmission de nullptr
au lieu d'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 issue 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 passe de rendu de rester dans la mémoire des tuiles, ce qui permet d'éviter 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 issue 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.
Bâtiment 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 de devoir installer depot_tools
par tous les projets qui en dépendent. Voir la modification 131750.
Nouveautés de WebGPU
Liste des points abordés dans la série Nouveautés de WebGPU.
Chrome 125
- Sous-groupes (fonctionnalité en cours de développement)
- Effectuer le rendu sur une tranche de texture 3D
- Informations dès l'aube
Chrome 124
- Textures de stockage en lecture seule et en lecture/écriture
- Assistance pour les service workers et les workers partagés
- Nouveaux attributs d'informations sur l'adaptateur
- Corrections de bugs
- Informations dès l'aube
Chrome 123
- Compatibilité des fonctions intégrées DP4a en WGSL
- Paramètres de pointeur non restreints dans WGSL
- Sucre syntaxique pour déréférencer des composites en WGSL
- État en lecture seule distinct pour les aspects du pochoir et de la profondeur
- Informations dès l'aube
Chrome 122
- Élargir la couverture grâce au mode de compatibilité (fonctionnalité en développement)
- Augmenter la limite maxVertexAttributes
- Informations dès l'aube
Chrome 121
- Prendre en charge WebGPU sur Android
- Utiliser DXC au lieu de FXC pour la compilation de nuanceurs sous Windows
- Horodatage des requêtes dans les passes de calcul et de rendu
- Points d'entrée par défaut des modules de nuanceurs
- Prendre en charge display-p3 en tant qu'espace colorimétrique GPUExternalTexture
- Informations sur les segments de mémoire
- Informations dès l'aube
Chrome 120
- Compatibilité avec les valeurs à virgule flottante 16 bits dans WGSL
- Repoussez les limites
- Modifications de l'état du pochoir de profondeur
- Mises à jour des informations concernant l'adaptateur
- Quantification des requêtes d'horodatage
- Fonctionnalités de nettoyage de printemps
Chrome 119
- Textures flottantes 32 bits filtrables
- Format des sommets unorm10-10-10-2
- format de texture rgb10a2uint
- Informations dès l'aube
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 dès l'aube
Chrome 117
- Tampon des sommets non défini
- Groupe de liaisons non défini
- Couper le son des erreurs lors de la création asynchrone d'un pipeline en cas de perte d'un appareil
- Mises à jour apportées à la création du module de nuanceur 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 dès l'aube
Chrome 116
- Intégration de WebCodecs
- Appareil perdu renvoyé par GPUAdapter
requestDevice()
- Assurer une lecture vidéo fluide si
importExternalTexture()
est appelé - Conformité aux spécifications
- Améliorer l'expérience des développeurs
- Informations dès l'aube
Chrome 115
- Extensions de langage WGSL compatibles
- Compatibilité expérimentale avec Direct3D 11
- Utiliser un GPU distinct par défaut sur secteur
- Améliorer l'expérience des développeurs
- Informations dès l'aube
Chrome 114
- Optimiser JavaScript
- getCurrentTexture() sur un canevas non configuré génère une erreur InvalidStateError
- Mises à jour WGSL
- Informations dès l'aube