Obsługiwane rozszerzenia języka WGSL
Element wgslLanguageFeatures
obiektu GPU
zawiera listę nazw obsługiwanych rozszerzeń językowych WGSL. Obsługiwane rozszerzenia językowe WGSL są włączane automatycznie, więc nie musisz ich wyraź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 Direct3D 11. Możesz teraz eksperymentować z tą funkcją lokalnie, uruchamiając Chrome w Windows z flagami wiersza poleceń --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Zobacz issue dawn:1705.
Domyślnie używaj osobnego procesora graficznego na zasilaniu z sieci
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ż, gdy GPUBlendComponent
zawiera zarówno użytkowników, którzy mają ustawione domyślne, jak i wyraźne adresy e-mail. Zobacz issue dawn:1785.
Mimo że wysyłanie i wybieranie danych o rozmiarze 0 jest prawidłowe, wyświetlane jest ostrzeżenie, które zachęca deweloperów do unikania takich sytuacji. Zobacz issue dawn:1786.
ulepszone komunikaty o błędach.
Używając funkcji GPUCommandEncoder
, otrzymasz teraz ulepszony komunikat o błędzie, jeśli funkcja finish()
została już wywołana. 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. Zobacz issue dawn: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 informacje o grupie i numerze powiązania, które nie przeszło weryfikacji, a także o buforze. Zobacz issue dawn:1604.
Aby ułatwić deweloperom debugowanie, ulepszono komunikaty o błędach zwracane przez metodę mapAsync()
obiektu GPUBuffer
. 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, będziesz mieć lepszy dostęp do funkcji debugowania na komputerze Mac. Zobacz issue dawn:1784
W przypadku niepowodzenia kompilacji zapisz plik HLS
Przełącznik debugowania dump_shaders
umożliwia rejestrowanie shaderów wejściowych WGSL i przetłumaczonych shaderów backendu. Od teraz, gdy włączysz tę opcję na potrzeby debugowania, kod HLSL zostanie zdumpowany, jeśli nie uda się go skompilować. Zobacz issue dawn:1681
Aktualizacje świtu
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 pozwalają operacjom na renderowaniu pozostać w pamięci kafelków, unikając ruchu VRAM i potencjalnie unikając przydzielania VRAM dla tekstur przez ustawienie użycia 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.
Budowanie bez depot_tools
Nowa opcja CMake 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 z nich korzystają. 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
- Dodanie eksperymentalnej obsługi pośrednich metod wielokrokowego rysowania
- 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
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 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 GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodowania poleceń
- Aktualizacje dotyczące Dawn
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 i współużytkowników
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Aktualizacje dotyczące Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Parametry wskaźnika bez ograniczeń w WGSL
- Składnia cukrowa do odwoływania się do elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla stempli i aspektów głębi
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększenie zasięgu dzięki trybowi zgodności (funkcja w trakcie tworzenia)
- Zwiększenie 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ługa przestrzeni barw display-p3 jako przestrzeni barw GPUExternalTexture
- Informacje o kupach pamięci
- Aktualizacje dotyczące Dawn
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
- 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
- Nieustawienie bufora wierzchołka
- 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
- Skuteczne wykorzystanie pamięci podręcznej dzięki automatycznie generowanemu układowi
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie 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ęzykowe WGSL
- Wstępna obsługa Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie na zasilaniu z sieci
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn