Obsługiwane rozszerzenia języka WGSL
Element wgslLanguageFeatures
obiektu GPU
zawiera nazwy obsługiwanych rozszerzeń języka WGSL. Obsługiwane rozszerzenia języka WGSL są włączane automatycznie, więc nie musisz o nie prosić bezpośrednio. Ta lista jest obecnie pusta, ale w przyszłości możesz się spodziewać wielu nowych pozycji (np. do-while loops
). Zobacz czas problemu: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 standardu WebGPU w przypadku Direct3D 11. Teraz możesz poeksperymentować lokalnie, uruchamiając Chrome w systemie Windows z flagami wiersza poleceń --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Zobacz świt problemu:1705.
Domyślnie korzystaj z dyskretnego GPU przy zasilaniu sieciowym
Na urządzeniach z systemem macOS z 2 procesorami graficznymi, jeśli funkcja requestAdapter()
zostanie wywołana bez opcji powerPreference
, dyskretny GPU jest zwracany, gdy urządzenie użytkownika jest podłączone do zasilania sieciowego. W przeciwnym razie zwracany jest zintegrowany GPU. Zobacz zmianę 4499307.
Poprawa wrażeń deweloperów
Nowe ostrzeżenia w Narzędziach deweloperskich
Jeśli klucz depth
jest używany w interfejsie GPUExtend3DDict
, w konsoli Narzędzi deweloperskich pojawi się ostrzeżenie, ponieważ prawidłowy klucz to depthOrArrayLayers
. Zobacz issue chromium:1440900.
Ostrzeżenie zostanie też wysłane, jeśli GPUBlendComponent
zawiera zarówno użytkowników jednoznacznych, jak i domyślnych. Zobacz świt problemu:1785.
Mimo że polecenia i losowania o zerowej wielkości są prawidłowe, deweloperzy starają się w miarę możliwości unikać takich sytuacji. Zobacz świt problemu:1786.
Lepsze komunikaty o błędach
Podczas korzystania z komunikacji GPUCommandEncoder
wyświetlany jest teraz ulepszony komunikat o błędzie, jeśli usługa finish()
została już wywołana. Zobacz świt problemu:1736.
W przypadku przesyłania buforów poleceń ze zniszczonymi obiektami ich etykiety użyte w submit()
będą teraz widoczne w komunikacie o błędzie. Zobacz świt problemu:1747.
Nieprawidłowa część stanu szablonu głębokości jest teraz określana w komunikacie o błędzie podczas weryfikacji depthStencil
. Zobacz świt problemu: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 świt problemu: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 issue 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 macOS
Przełącznik debugowania use_user_defined_labels_in_backend
umożliwia przekazywanie etykiet obiektów do backendu, aby można je było zobaczyć w narzędziach do debugowania związanych z konkretną platformą, takich jak RenderDoc, PIX czy Instruments. Od teraz, jeśli włączysz debugowanie w systemie macOS, ułatwi Ci to debugowanie. Zobacz świt problemu:1784
Rejestruj HLSL, jeśli kompilacja się nie powiedzie
Przełącznik debugowania dump_shaders
umożliwia rejestrowanie wejściowych programów do cieniowania WGSL i przetłumaczonych mechanizmów cieniowania backendu. Od tej pory, gdy włączysz debugowanie, kod HLSL zostanie zdjęty, jeśli kompilacja się nie powiedzie. Zobacz świt problemu:1681
Powiadomienia o świcie
Usuń ustawienie bufora wierzchołków
Przekazywanie wartości nullptr
zamiast wgpu::Buffer
do SetVertexBuffer()
w wgpu::RenderPassEncoder
lub wgpu::RenderBundleEncoder
umożliwia anulowanie ustawienia wcześniej ustawionego bufora wierzchołków w danym przedziale. Zobacz świt problemu: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 tymczasowe
Możesz tworzyć załączniki, które umożliwiają wykonywanie operacji renderowania w pamięci kafelków, co pozwoli uniknąć ruchu VRAM i potencjalnie uniknąć przydzielania VRAM dla tekstur przez ustawienie wykorzystania wgpu::TextureUsage::TransientAttachment
. Ta funkcja jest obsługiwana tylko w przypadku metalu i interfejsu Vulkan. Zobacz świt problemu: 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.
Kompiluję 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 zależnych od niego projektach. Zobacz zmianę 131750.
Co nowego w WebGPU
Lista wszystkich zagadnień omówionych w serii Co nowego w WebGPU.
Chrome 125
Chrome 124
- Tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu
- Skrypty service worker i współdzielone zasoby robocze – pomoc
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Informacje o Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Cukier składniowy do usuwania linków do kompozytów w WGSL
- Oddzielny stan tylko do odczytu dla aspektów szablonu i głębi
- Informacje o Dawn
Chrome 122
- Rozszerzanie zasięgu dzięki trybowi zgodności (funkcja w fazie opracowywania)
- Zwiększ limit maxVertexAttributes
- Informacje o Dawn
Chrome 121
- Obsługa WebGPU na urządzeniach z Androidem
- Do kompilacji programu do cieniowania w systemie Windows użyj DXC zamiast FXC
- Zapytania o sygnaturę czasową podczas obliczeń obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługuj parametr display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o sterach pamięci
- Informacje o Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w języku WGSL
- Przekrocz granice
- Zmiany stanu szablonu głębi
- Aktualizacje informacji o adapterze
- Kwantyzowanie zapytań dotyczących sygnatury czasowej
- Funkcje Wiosenne porządki
Chrome 119
- Filtrowanie 32-bitowych tekstur pływających
- formacie wierzchołków unorm10-10-10-2
- Format tekstury rgb10a2uint
- Informacje o Dawn
Chrome 118
- Obsługa formatów HTMLImageElement i ImageData w interfejsie
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstur pamięci masowej tylko do odczytu i zapisu oraz tylko do odczytu
- Informacje o Dawn
Chrome 117
- Nieustawiony bufor wierzchołków
- Cofnij ustawienie grupy powiązań
- Wyciszanie błędów podczas tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Aktualizacje dotyczące tworzenia modułu cieniowania SPIR-V
- Poprawianie wrażeń deweloperów
- Potoki w pamięci podręcznej z układem generowanym automatycznie
- Informacje o Dawn
Chrome 116
- Integracja z WebCodecs
- Zgubione urządzenie zwrócone przez GPUAdapter
requestDevice()
- Zapewniaj płynne odtwarzanie filmu, jeśli zostanie wywołany element
importExternalTexture()
- Zgodność ze specyfikacją
- Poprawianie wrażeń deweloperów
- Informacje o Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślnie korzystaj z dyskretnego GPU na zasilaniu sieciowym
- Poprawianie wrażeń deweloperów
- Informacje o Dawn
Chrome 114
- Optymalizacja JavaScriptu
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym zgłasza nieprawidłową wartość błędu
- Aktualizacje WGSL
- Informacje o Dawn