Co nowego w WebGPU (Chrome 117)

François Beaufort
François Beaufort

Usuwanie bufora wierzchołków

Przekazanie wartości null zamiast GPUBuffer do setVertexBuffer() w przypadku GPURenderPassEncoder lub GPURenderBundleEncoder umożliwia cofnię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, null);

Cofnij ustawienie grupy powiązania

Przekazanie wartości null zamiast GPUBindGroup do setBindGroup() w przypadku GPURenderPassEncoder lub GPURenderBundleEncoder umożliwia cofnięcie wcześniej ustawionej grupy powiązań w danym slocie. Zobacz problem dawn:1675.

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

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

Wyłączanie błędów podczas asynchronicznego tworzenia potoku, gdy urządzenie jest zgubione

Metody createComputePipelineAsync()createRenderPipelineAsync() interfejsu GPUDevice zwracają obietnicę, która jest spełniana po zakończeniu tworzenia potoku. Od tej pory błędy tworzenia potoku asynchronicznego będą wyciszane, gdy wartość GPUDevice to lost, aby zgubione urządzenia działały w jak największym stopniu. Zobacz dawn issue:1874.

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

Tworzenie modułu cieniowania 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ło wygenerowanie błędu GPUInternalError. Zobacz change chromium:4711911.

Ulepszanie środowiska programistycznego

Ulepszyliśmy komunikat o błędzie weryfikacji dotyczący powiązań układu grupy powiązań w programie cieniowania wierzchołków w przypadku powiązań bufora pamięci do odczytu i zapisu oraz tekstury pamięci tylko do zapisu. Zobacz problem dawn: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 będą zużywać mniej pamięci. Zobacz issue dawn:1933.

Aktualizacje o świcie

wgpu::RequestAdapterOptionsBackendType jest teraz częścią wgpu::RequestAdapterOptions, co ułatwia aplikacjom żądanie konkretnego backendu podczas pobierania adaptera. Zobacz ten przykład i problem dawn:1875.

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

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

W przypadku Node.js wdrożono kilka dodatkowych metod. Zobacz change dawn:142465.

Typ wartości logicznych w interfejsie C API webgpu.h został zmieniony z stdbool na WGPUBool, czyli uint32_t. Ta zmiana została wprowadzona, aby zapewnić, że interfejs API ma równoważny ABI w językach C i C++.

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

Nowości w WebGPU

Lista wszystkich tematów omówionych w serii Co nowego w WebGPU.

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

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