Obsługiwane rozszerzenia języka WGSL
Element wgslLanguageFeatures
obiektu GPU
zawiera listę nazw obsługiwanych rozszerzeń języka WGSL. Obsługiwane rozszerzenia języka WGSL są włączane automatycznie, więc nie musisz o nie prosić. Ta lista jest obecnie pusta, ale w przyszłości będzie zawierać wiele pozycji (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 w Direct3D 11. Możesz teraz przetestować tę funkcję lokalnie, uruchamiając Chrome w systemie Windows z flagami wiersza poleceń --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Zobacz problem dawn:1705.
Domyślne używanie dyskretnego procesora graficznego po podłączeniu do zasilania sieciowego
Na urządzeniach z macOS z dwoma procesorami GPU, jeśli funkcja requestAdapter()
zostanie wywołana bez opcji powerPreference
, zwracany jest dyskretny procesor GPU, gdy urządzenie użytkownika jest zasilane z gniazdka. W przeciwnym razie zwracany jest zintegrowany procesor graficzny. Zobacz zmianę 4499307.
Ulepszanie środowiska programistycznego
Nowe ostrzeżenia w Narzędziach deweloperskich
Jeśli w GPUExtend3DDict
użyty zostanie klawisz depth
, w konsoli Narzędzi deweloperskich pojawi się ostrzeżenie, ponieważ prawidłowy klawisz to depthOrArrayLayers
. Zobacz issue chromium:1440900.
Ostrzeżenie jest też wyświetlane, jeśli w przypadku GPUBlendComponent
występują zarówno członkowie z wyraźną zgodą, jak i członkowie domyślni. Zobacz problem dawn:1785.
Wysyłanie i wyświetlanie reklam o zerowej wielkości jest prawidłowe, ale ostrzeżenie zachęca deweloperów do unikania takich sytuacji, gdy jest to możliwe. Zobacz problem dawn:1786.
Ulepszone komunikaty o błędach
Gdy używasz GPUCommandEncoder
, a funkcja finish()
została już wywołana, wyświetla się teraz ulepszony komunikat o błędzie. Zobacz problem dawn:1736.
Podczas przesyłania buforów poleceń ze zniszczonymi obiektami etykiety buforów poleceń użytych w funkcji submit()
są teraz widoczne w komunikacie o błędzie. Zobacz problem dawn:1747.
Nieprawidłowa część stanu bufora głębi i szablonu 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 przeszło weryfikacji, a także bufor. Zobacz problem dawn:1604.
Ulepszyliśmy komunikaty o błędach zwracane przez metodę mapAsync()
w obiekcie GPUBuffer
, aby ułatwić deweloperom debugowanie. Zobacz przykład poniżej i zgłoś 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 do debugowania w systemie macOS
Przełącznik debugowania use_user_defined_labels_in_backend
umożliwia przekazywanie etykiet obiektów do backendu, aby można było je zobaczyć w narzędziach do debugowania specyficznych dla platformy, takich jak RenderDoc, PIX czy Instruments. Od teraz po włączeniu debugowania w systemie macOS możesz korzystać z lepszych funkcji debugowania. Zobacz issue dawn:1784

Rejestrowanie HLSL w przypadku nieudanej kompilacji
Przełącznik debugowania dump_shaders
umożliwia rejestrowanie wejściowych shaderów WGSL i przetłumaczonych shaderów backendu. Od teraz, gdy włączysz debugowanie, w przypadku niepowodzenia kompilacji HLSL zostanie zrzucany. Zobacz problem dawn:1681
Aktualizacje o świcie
Usuwanie bufora wierzchołków
Przekazanie wartości nullptr
zamiast wgpu::Buffer
do SetVertexBuffer()
w przypadku wgpu::RenderPassEncoder
lub wgpu::RenderBundleEncoder
umożliwia usunięcie wcześniej ustawionego bufora wierzchołków w danym slocie. Zobacz problem dawn: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 przejściowe
Możesz tworzyć załączniki, które pozwalają operacjom renderowania pozostawać w pamięci kafelków, co pozwala uniknąć ruchu w pamięci VRAM i potencjalnie uniknąć przydzielania pamięci VRAM na tekstury przez ustawienie wgpu::TextureUsage::TransientAttachment
usage. Ta funkcja jest obsługiwana tylko w przypadku interfejsów Metal i Vulkan. Zobacz issue 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 DAWN_FETCH_DEPENDENCIES
CMake umożliwia pobieranie zależności Dawn za pomocą skryptu w Pythonie, który odczytuje pliki DEPS, zamiast wymagać instalacji depot_tools
we wszystkich projektach, które są od niego zależne. Zobacz zmianę 131750.
Nowości w WebGPU
Lista wszystkich tematów omówionych w serii Co nowego w WebGPU.
Chrome 140
- Żądania dotyczące urządzeń wykorzystują adapter
- Skrót do używania tekstury w miejscu, w którym używany jest widok tekstury
- Funkcja WGSL textureSampleLevel obsługuje tekstury 1D
- Wycofanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Usunięcie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje dotyczące Dawn
Chrome 139
- Obsługa tekstur 3D w przypadku formatów skompresowanych BC i ASTC
- Nowa funkcja „core-features-and-limits”
- Testowanie wersji próbnej trybu zgodności WebGPU
- Aktualizacje dotyczące Dawn
Chrome 138
- Skrót do używania bufora jako zasobu wiążącego
- Zmiany wymagań dotyczących rozmiaru buforów mapowanych podczas tworzenia
- Raport o architekturze najnowszych układów GPU
- Wycofanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje dotyczące Dawn
Chrome 137
- Używanie widoku tekstury do wiązania externalTexture
- Kopiowanie buforów bez określania przesunięć i rozmiaru
- WGSL workgroupUniformLoad using pointer to atomic
- Atrybut powerPreference interfejsu GPUAdapterInfo
- Usunięcie atrybutu compatibilityMode z interfejsu GPURequestAdapterOptions
- Aktualizacje dotyczące Dawn
Chrome 136
- Atrybut GPUAdapterInfo isFallbackAdapter
- Krótszy czas kompilacji shaderów w D3D12
- Zapisywanie i kopiowanie obrazów z płótna
- Ograniczenia trybu zgodności pomiaru wzrostu
- Aktualizacje dotyczące Dawn
Chrome 135
- Zezwalaj na tworzenie układu potoku z układem grupy wiązań o wartości null
- Zezwalaj na wykraczanie obszarów widoku poza granice docelowych obszarów renderowania
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 134
- Ulepszanie zadań systemów uczących się za pomocą podgrup
- Usunięcie obsługi typów tekstur z możliwością filtrowania zmiennoprzecinkowego jako mieszalnych
- Aktualizacje dotyczące Dawn
Chrome 133
- Dodatkowe formaty wierzchołków unorm8x4-bgra i 1-component
- Zezwalaj na żądanie nieznanych limitów z niezdefiniowaną wartością
- Zmiany w regułach wyrównywania WGSL
- Wzrost wydajności WGSL dzięki odrzucaniu
- Używanie parametru VideoFrame displaySize w przypadku tekstur zewnętrznych
- Obsługa obrazów o orientacji innej niż domyślna za pomocą funkcji copyExternalImageToTexture
- Poprawianie komfortu pracy programistów
- Włączanie trybu zgodności za pomocą parametru featureLevel
- Usuwanie funkcji eksperymentalnych podgrup
- Wycofanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 132
- Korzystanie z widoku tekstury
- Mieszanie tekstur zmiennoprzecinkowych 32-bitowych
- Atrybut adapterInfo interfejsu GPUDevice
- Konfigurowanie kontekstu elementu canvas w nieprawidłowym formacie powoduje błąd JavaScriptu
- Ograniczenia dotyczące próbkowania tekstur
- Eksperymentowanie z rozszerzonymi podgrupami
- Poprawianie komfortu pracy programistów
- Eksperymentalna obsługa 16-bitowych znormalizowanych formatów tekstur
- Aktualizacje dotyczące Dawn
Chrome 131
- Obcinanie odległości w WGSL
- GPUCanvasContext getConfiguration()
- Elementy pierwotne punktów i linii nie mogą mieć odchylenia głębi
- Wbudowane funkcje skanowania obejmującego podgrupy
- Eksperymentalna obsługa rysowania pośredniego
- Opcja kompilacji modułu cieniowania strict math
- Usunięcie metody GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 130
- Miksowanie z 2 źródeł
- Krótszy czas kompilacji cieniowania w Metal
- Wycofanie metody GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR w trybie mapowania tonów na płótnie
- Rozszerzona obsługa podgrup
- Aktualizacje dotyczące Dawn
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie ustawiania odchylenia głębi dla linii i punktów
- Ukrywanie ostrzeżenia Narzędzi deweloperskich o nieprzechwyconym błędzie, jeśli użyto preventDefault
- WGSL interpolate sampling first and either
- Aktualizacje dotyczące Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodera poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększanie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora na potrzeby backendu Vulkan
- Ulepszenia czasu kompilacji cieniowania
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie opracowywania)
- Renderowanie do wycinka tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury pamięci tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników usługowych i współdzielonych
- 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
- Uproszczona składnia dereferencji typów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla aspektów szablonu i głębi
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilacji cieniowania w systemie Windows
- Zapytania o sygnatury czasowe w przypadku obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługa przestrzeni kolorów display-p3 jako przestrzeni kolorów GPUExternalTexture
- Informacje o obszarach pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczaj granice
- Zmiany stanu bufora głębi i szablonu
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatur czasowych
- Funkcje wiosennych porządków
Chrome 119
- Filtrowane tekstury zmiennoprzecinkowe 32-bitowe
- unorm10-10-10-2 vertex format
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa elementów HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstur pamięci do odczytu i zapisu oraz tylko do odczytu
- Aktualizacje dotyczące Dawn
Chrome 117
- Usuwanie bufora wierzchołków
- Usuwanie powiązania grupy
- Wyciszanie błędów podczas asynchronicznego tworzenia potoku, gdy urządzenie zostanie utracone
- Aktualizacje dotyczące tworzenia modułów cieniowania SPIR-V
- Poprawianie komfortu pracy programistów
- Buforowanie potoków z automatycznie generowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja WebCodecs
- Zwrócono utracone urządzenie przez GPUAdapter
requestDevice()
- Zapewnij płynne odtwarzanie wideo, jeśli wywoływana jest funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Poprawianie komfortu pracy programistów
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślne korzystanie z osobnego procesora graficznego po podłączeniu do zasilania sieciowego
- Poprawianie komfortu pracy programistów
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja JavaScript
- getCurrentTexture() w nieskonfigurowanym elemencie canvas zgłasza błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn