Co nowego w WebGPU (Chrome 117)

François Beaufort
François Beaufort

Nieskonfigurowany bufor wierzchołka

Przekazanie wartości null zamiast GPUBuffer do setVertexBuffer()GPURenderPassEncoder lub GPURenderBundleEncoder pozwala zresetować wcześniej ustawiony bufor wierzchołka w danym gnieździe. Zobacz issue dawn:1675.

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

Cofnij ustawienie grupy wiązania

Przekazanie wartości null zamiast GPUBindGroup do setBindGroup() na GPURenderPassEncoder lub GPURenderBundleEncoder pozwala zresetować wcześniej ustawioną grupę wiązania w danym gnieździe. Zobacz issue dawn:1675.

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

Wyciszanie błędów podczas tworzenia asynchronicznego potoku w przypadku utraty urządzenia

Metody createComputePipelineAsync() i createRenderPipelineAsync() obiektu GPUDevice zwracają obietnicę, która zostanie spełniona po zakończeniu tworzenia potoku. Od teraz błędy z tworzenia asynchronicznego kanału będą ignorowane, gdy GPUDevice będzie równa lost, aby zgubione urządzenia mogły działać jak najdłużej. Zobacz dawn issue:1874.

Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V

Tworzenie modułu shadera SPIR-V za pomocą createShaderModule() powoduje teraz błąd TypeError, chyba że uruchomisz Chrome z flagą „Unsafe WebGPU Support”, ponieważ SPIR-V nie jest częścią specyfikacji WebGPU. Przed wprowadzeniem tej zmiany użycie SPIR-V powodowałoby zamiast tego wygenerowanie błędu GPUInternalError. Zobacz zmianę chromium:4711911.

Ulepszenie środowiska programisty

Ulepszono komunikat o błędzie walidacji w przypadku powiązań układu grupy wiązań w shaderze wierzchołka w przypadku wiązań buforów pamięci masowej z dostępem do odczytu i zapisu oraz wiązań tekstur pamięci masowej tylko do zapisu. Zobacz issue dawn:1883.

Buforowanie przepustów z automatycznie wygenerowanym układem

Prace przetwarzania utworzone za pomocą createRenderPipeline({ layout: "auto" }) korzystają teraz z mechanizmów buforowania w Chrome. Oznacza to, że te potoki będą tworzone wydajniej i będą zużywać mniej pamięci. Zobacz issue dawn:1933.

Aktualizacje świtu

wgpu::RequestAdapterOptionsBackendType jest teraz częścią wgpu::RequestAdapterOptions, aby ułatwić aplikacjom żądanie określonego backendu podczas uzyskiwania adaptera. Zobacz poniższy przykład i problem dawn:1875.

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

W Node.js zaimplementowano kilka dodatkowych metod. Zobacz change dawn:142465.

Interfejs API C webgpu.h ma teraz typ wartości logicznych stdbool zamiast WGPUBool, który jest typem uint32_t. Ta zmiana została wprowadzona, aby zapewnić interfejsowi API odpowiedni ABI w językach C i C++.

Obejmuje to tylko niektóre najważniejsze informacje. Zapoznaj się z pełną listą commitów.

Co nowego w WebGPU

Lista wszystkich tematów omawianych w cyklu Co nowego w WebGPU.

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113