지원되는 WGSL 언어 확장 프로그램
GPU
객체의 wgslLanguageFeatures
멤버는 지원되는 WGSL 언어 확장 프로그램의 이름을 나열합니다. 지원되는 WGSL 언어 확장 프로그램은 자동으로 사용 설정되므로 명시적으로 요청할 필요가 없습니다. 이 목록은 현재 비어 있지만 앞으로 더 많이 제공될 것입니다 (예: do-while loops
). issue dawn:1777을 참고하세요.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Direct3D 11 실험 지원
Chromium팀에서는 Direct3D 11에 WebGPU 지원을 추가하기 위해 노력하고 있습니다. 이제 --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
명령줄 플래그로 Windows에서 Chrome을 실행하여 로컬에서 테스트해 볼 수 있습니다. issue dawn:1705를 참고하세요.
AC 전원에서 기본적으로 개별 GPU 가져오기
듀얼 GPU macOS 기기에서 powerPreference
옵션 없이 requestAdapter()
를 호출하면 사용자 기기가 AC 전원을 사용할 때 개별 GPU가 반환됩니다. 그렇지 않으면 통합 GPU가 반환됩니다. 변경사항 4499307을 참고하세요.
개발자 환경 개선
새로운 DevTools 경고
depth
키가 GPUExtend3DDict
에서 사용되면 올바른 키가 depthOrArrayLayers
이므로 DevTools 콘솔에 경고가 표시됩니다. 문제 chromium:1440900을 참고하세요.
GPUBlendComponent
에 명시적 멤버와 기본값이 적용된 멤버가 혼합되어 있는 경우에도 경고가 발생합니다. issue dawn:1785를 참고하세요.
0 크기의 디스패치와 그리기는 유효하지만 경고는 개발자가 가능하면 이를 피하도록 권장합니다. issue dawn:1786을 참고하세요.
오류 메시지 개선
이제 finish()
가 이미 호출된 경우 GPUCommandEncoder
를 사용할 때 개선된 오류 메시지가 제공됩니다. issue dawn:1736을 참고하세요.
삭제된 객체가 있는 명령어 버퍼를 제출할 때 이제 submit()
에서 사용된 명령어 버퍼의 라벨이 오류 메시지에 표시됩니다. issue dawn:1747을 참고하세요.
이제 depthStencil
의 유효성을 검사할 때 깊이 스텐실 상태의 잘못된 부분이 오류 메시지에 지정됩니다. issue dawn:1735를 참고하세요.
이제 minBindingSize
유효성 검사 오류 메시지가 유효성 검사에 실패한 바인딩의 그룹 및 개수, 버퍼를 보고합니다. issue dawn:1604를 참고하세요.
개발자가 디버깅할 때 도움이 되도록 GPUBuffer
객체의 mapAsync()
메서드에서 반환하는 오류 메시지가 개선되었습니다. 아래 예와 문제 chromium:1431622를 참고하세요.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
macOS 디버깅 도구의 라벨
use_user_defined_labels_in_backend
디버그 전환을 사용하면 객체 라벨을 백엔드로 전달하여 RenderDoc, PIX 또는 Instruments와 같은 플랫폼별 디버깅 도구에서 확인할 수 있습니다. 이제 macOS에서 디버깅을 사용 설정하면 더 나은 디버그 환경이 제공됩니다. issue dawn:1784를 참고하세요.
![WebGPU에서 가져온 커스텀 라벨이 표시된 macOS의 Instruments 앱 스크린샷](https://developer.chrome.com/static/blog/new-in-webgpu-115/image/screenshot-instruments-a-75d5272ed4ccf.png?authuser=19&hl=ko)
컴파일 실패 시 HLSL 로깅
dump_shaders
디버그 전환을 사용하면 입력 WGSL 셰이더와 변환된 백엔드 셰이더를 로깅할 수 있습니다. 이제부터 디버깅에 HLSL을 사용 설정하면 컴파일에 실패하면 HLSL이 덤프됩니다. issue dawn:1681을 참고하세요.
Dawn 업데이트
꼭짓점 버퍼 설정 해제
wgpu::RenderPassEncoder
또는 wgpu::RenderBundleEncoder
에서 wgpu::Buffer
대신 nullptr
를 SetVertexBuffer()
로 전달하면 지정된 슬롯에서 이전에 설정된 꼭짓점 버퍼를 설정 해제할 수 있습니다. issue dawn:1675를 참고하세요.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
일시적인 첨부파일
wgpu::TextureUsage::TransientAttachment
사용을 설정하여 렌더 패스 작업을 카드 메모리에 유지하여 VRAM 트래픽을 피하고 텍스처에 VRAM 할당을 피할 수 있는 첨부파일을 만들 수 있습니다. 이 기능은 Metal 및 Vulkan에서만 지원됩니다. issue dawn: 1695를 참고하세요.
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
depot_tools
없이 빌드
새로운 DAWN_FETCH_DEPENDENCIES
CMake 옵션을 사용하면 DEPS 파일을 읽는 Python 스크립트를 사용하여 Dawn 종속 항목을 가져올 수 있습니다. DEPS를 사용하는 모든 프로젝트에서 depot_tools
를 설치하지 않아도 됩니다. 변경사항 131750을 참고하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용 목록
Chrome 128
- 하위 그룹 실험
- 선 및 점의 설정 깊이 바이어스 지원 중단
- preventDefault인 경우 캡처되지 않은 오류 DevTools 경고 숨기기
- WGSL에서는 샘플링을 먼저 보간하고
- Dawn 업데이트
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
- WGSL에서 DP4a 내장 함수 지원
- WGSL의 제한되지 않은 포인터 매개변수
- WGSL에서 복합을 역참조하기 위한 구문 슈가
- 스텐실 및 깊이 측면의 별도 읽기 전용 상태
- Dawn 업데이트
Chrome 122
Chrome 121
- Android에서 WebGPU 지원
- Windows에서 셰이더 컴파일에 FXC 대신 DXC 사용
- 컴퓨팅 및 렌더링 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- display-p3을 GPUExternalTexture 색상 공간으로 지원
- 메모리 힙 정보
- Dawn 업데이트
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()
의 HTMLImageElement 및 ImageData 지원- 읽기-쓰기 및 읽기 전용 저장소 텍스처를 실험적으로 지원합니다.
- Dawn 업데이트
Chrome 117
- 꼭짓점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기 분실 시 비동기 파이프라인 생성 시 오류 차단
- SPIR-V 셰이더 모듈 만들기 업데이트
- 개발자 환경 개선
- 자동으로 생성된 레이아웃으로 파이프라인 캐싱
- Dawn 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()
에서 반품한 분실 기기 importExternalTexture()
가 호출되는 경우 동영상을 원활하게 재생합니다.- 사양 적합성
- 개발자 환경 개선
- Dawn 업데이트