Tekstury pamięci masowej przeznaczone tylko do odczytu oraz do odczytu i zapisu
Typ powiązania tekstur pamięci masowej umożliwia programom cieniowania odczytywanie tekstur pamięci masowej bez dodawania użycia funkcji TEXTURE_BINDING
oraz wykonywanie mieszanych odczytów i zapisów w określonych formatach. Gdy navigator.gpu.wgslLanguageFeatures
zawiera rozszerzenie języka WGSL "readonly_and_readwrite_storage_textures"
, podczas tworzenia układu grupy powiązań możesz teraz ustawić dostęp GPUStorageTexture
na "read-write"
lub "read-only"
. Wcześniej limit ten był ograniczony do domeny "write-only"
.
Dzięki temu kod cieniowania WGSL może używać kwalifikatora dostępu read_write
i read
na potrzeby tekstur pamięci, wbudowane funkcje textureLoad()
i textureStore()
działają odpowiednio. Dostępna jest też nowa wbudowana funkcja textureBarrier()
do synchronizowania dostępu do pamięci tekstur w grupie roboczej.
Zalecamy użycie polecenia requires-direct, aby zasygnalizować potencjał braku możliwości przenoszenia za pomocą kodu requires readonly_and_readwrite_storage_textures;
na górze kodu Shakera WGSL. Zobacz ten przykład i problem świt:1972.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
Obsługa mechanizmów Service Worker i współdzielonych instancji roboczych
WebGPU w Chrome przenosi obsługę procesów internetowych na wyższy poziom, oferując teraz obsługę zarówno dla skryptów roboczych, jak i współdzielonych. Skrypty service worker pozwalają usprawniać zadania w tle i możliwości offline, a współpracowniki ułatwiają efektywne udostępnianie zasobów między skryptami. Zobacz problem chromium:41494731.
Zapoznaj się z przykładowym rozszerzeniem do Chrome i rozszerzeniem WebLLM do Chrome, aby dowiedzieć się, jak używać WebGPU w skrypcie service worker.
![Zrzut ekranu rozszerzenia WebLLM do Chrome.](https://developer.chrome.com/static/blog/new-in-webgpu-124/image/webllm-chrome-extension.jpg?authuser=7&hl=pl)
Nowe atrybuty informacji o adapterach
Niestandardowe atrybuty informacji o adapterze d3dShaderModel
i vkDriverVersion
są teraz dostępne po wywołaniu requestAdapterInfo()
, jeśli użytkownik włączył „Funkcje dla programistów WebGPU”. flag o chrome://flags/#enable-webgpu-developer-features
. Jeśli ta funkcja jest obsługiwana:
d3dShaderModel
to maksymalny obsługiwany numer modelu cieniowania D3D. Na przykład wartość 62 oznacza, że bieżący sterownik obsługuje HLSL SM 6.2. Zapoznaj się z dokumentacją i informacjami o problemie dawn:1254.vkDriverVersion
to numer wersji sterownika Vulkan określony przez dostawcę. Zapoznaj się z dokumentacją i problemem chromium:327457605.
![Zrzut ekranu strony https://webgpureport.org z wartością vkDriverVersion w informacjach o adapterze.](https://developer.chrome.com/static/blog/new-in-webgpu-124/image/webgpureport.jpg?authuser=7&hl=pl)
vkDriverVersion
dostępne na stronie https://webgpureport.org.Poprawki błędów
Utworzenie 2 potoków z pasującymi grupami powiązań przy użyciu parametru layout: "auto"
, a następnie utworzenie grupy powiązań z pierwszym potokiem i użycie jej w drugim potoku spowoduje teraz wyświetlenie błędu GPUValidationError. Był to błąd implementacji, który został już naprawiony dzięki odpowiednim testom. Zobacz problem: świt:2402.
Aktualizacje o świcie
W interfejsie Dawn API nierejestrowane wywołanie zwrotne typu wgpuDeviceSetUncapturedErrorCallback
nie jest teraz wywoływane po utracie urządzenia GPU. Ta poprawka dopasowuje Dawn do specyfikacji interfejsu JavaScript API i implementacji Blink. Zobacz problem: świt:2459.
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 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o karcie GPU
- Ulepszenia współpracy WebAssembly
- Poprawione błędy kodera poleceń
- Informacje o świcie
Chrome 126
- Zwiększanie limitu maxTextureSlateWarstwy
- Optymalizacja przesyłania buforów w backendzie Vulkan
- Krótszy czas kompilowania shadera
- Przesłane bufory poleceń muszą być unikalne
- Informacje o świcie
Chrome 125
Chrome 124
- Tekstury pamięci masowej przeznaczone tylko do odczytu oraz do odczytu i zapisu
- Obsługa pracowników Service Worker i pracowników współużytkowanych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów.
- Informacje o świcie
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Składnikowy cukier do dereferencji elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu w przypadku elementów związanych z szablonem i głębią
- Informacje o świcie
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Informacje o świcie
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania danych do cieniowania w systemie Windows
- Zapytania dotyczące sygnatury czasowej w kartach obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługuj display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o stertach pamięci
- Informacje o świcie
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przesuwaj granice
- Zmiany stanu szablonu z głębokością
- Aktualizacje informacji o karcie
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje sprzątania przed wiosną
Chrome 119
- Filtrowalne 32-bitowe tekstury zmiennoprzecinkowe
- format wierzchołkowy unorm10-10-10-2
- Format tekstury rgb10a2uint
- Informacje o świcie
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci do odczytu i zapisu oraz tylko do odczytu
- Informacje o świcie
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- Nieskonfigurowana grupa powiązań
- Wyciszaj błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Zmiany związane z tworzeniem modułu cieniowania SPIR-V
- Polepszanie obsługi dla programistów
- Potoki pamięci podręcznej z układem generowanym automatycznie
- Informacje o świcie
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice()
- Odtwarzaj płynnie po wywołaniu
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Domyślnie używaj dyskretnego GPU przy zasilaniu sieciowym
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 114
- Optymalizacja JavaScriptu
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym powoduje zgłoszenie nieprawidłowego stanu błędu
- Aktualizacje WGSL
- Informacje o świcie