Co nowego w WebGPU (Chrome 117)

François Beaufort
François Beaufort

Nieskonfigurowany bufor wierzchołków

Przekazanie null zamiast GPUBuffer na setVertexBuffer() na GPURenderPassEncoder lub GPURenderBundleEncoder umożliwia anulowanie wcześniej ustawionego bufora wierzchołków w danym boksie. Zapoznaj się z problemem świt:1675.

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

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

Usuń grupę powiązań

Przekazanie null zamiast GPUBindGroup na setBindGroup() na GPURenderPassEncoder lub GPURenderBundleEncoder pozwala cofnąć ustawienie wcześniej ustawionej grupy powiązań w danym przedziale. Zapoznaj się z problemem świt:1675.

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

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

Wycisz błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia

Metody createComputePipelineAsync() i createRenderPipelineAsync() metody GPUDevice zwracają obietnicę, która kończy się po zakończeniu tworzenia potoku. Od teraz błędy wynikające z tworzenia potoku asynchronicznego będą wyciszone, gdy GPUDevice będzie lost, aby utracone urządzenia działały jak najlepiej. Zobacz problem o świcie:1874.

Aktualizacje dotyczące tworzenia modułu cieniowania SPIR-V

Tworzenie modułu cieniowania SPIR-V z użyciem createShaderModule() powoduje teraz błąd typu, chyba że uruchomisz Chrome z obsługą „Unsafe WebGPU Support” flag, ponieważ SPIR-V nie jest częścią specyfikacji WebGPU. Przed tą zmianą używanie SPIR-V powodowało wygenerowanie błędu GPUInternalError. Zobacz zmianę chromium:4711911.

Poprawianie wrażeń deweloperów

Komunikat o błędzie weryfikacji dotyczący powiązań układu grup powiązań w cieniowaniu wierzchołków został ulepszony pod kątem buforów pamięci do odczytu i zapisu oraz wiązań tekstur pamięci tylko do zapisu. Zobacz problem od świtu:1883.

Buforowanie potoków z automatycznie generowanym układem

Potoki utworzone za pomocą createRenderPipeline({ layout: "auto" }) korzystają teraz z mechanizmów buforowania w Chrome. Oznacza to, że te potoki będą tworzone wydajniej i zużywają mniej pamięci. Zobacz problem: świt:1933.

Aktualizacje o świcie

Interfejs wgpu::RequestAdapterOptionsBackendType jest teraz częścią pakietu wgpu::RequestAdapterOptions, co ułatwia aplikacjom wysyłanie żądań do konkretnego backendu po uzyskaniu adaptera. Zobacz ten przykład i problem świt:1875.

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

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

Na potrzeby środowiska Node.js wdrożyliśmy kilka dodatkowych metod. Zobacz zmianę daty:142465.

Interfejs API webgpu.h C zmienił typ wartości logicznych z stdbool na WGPUBool, czyli na uint32_t. Ta zmiana ma zapewnić, że interfejs API ma odpowiedni interfejs ABI w języku C i C++.

To tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą zatwierdzeń.

Co nowego w WebGPU

Lista wszystkiego, co zostało omówione w serii Co nowego w WebGPU.

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