Integracja WebCodecs
WebGPU udostępnia interfejs API do tworzenia nieprzezroczystych obiektów „zewnętrznej tekstury” od HTMLVideoElement
do importExternalTexture()
. Możesz użyć tych obiektów do efektywnego próbkowania klatek wideo, potencjalnie również bez kopiowania bezpośrednio ze źródłowych danych modelu kolorów YUV.
Jednak początkowa specyfikacja WebGPU nie zezwalała na tworzenie obiektów GPUExternalTexture
z obiektów WebCodecs VideoFrame
. Ta możliwość jest istotna w przypadku zaawansowanych aplikacji do przetwarzania wideo, które korzystają już z WebCodecs i chcą zintegrować WebGPU z procesem przetwarzania wideo. Integracja WebCodecs dodaje obsługę używania VideoFrame
jako źródła wywołań GPUExternalTexture
i copyExternalImageToTexture()
. Zapoznaj się z poniższym przykładem oraz wpisem 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.
Zapoznaj się z eksperymentalnym przykładem funkcji Przesyłanie filmów przy użyciu WebCodecs.
Utracone urządzenie zwrócone przez GPUAdapter requestDevice()
Jeśli metoda requestDevice()
w GPUAdapter
nie powiedzie się, ponieważ została już użyta do utworzenia elementu GPUDevice
, zostanie teraz zrealizowana przy użyciu elementu GPUDevice
oznaczonego natychmiast jako utracony, a nie zwrócenia obietnicy, która zostanie odrzucona z użyciem wartości null
. Zobacz issue 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;
Zadbaj o płynne odtwarzanie filmu, jeśli wywołana jest funkcja importExternalTexture()
Gdy funkcja importExternalTexture()
zostaje wywołana za pomocą HTMLVideoElement
, powiązane odtwarzanie filmu nie jest już ograniczane, gdy film nie jest widoczny w widocznym obszarze. Zobacz issue chromium:1425252.
Zgodność ze specyfikacją
Argument message
w konstruktorze GPUPipelineError()
jest opcjonalny. Zobacz zmianę chromium:4613967.
Jeśli źródło WGSL code
zawiera \0
, wywołuje błąd podczas wywoływania funkcji createShaderModule()
. Zobacz świt problemu:1345.
Domyślny maksymalny poziom szczegółowości (lodMaxClamp
) używany podczas próbkowania tekstury z użyciem createSampler()
to 32. Zobacz zmianę chromium:4608063.
Poprawa wrażeń deweloperów
W konsoli JavaScript Narzędzi deweloperskich wyświetlany jest komunikat przypominający deweloperom, że korzystają z 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 wystąpi błąd getMappedRange()
bez konieczności wysyłania poleceń przez programistów do kolejki. Zobacz zmianę chromium:4597950.
Powiadomienia o świcie
Nazwa przełącznika debugowania disallow_unsafe_apis
została zmieniona na allow_unsafe_apis
i domyślnie jest wyłączona. Ten przełącznik eliminuje błędy weryfikacji w punktach wejścia interfejsu API lub kombinacjach parametrów, które nie są jeszcze uznawane za bezpieczne. Może to być przydatne podczas debugowania.
Zobacz świt problemu:1685.
Wycofany atrybut source
(wgpu::ShaderModuleWGSLDescriptor
) został zastąpiony atrybutem code
. Zobacz zmianę w świcie:130321.
Wdrożono brakującą metodę wgpu::RenderBundle::SetLabel()
. Zobacz zmianę w świcie:134502.
Podczas pobierania adaptera z opcją wgpu::RequestAdapterOptionsBackendType
aplikacje mogą żądać określonego backendu. Zobacz przykład poniżej: Data wydania: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 w przypadku tekstur swapchain, aby umożliwić użycie zwracającego elementu wgpu::Texture
w kopiach. Zobacz przykład poniżej i issue dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
To tylko niektóre z najważniejszych kwestii. Zobacz pełną listę zatwierdzeń.
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