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 możesz się spodziewać wielu takich list w przyszłości (np. do-while loops
). Zobacz problem świt:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Eksperymentalna obsługa interfejsu Direct3D 11
Zespół Chromium pracuje nad dodaniem obsługi WebGPU dla interfejsu Direct3D 11. Możesz teraz eksperymentować z nimi lokalnie – wystarczy uruchomić Chrome w systemie Windows z flagami wiersza poleceń --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Zobacz problem świt:1705.
Domyślnie dyskretny GPU przy zasilaniu sieciowym
Na urządzeniach z 2 procesorami graficznymi z macOS, jeśli usługa requestAdapter()
jest wywoływana bez opcji powerPreference
, dyskretny GPU jest zwracany, gdy urządzenie użytkownika jest podłączone do zasilania. W przeciwnym razie zwracany jest zintegrowany GPU. Zobacz zmianę 4499307.
Poprawianie wrażeń deweloperów
Nowe ostrzeżenia w Narzędziach deweloperskich
Jeśli w polu GPUExtend3DDict
używany jest klucz depth
, w konsoli Narzędzi deweloperskich wyświetla się ostrzeżenie, ponieważ poprawny klucz to depthOrArrayLayers
. Zobacz problem chromium:1440900.
Ostrzeżenie pojawia się też wtedy, gdy GPUBlendComponent
zawiera zarówno użytkowników wulgarnych, jak i domyślnych. Zapoznaj się z problemem świt:1785.
Chociaż przesyłanie i losowania o zerowym rozmiarze są prawidłowe, deweloperzy mają ostrzeżenie zachęcone do ich unikania, gdy to możliwe. Zapoznaj się z problemem świt: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 problem świt:1736.
Podczas przesyłania buforów poleceń ze zniszczonymi obiektami etykiety buforów poleceń używanych w narzędziu submit()
są teraz widoczne w komunikacie o błędzie. Zapoznaj się z problemem świt:1747.
Podczas weryfikacji depthStencil
w komunikacie o błędzie jest teraz określona nieprawidłowa część stanu szablonu głębi. Zobacz problem świt: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 problem: świt:1604.
Komunikaty o błędach zwracane przez metodę mapAsync()
w obiekcie GPUBuffer
zostały ulepszone, aby ułatwić deweloperom debugowanie. Zobacz przykład poniżej i sprawdź problem z 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 do debugowania systemu macOS
Przełącznik debugowania w usłudze use_user_defined_labels_in_backend
umożliwia przekazywanie etykiet obiektów do backendu, aby można je było wyświetlać w narzędziach do debugowania związanych z konkretną platformą, takich jak RenderDoc, PIX czy Instruments. Od teraz, gdy włączysz debugowanie w systemie macOS, będziesz mieć dostęp do lepszych funkcji debugowania. Zobacz problem o świcie:1784
![Zrzut ekranu aplikacji Instruments na urządzeniu z macOS z etykietami własnymi pochodzącymi z WebGPU.](https://developer.chrome.com/static/blog/new-in-webgpu-115/image/screenshot-instruments-a-75d5272ed4ccf.png?authuser=7&hl=pl)
Rejestruj HLSL, jeśli kompilacja się nie uda
Przełącznik debugowania w trybie dump_shaders
umożliwia rejestrowanie wejściowych cieniowania WGSL i tłumaczonych backendów cieniowania. Od tej pory, gdy włączysz ją do debugowania, plik HLSL będzie zrzucany, jeśli kompilacja się nie uda. Zobacz problem o świcie:1681
Aktualizacje o świcie
Nieskonfigurowany bufor wierzchołków
Przekazanie nullptr
zamiast wgpu::Buffer
na SetVertexBuffer()
na wgpu::RenderPassEncoder
lub wgpu::RenderBundleEncoder
umożliwia cofnięcie ustawionego wcześniej bufora wierzchołków w danym boksie. Zapoznaj się z problemem świt:1675.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Przyłącza tymczasowe
Możesz tworzyć załączniki, które pozwalają na pozostawienie operacji renderowania w pamięci kafelków w pamięci kafelków, co pozwala uniknąć ruchu VRAM i potencjalnie omijania alokacji VRAM dla tekstur przez ustawienie użycia funkcji wgpu::TextureUsage::TransientAttachment
. Ta funkcja jest obsługiwana tylko w przypadku Metal i Vulkan. Zobacz problem: 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 wszystkiego, co zostało omówione w serii Co nowego w WebGPU.
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o karcie GPU
- Ulepszenia współpracy WebAssembly
- Poprawione błędy kodera poleceń
- Informacje o świcie
Chrome 126
- Zwiększanie limitu maxTextureSlateWarstwy
- Optymalizacja przesyłania buforów w backendzie Vulkan
- Skrócony czas kompilacji shadera
- Przesłane bufory poleceń muszą być unikalne
- Informacje o świcie
Chrome 125
Chrome 124
- Tekstury pamięci masowej przeznaczone tylko do odczytu oraz do odczytu i zapisu
- Obsługa pracowników Service Worker i pracowników współużytkowanych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów.
- Informacje o świcie
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Składnikowy cukier do dereferencji elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu w przypadku elementów związanych z szablonem i głębią
- Informacje o świcie
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w fazie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Informacje o świcie
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania danych do cieniowania w systemie Windows
- Zapytania dotyczące sygnatury czasowej w kartach obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługuj display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o stertach pamięci
- Informacje o świcie
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przesuwaj granice
- Zmiany stanu szablonu z głębokością
- Aktualizacje informacji o karcie
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje sprzątania przed wiosną
Chrome 119
- Filtrowalne 32-bitowe tekstury zmiennoprzecinkowe
- format wierzchołkowy unorm10-10-10-2
- Format tekstury rgb10a2uint
- Informacje o świcie
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci do odczytu i zapisu oraz tylko do odczytu
- Informacje o świcie
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- Nieskonfigurowana grupa powiązań
- Wyciszaj błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Zmiany związane z tworzeniem modułu cieniowania SPIR-V
- Polepszanie obsługi dla programistów
- Potoki pamięci podręcznej z układem generowanym automatycznie
- Informacje o świcie
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice()
- Odtwarzaj płynnie po wywołaniu
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Domyślnie używaj dyskretnego GPU przy zasilaniu sieciowym
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 114
- Optymalizacja JavaScriptu
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym powoduje zgłoszenie nieprawidłowego stanu błędu
- Aktualizacje WGSL
- Informacje o świcie