Integracja z WebCodecs
WebGPU udostępnia interfejs API do tworzenia nieprzezroczystych obiektów "tekstury zewnętrznej" z HTMLVideoElement za pomocą importExternalTexture(). Możesz używać tych obiektów do wydajnego próbkowania klatek wideo, potencjalnie bez kopiowania, bezpośrednio ze źródłowych danych modelu kolorów YUV.
Jednak początkowa specyfikacja WebGPU nie pozwalała na tworzenie obiektów GPUExternalTexture z obiektów WebCodecs VideoFrame. Ta funkcja jest ważna w przypadku zaawansowanych aplikacji do przetwarzania wideo, które już korzystają z WebCodecs i chcą zintegrować WebGPU z potokiem przetwarzania wideo. Integracja z WebCodecs dodaje obsługę używania elementu VideoFrame jako źródła dla wywołania GPUExternalTexture i copyExternalImageToTexture(). Zobacz ten przykład i wpis w chromestatus.
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Aby się z nią zapoznać, wypróbuj eksperymentalny przykład przesyłania filmów za pomocą WebCodecs.
Utracone urządzenie zwracane przez GPUAdapter requestDevice()
Jeśli metoda requestDevice() w GPUAdapter nie powiedzie się, ponieważ została już użyta do utworzenia GPUDevice, teraz zwraca GPUDevice natychmiast oznaczone jako utracone, zamiast zwracać obietnicę, która odrzuca wartość null. Zobacz problem chromium:1234617.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
Płynne odtwarzanie wideo, gdy wywoływana jest funkcja importExternalTexture()
Gdy importExternalTexture() jest wywoływana z elementem HTMLVideoElement, powiązane odtwarzanie wideo nie jest już ograniczane, gdy film nie jest widoczny w widocznym obszarze. Zobacz problem chromium:1425252.
Zgodność ze specyfikacją
Argument message w konstruktorze GPUPipelineError() jest opcjonalny. Zobacz zmianę chromium:4613967.
Podczas wywoływania funkcji createShaderModule() występuje błąd, jeśli źródło WGSL code zawiera \0. Zobacz problem dawn:1345.
Domyślny maksymalny poziom szczegółowości (lodMaxClamp) używany podczas próbkowania tekstury za pomocą createSampler() to 32. Zobacz zmianę chromium:4608063.
Ulepszanie środowiska deweloperskiego
W konsoli JavaScript Narzędzi deweloperskich wyświetla się komunikat przypominający deweloperom, że używają WebGPU na nieobsługiwanej platformie. Zobacz zmianę chromium:4589369.
Komunikaty o błędach weryfikacji bufora są natychmiast wyświetlane w konsoli JavaScript Narzędzi deweloperskich, gdy getMappedRange() nie powiedzie się bez konieczności wysyłania poleceń do kolejki. Zobacz zmianę chromium:4597950.
Aktualizacje Dawn
Przełącznik debugowania disallow_unsafe_apis został zmieniony na allow_unsafe_apis i domyślnie jest wyłączony. Ten przełącznik pomija błędy weryfikacji w punktach wejścia API lub kombinacjach parametrów, które nie są jeszcze uważane za bezpieczne. Może to być przydatne podczas debugowania.
Zobacz problem dawn:1685.
Wycofany atrybut wgpu::ShaderModuleWGSLDescriptor został usunięty na rzecz atrybutu source.code Zobacz zmianę dawn:130321.
Zaimplementowano brakującą metodę wgpu::RenderBundle::SetLabel(). Zobacz zmianę dawn:134502.
Aplikacje mogą zażądać konkretnego backendu podczas pobierania adaptera za pomocą opcji wgpu::RequestAdapterOptionsBackendType. Zobacz przykład poniżej i problem dawn:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Dodano nową metodę SwapChain::GetCurrentTexture() z dodatkowymi zastosowaniami tekstur łańcucha wymiany, dzięki czemu zwracany element wgpu::Texture może być używany w kopiach. Zobacz przykład poniżej i problem dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
Obejmuje to tylko niektóre z najważniejszych informacji. Pełną listę commitów znajdziesz tutaj.
Co nowego w WebGPU
Lista wszystkich tematów omówionych w serii Co nowego w WebGPU.
Chrome 147–148
Chrome 146
- Obsługa trybu zgodności WebGPU w OpenGL ES 3.1
- Przejściowe załączniki
- Rozszerzenie WGSL texture_and_sampler_let
- Aktualizacje Dawn
Chrome 145
- Rozszerzenie WGSL subgroup_uniformity
- Eksperymentalne synchroniczne mapowanie bufora w procesach roboczych
- Aktualizacje Dawn
Chrome 144
- Rozszerzenie WGSL subgroup_id
- Rozszerzenie WGSL uniform_buffer_standard_layout
- WebGPU w systemie Linux
- Szybsze writeBuffer i writeTexture
- Aktualizacje Dawn
Chrome 143
- Przełączanie komponentów tekstury
- Usuwanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Aktualizacje Dawn
Chrome 142
Chrome 141
- Tint IR ukończony
- Analiza zakresu liczb całkowitych w kompilatorze WGSL
- Aktualizacja SPIR-V 1.4 dla backendu Vulkan
- Aktualizacje Dawn
Chrome 140
- Żądania urządzeń zużywają adapter
- Skrót do używania tekstury, gdy używany jest widok tekstury
- WGSL textureSampleLevel obsługuje tekstury 1D
- Wycofywanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Usuwanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje Dawn
Chrome 139
- Obsługa tekstur 3D w przypadku formatów skompresowanych BC i ASTC
- Nowa funkcja „core-features-and-limits”
- Testowanie origin trybu zgodności WebGPU
- Aktualizacje Dawn
Chrome 138
- Skrót do używania bufora jako zasobu powiązania
- Zmiany wymagań dotyczących rozmiaru w przypadku buforów mapowanych podczas tworzenia
- Raport architektury dotyczący najnowszych GPU
- Wycofywanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje Dawn
Chrome 137
- Używanie widoku tekstury do powiązania externalTexture
- Kopiowanie buforów bez określania przesunięć i rozmiaru
- WGSL workgroupUniformLoad używa wskaźnika do atomowego
- Atrybut GPUAdapterInfo powerPreference
- Usuwanie atrybutu GPURequestAdapterOptions compatibilityMode
- Aktualizacje Dawn
Chrome 136
- Atrybut GPUAdapterInfo isFallbackAdapter
- Krótszy czas kompilacji shaderów w D3D12
- Zapisywanie i kopiowanie obrazów z elementu canvas
- Zniesienie ograniczeń trybu zgodności
- Aktualizacje Dawn
Chrome 135
- Zezwalanie na tworzenie układu potoku z układem grupy powiązań null
- Zezwalanie na rozszerzanie widocznych obszarów poza granice docelowe renderowania
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje Dawn
Chrome 134
- Ulepszanie zadań systemów uczących się za pomocą podgrup
- Usuwanie obsługi typów tekstur z filtrem zmiennoprzecinkowym jako mieszanych
- Aktualizacje Dawn
Chrome 133
- Dodatkowe formaty wierzchołków unorm8x4-bgra i 1-komponentowe
- Zezwalanie na żądanie nieznanych limitów z niezdefiniowaną wartością
- Zmiany reguł wyrównywania WGSL
- Zwiększenie wydajności WGSL dzięki odrzucaniu
- Używanie elementu VideoFrame displaySize w przypadku tekstur zewnętrznych
- Obsługa obrazów o orientacji innej niż domyślna za pomocą copyExternalImageToTexture
- Ulepszanie środowiska deweloperskiego
- Włączanie trybu zgodności za pomocą featureLevel
- Czyszczenie eksperymentalnych funkcji podgrup
- Wycofywanie limitu maxInterStageShaderComponents
- Aktualizacje Dawn
Chrome 132
- Użycie widoku tekstury
- Mieszanie tekstur zmiennoprzecinkowych 32-bitowych
- Atrybut GPUDevice adapterInfo
- Konfigurowanie kontekstu elementu canvas z nieprawidłowym formatem powoduje błąd JavaScriptu
- Ograniczenia dotyczące próbek filtrowania w teksturach
- Rozszerzone eksperymenty z podgrupami
- Ulepszanie środowiska deweloperskiego
- Eksperymentalna obsługa 16-bitowych znormalizowanych formatów tekstur
- Aktualizacje Dawn
Chrome 131
- Odległości przycinania w WGSL
- GPUCanvasContext getConfiguration()
- Prymitywy punktowe i liniowe nie mogą mieć odchylenia głębokości
- Wbudowane funkcje skanowania włącznie dla podgrup
- Eksperymentalna obsługa rysowania pośredniego
- Opcja kompilacji modułu shadera strict math
- Usuwanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 130
- Mieszanie z 2 źródeł
- Krótszy czas kompilacji shaderów w Metal
- Wycofywanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofywanie ustawiania odchylenia głębokości dla linii i punktów
- Ukrywanie ostrzeżenia Narzędzi deweloperskich o nieprzechwyconym błędzie, jeśli preventDefault
- WGSL interpolate sampling first and either
- Aktualizacje Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut GPUAdapter info
- Ulepszenia interoperacyjności WebAssembly
- Ulepszone błędy kodera poleceń
- Aktualizacje Dawn
Chrome 126
- Zwiększanie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora w przypadku backendu Vulkan
- Krótszy czas kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje Dawn
Chrome 125
Chrome 124
- Tekstury pamięci tylko do odczytu i do odczytu i zapisu
- Obsługa service workerów i shared workerów
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Aktualizacje Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Cukier syntaktyczny do dereferencji kompozytów w WGSL
- Oddzielny stan tylko do odczytu dla aspektów szablonu i głębokości
- Aktualizacje Dawn
Chrome 122
- Poszerzanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Aktualizacje Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilacji shaderów w systemie Windows
- Zapytania o sygnaturę czasową w przypadku przejść obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów shadera
- Obsługa display-p3 jako przestrzeni kolorów GPUExternalTexture
- Informacje o stertach pamięci
- Aktualizacje Dawn
Chrome 120
- Obsługa 16-bitowej reprezentacji zmiennoprzecinkowej w WGSL
- Przekraczanie limitów
- Zmiany stanu głębokości i szablonu
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań o sygnaturę czasową
- Funkcje czyszczenia
Chrome 119
- Tekstury zmiennoprzecinkowe 32-bitowe z filtrem
- Format wierzchołka unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture() - Eksperymentalna obsługa tekstur pamięci do odczytu i zapisu oraz tylko do odczytu
- Aktualizacje Dawn
Chrome 117
- Usuwanie bufora wierzchołków
- Usuwanie grupy powiązań
- Wyciszanie błędów podczas asynchronicznego tworzenia potoku, gdy urządzenie jest utracone
- Aktualizacje tworzenia modułu shadera SPIR-V
- Ulepszanie środowiska deweloperskiego
- Buforowanie potoków z automatycznie generowanym układem
- Aktualizacje Dawn
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwracane przez GPUAdapter
requestDevice() - Płynne odtwarzanie wideo, gdy wywoływana jest funkcja
importExternalTexture() - Zgodność ze specyfikacją
- Ulepszanie środowiska deweloperskiego
- Aktualizacje Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślne pobieranie dyskretnego GPU przy zasilaniu prądem zmiennym
- Ulepszanie środowiska deweloperskiego
- Aktualizacje Dawn
Chrome 114
- Optymalizowanie JavaScriptu
- getCurrentTexture() w niekonfigurowanym elemencie canvas zgłasza InvalidStateError
- Aktualizacje WGSL
- Aktualizacje Dawn