Obsługiwane rozszerzenia języka WGSL
Element wgslLanguageFeatures
obiektu GPU
zawiera listę nazw obsługiwanych rozszerzeń języka WGSL. Obsługiwane rozszerzenia językowe WGSL są włączane automatycznie, więc nie trzeba o nie prosić. Ta lista jest obecnie pusta, ale w przyszłości możesz się spodziewać wielu takich problemów (np. do-while loops
). Zobacz issue dawn:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Eksperymentalna obsługa Direct3D 11
Zespół Chromium pracuje nad dodaniem obsługi WebGPU dla interfejsu Direct3D 11. Możesz teraz eksperymentować z tą funkcją lokalnie, uruchamiając Chrome na komputerze z Windows z flagami wiersza poleceń --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Zobacz issue dawn:1705.
Domyślnie dyskretny GPU przy zasilaniu sieciowym
Na urządzeniach z systemem macOS z podwójnym procesorem graficznym, jeśli wywołanie requestAdapter()
nie zawiera opcji powerPreference
, zwracany jest procesor graficzny z oddzielną pamięcią, gdy urządzenie użytkownika jest zasilane z sieci. W przeciwnym razie zwracany jest zintegrowany procesor graficzny. Zobacz zmianę 4499307.
Ulepszenie środowiska programisty
Nowe ostrzeżenia w Narzędziach deweloperskich
Jeśli w elementach GPUExtend3DDict
jest używany klucz depth
, w konsoli Narzędzia deweloperskie wyświetla się ostrzeżenie, ponieważ poprawnym kluczem jest depthOrArrayLayers
. Zobacz problem chromium:1440900.
Ostrzeżenie pojawia się też wtedy, gdy GPUBlendComponent
zawiera zarówno użytkowników wulgarnych, jak i domyślnych. Zobacz issue dawn:1785.
Mimo że wysyłanie i wybieranie danych o rozmiarze 0 jest prawidłowe, wyświetlane jest ostrzeżenie, aby zachęcić deweloperów do unikania takich sytuacji. Zobacz issue dawn:1786.
Lepsze komunikaty o błędach
Jeśli używasz już funkcji GPUCommandEncoder
, jeśli aplikacja finish()
została już wywołana, wyświetlany jest ulepszony komunikat o błędzie. Zobacz issue dawn:1736.
Podczas przesyłania zasobników poleceń z zniszczonymi obiektami etykiety zasobników poleceń, które były używane w submit()
, są teraz widoczne w komunikacie o błędzie. Zapoznaj się z problemem świt:1747.
Nieprawidłowa część stanu szablonu głębi jest teraz określana w komunikacie o błędzie podczas weryfikacji depthStencil
. Zobacz issue dawn:1735.
Komunikat o błędzie weryfikacji minBindingSize
zawiera teraz grupę i numer powiązania, które nie udało się zweryfikować, a także bufor. Zobacz issue dawn:1604.
Komunikaty o błędach zwracane przez metodę mapAsync()
w obiekcie GPUBuffer
zostały ulepszone, aby ułatwić deweloperom debugowanie. Poniżej znajdziesz przykład i problem 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);
}
Etykiety w narzędziach debugowania w systemie macOS
Przełącznik debugowania use_user_defined_labels_in_backend
umożliwia przekierowywanie etykiet obiektów do backendu, aby były widoczne w narzędziach debugowania dla poszczególnych platform, takich jak RenderDoc, PIX czy Instruments. Od teraz, gdy włączysz debugowanie w systemie macOS, będziesz mieć lepsze możliwości debugowania. Zobacz problem o świcie:1784
W przypadku niepowodzenia kompilacji zapisz plik HLS
Przełącznik debugowania w trybie dump_shaders
umożliwia rejestrowanie wejściowych cieniowania WGSL i tłumaczonych backendów cieniowania. Od teraz, gdy włączysz tę opcję na potrzeby debugowania, kod HLSL zostanie zdumpowany, jeśli nie uda się go skompilować. Zobacz problem o świcie:1681
Aktualizacje o świcie
Nieskonfigurowany bufor wierzchołka
Przekazywanie wartości nullptr
zamiast wgpu::Buffer
do funkcji SetVertexBuffer()
w funkcji wgpu::RenderPassEncoder
lub wgpu::RenderBundleEncoder
umożliwia zresetowanie wcześniej ustawionego bufora wierzchołków w danym gnieździe. Zobacz 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);
Załączniki przejściowe
Możesz tworzyć załączniki, które umożliwiają operacjom na renderowaniu pozostawanie w pamięci płytek, unikając ruchu VRAM i możliwie przydzielanie VRAM do tekstur, ustawiając użycie wgpu::TextureUsage::TransientAttachment
. Ta funkcja jest obsługiwana tylko w przypadku Metal i Vulkan. Zobacz problem 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.
Budynek bez depot_tools
Nowa opcja CMake w DAWN_FETCH_DEPENDENCIES
umożliwia pobieranie zależności Dawn za pomocą skryptu Pythona, który odczytuje pliki DEPS, zamiast wymagać instalacji depot_tools
we wszystkich projektach, które od niego zależą. Zobacz zmianę 131750.
Co nowego w WebGPU
Lista wszystkich tematów omawianych w cyklu Co nowego w WebGPU.
Chrome 131
- Odcinki odległości w WGSL
- GPUCanvasContext getConfiguration()
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie z uwzględnieniem wszystkich grup
- Eksperymentalna obsługa wielu rysowań pośrednich
- Opcja kompilacji modułu shadera: ścisła matematyka
- Usuwanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 130
- Mieszanie dwóch źródeł
- Skrócenie czasu kompilacji shaderów na Metalu
- Wycofanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR w trybie mapowania tonacji obrazu
- Rozszerzona obsługa podgrup
- Aktualizacje dotyczące Dawn
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie obsługi ustawiania głębi dla linii i punktów
- Ukrywanie ostrzeżenia DevTools o nieuwzględnionym błędzie, jeśli wywołano funkcję preventDefault
- WGSL interpoluje próbkowanie najpierw i potem
- Aktualizacje dotyczące Dawn
Chrome 127
- Doświadczalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o karcie GPU
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodera poleceń
- Informacje o świcie
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora dla backendu Vulkana
- Ulepszenia dotyczące czasu kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie tworzenia)
- Renderowanie na potrzeby wycinka tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników usług i pracowników wspólnych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów.
- Informacje o świcie
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Składnia cukrowa do odwoływania się do elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu w przypadku elementów związanych z szablonem i głębią
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększenie zasięgu dzięki trybowi zgodności (funkcja w trakcie tworzenia)
- Zwiększanie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania shaderów w systemie Windows
- Zapytania o sygnatury czasowe w przelotach obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów shaderów
- Obsługuj display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o kupach pamięci
- Informacje o świcie
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie limitów
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Filtrowane tekstury 32-bitowe zmiennoprzecinkowe
- Format wierzchołka unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Dodatkowa obsługa tekstury pamięci tylko do odczytu i z możliwością zapisu
- Aktualizacje dotyczące Dawn
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- Cofnij grupę wiązania
- Błędy w przypadku tworzenia asynchronicznego potoku, gdy urządzenie jest utracone
- Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V
- Ułatwienie pracy programistom
- Przetwarzanie za pomocą przepływów z automatycznie wygenerowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Urządzenie zgubione zwrócone przez GPUAdapter
requestDevice()
- Utrzymanie płynnego odtwarzania filmu, jeśli wywołana zostanie funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie na zasilaniu z sieci
- Polepszanie wrażeń programistów
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn