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 langage WGSL compatibles sont automatiquement activées. Vous n'avez donc pas besoin d'en demander une explicitement. Cette liste est vide pour le moment, mais vous devriez en recevoir beaucoup à l'avenir (par exemple, do-while loops
). Voir 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 actuellement à la compatibilité de WebGPU avec Direct3D 11. Vous pouvez maintenant le tester en local en exécutant Chrome sous Windows à l'aide des options de ligne de commande --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Voir issue dawn:1705
Utiliser un GPU distinct par défaut sur secteur
Sur les appareils macOS à deux GPU, si requestAdapter()
est appelé sans l'option powerPreference
, le GPU distinct est renvoyé lorsque l'appareil de l'utilisateur est branché sur 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 est également déclenché si un GPUBlendComponent
contient à la fois des membres explicites et par défaut. Voir issue dawn:1785.
Même si les envois et les tirages de taille nulle sont valides, un avertissement encourage les développeurs à les éviter lorsque cela est possible. Voir issue dawn:1786.
Amélioration des messages d'erreur
Un message d'erreur amélioré est désormais 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 étiquettes 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 désormais le groupe et le numéro de la liaison qui a échoué à la validation, 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 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);
}
Étiquettes dans les outils de débogage macOS
Le bouton d'activation/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, vous bénéficierez d'une meilleure expérience de débogage sous macOS lorsque vous l'activerez pour le débogage. Voir le problème dawn:1784
Consigner le HLSL si la compilation échoue
Le bouton d'activation/de désactivation du 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'activerez pour le débogage, le HLSL sera vidé si sa compilation échoue. Voir issue dawn:1681
Actualités 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 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 rattachements qui permettent aux opérations de carte de rendu de rester dans la mémoire des cartes, en évitant le trafic de la VRAM et potentiellement l'allocation de la VRAM pour les textures en définissant l'utilisation de wgpu::TextureUsage::TransientAttachment
. Cette fonctionnalité n'est disponible que pour 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.
Bâtiment 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 de nécessiter 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 128
- Tester avec des sous-groupes
- Abandon de la définition du biais de profondeur pour les lignes et les points
- Masquer l'avertissement d'erreur non capturée dans les outils de développement si preventDefault
- WGSL interpole d'abord l'échantillonnage, puis
- Informations sur l'aube
Chrome 127
- Compatibilité expérimentale avec OpenGL ES sur Android
- Attribut d'informations GPUAdapter
- Améliorations de l'interopérabilité de WebAssembly
- Amélioration des erreurs liées à l'encodeur de commande
- Informations sur l'aube
Chrome 126
- Augmentation de la limite maxTextureArrayLayers
- Optimisation de l'importation de tampon pour le backend Vulkan
- Amélioration du temps de compilation des nuanceurs
- Les tampons de commande envoyés doivent être uniques
- Informations sur l'aube
Chrome 125
- Sous-groupes (fonctionnalité en cours de développement)
- Effectuer le rendu d'une tranche de texture 3D
- Informations sur 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 sur l'aube
Chrome 123
- Fonctions intégrées DP4a dans WGSL
- Paramètres de pointeur sans restriction 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 l'aube
Chrome 122
- Élargir la couverture avec le mode de compatibilité (fonctionnalité en développement)
- Augmenter la limite maximale de VertexAttributes
- Informations sur l'aube
Chrome 121
- Compatibilité avec WebGPU sur Android
- Utiliser DXC au lieu de FXC pour la compilation du nuanceur sous Windows
- Requêtes d'horodatage dans les passes de calcul et de rendu
- Points d'entrée par défaut des modules de nuanceurs
- Prise en charge de display-p3 en tant qu'espace colorimétrique GPUExternalTexture
- Informations sur les tas de mémoire
- Informations sur l'aube
Chrome 120
- Compatibilité avec les valeurs à virgule flottante 16 bits dans WGSL
- Repoussez les limites
- Modifications apportées à l'état de profondeur au stencil
- Mises à jour des informations sur l'adaptateur
- Quantification des requêtes d'horodatage
- Fonctionnalités de nettoyage de printemps
Chrome 119
- Textures de float 32 bits filtrables
- Format de sommet unorm10-10-10-2
- rgb10a2uint format de texture
- Informations sur l'aube
Chrome 118
- Compatibilité avec HTMLImageElement et ImageData dans
copyExternalImageToTexture()
- Compatibilité expérimentale avec les textures de stockage en lecture/écriture et en lecture seule
- Informations sur l'aube
Chrome 117
- Tampon de sommets non défini
- Désactiver le groupe de liaisons
- Couper le son des erreurs liées à la création d'un pipeline asynchrone en cas de perte de l'appareil
- Modifications 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 sur l'aube
Chrome 116
- Intégration de WebCodecs
- Appareil perdu renvoyé par GPUAdapter
requestDevice()
- Maintenir une lecture vidéo fluide si
importExternalTexture()
est appelé - Conformité des spécifications
- Améliorer l'expérience des développeurs
- Informations sur 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 sur l'aube
Chrome 114
- Optimiser JavaScript
- getCurrentTexture() sur un canevas non configuré génère InvalidStateError
- Informations concernant WGSL
- Informations sur l'aube