Tekstury pamięci masowej tylko do odczytu i do zapisu i odczytu
Typ powiązania tekstur pamięci masowej umożliwia programom cieniowania odczytywanie tekstur pamięci bez dodawania użycia TEXTURE_BINDING
oraz wykonywanie mieszanych odczytów i zapisów w określonych formatach. Gdy w navigator.gpu.wgslLanguageFeatures
jest obecne rozszerzenie języka "readonly_and_readwrite_storage_textures"
WGSL, możesz teraz ustawić dostęp GPUStorageTexture
na poziomie "read-write"
lub "read-only"
podczas tworzenia układu grupy powiązań. Wcześniej dostęp do tych danych miał tylko "write-only"
.
Następnie Twój kod cieniowania WGSL może używać kwalifikatora dostępu read_write
i read
do obsługi tekstur pamięci masowej, funkcje wbudowane textureLoad()
i textureStore()
zachowują się odpowiednio, a dostępna jest nowa funkcja wbudowana textureBarrier()
do synchronizowania dostępu do pamięci tekstur w grupie roboczej.
Zalecamy użycie dyrektywy wymagającej, aby zasygnalizować możliwość braku możliwości przenoszenia za pomocą requires readonly_and_readwrite_storage_textures;
u góry kodu cieniowania WGSL. Zobacz poniższy przykład i ten problem: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.
Skrypty service worker i współdzielone instancje robocze
WebGPU w Chrome przenosi obsługę pracowników internetowych na wyższy poziom, oferując wsparcie zarówno dla skryptów service worker, jak i zasobów współdzielonych. Skrypty service worker pozwalają usprawnić zadania w tle i w trybie offline, a współdzielone zasoby robocze zapewniają efektywne udostępnianie zasobów między skryptami. Zobacz issue chromium:41494731.
Zapoznaj się z przykładowym rozszerzeniem do Chrome i rozszerzeniem WebLLM do Chrome, aby dowiedzieć się, jak używać WebGPU w skrypcie usługi rozszerzeń.
Nowe atrybuty informacji o adapterze
Niestandardowe atrybuty informacji o adapterach d3dShaderModel
i vkDriverVersion
są teraz dostępne podczas wywoływania requestAdapterInfo()
, jeśli użytkownik włączył flagę „Funkcje dla programistów WebGPU” na stronie chrome://flags/#enable-webgpu-developer-features
. Gdy obsługiwane:
d3dShaderModel
to maksymalny obsługiwany numer modelu cieniowania D3D. Na przykład wartość 62 oznacza, że obecny sterownik obsługuje HLSL SM 6.2. Zapoznaj się z dokumentacją i artykułem Data wydania:1254.vkDriverVersion
to określony przez dostawcę numer wersji sterownika Vulkan. Zapoznaj się z dokumentacją i artykułem issue chromium:327457605.
Poprawki błędów
Utworzenie 2 potoków z pasującymi grupami powiązań przy użyciu layout: "auto"
oraz utworzenie grupy powiązań z pierwszym potokiem, a następnie użycie jej w drugim potoku, powoduje teraz wystąpienie błędu GPUValidationError. Zezwolenie na tę opcję było błędem implementacji, który został już naprawiony dzięki odpowiednim testom. Zobacz ten problem:2402.
Powiadomienia o świcie
W interfejsie Dawn API nieprzechwycone wywołanie zwrotne błędu ustawione dla wgpuDeviceSetUncapturedErrorCallback
nie jest teraz wywoływane po utracie urządzenia GPU. Ta poprawka dostosowuje Dawn do specyfikacji interfejsu JavaScript API i implementacji Blink. Zobacz świt problemu:2459.
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