Android의 OpenGL ES 실험적 지원
이제 Android용 Chrome에서 실험용 WebGPU 호환성 모드를 요청할 때 OpenGL ES 백엔드에서 GPUAdapter
에 액세스할 수 있습니다. 이는 Vulkan 1.1 이상을 지원하지 않는 Android 기기에 특히 유용합니다. 다음 예시와 issue dawn:1545를 참고하세요.
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
이 기능은 아직 실험 단계에 있으므로 다음 단계를 실행해야 합니다.
- '안전하지 않은 WebGPU 지원', 'WebGPU 개발자 기능', '루팅되지 않은 기기에서 명령줄 사용 설정' Chrome 플래그를 사용 설정합니다.
- Android 기기에서 USB 디버깅을 사용 설정합니다.
- Android 기기를 워크스테이션에 연결하고
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
를 실행하여 Vulkan보다 OpenGL ES 백엔드를 우선 사용하도록 한 다음 Chrome을 다시 시작합니다.
GPUAdapter 정보 속성
이제 GPUAdapter info
속성과 동기식으로 어댑터에 관한 식별 정보를 가져올 수 있습니다. 이전에는 비동기 GPUAdapter requestAdapterInfo()
메서드를 호출하는 것이 어댑터 정보를 가져오는 유일한 방법이었습니다. 하지만 requestAdapterInfo()
는 WebGPU 사양에서 삭제되었으며 웹 개발자가 필요한 전환을 할 수 있도록 충분한 시간을 제공하기 위해 올해 후반에 Chrome에서 삭제될 예정입니다. 다음 예시, Chrome 상태, 문제 335383516을 참고하세요.
const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;
// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();
console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"
WebAssembly 상호 운용성 개선
WebAssembly 힙이 WebGPU에 직접 전달되도록 하기 위해 다음 BufferSource 인수의 크기가 더 이상 2GB로 제한되지 않습니다. setBindGroup()
의 dynamicOffsetsData
, writeBuffer()
의 소스 data
, 소스 data
핀 writeTexture()
문제 339049388을 참고하세요.
명령어 인코더 오류 개선
이제 명령 인코더에서 발생한 일부 유효성 검사 오류에 문맥 정보가 개선되었습니다. 예를 들어 렌더링 패스가 아직 열려 있는 동안 컴퓨팅 패스를 시작하려고 하면 다음과 같은 오류가 발생했습니다.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)
이는 오류의 원인을 설명하지만 실제로 검증 오류를 일으킨 호출을 나타내지는 않습니다. 다음 오류는 오류를 트리거한 명령어가 포함된 개선된 메시지를 보여줍니다. 변경사항 192245를 참고하세요.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
- While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).
Dawn 업데이트
webgpu.h C API는 Dawn의 wgpu::Surface::GetPreferredFormat()
에 해당하는 C인 wgpuSurfaceGetPreferredFormat()
를 더 이상 노출하지 않습니다. 대신 wgpu::Surface::GetCapabilities()
를 사용하여 지원되는 형식 목록을 가져온 다음 formats[0]
를 사용하여 이 표면에 적합한 텍스처 형식을 가져옵니다. 그동안 wgpu::Surface::GetPreferredFormat()
를 호출하면 지원 중단 경고가 표시됩니다. 문제 290을 참고하세요.
이제 wgpu::Surface::GetCapabilities()
를 호출할 때 wgpu::SurfaceCapabilities::usages
를 통해 노출 영역의 지원되는 텍스처 사용을 사용할 수 있습니다. 항상 wgpu::TextureUsage::RenderAttachment
를 포함해야 합니다. 문제 301을 참고하세요.
여기에는 주요 내용 중 일부만 다룹니다. 전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용 목록
Chrome 131
- WGSL에서 거리 클립
- GPUCanvasContext getConfiguration()
- 점 및 선 프리미티브에 깊이 바이어스가 없어야 합니다.
- 하위 그룹을 위한 포용 스캔 기본 제공 함수
- 다중 그리기 간접 실험적 지원
- 셰이더 모듈 컴파일 옵션 엄격한 수학
- GPUAdapter requestAdapterInfo() 삭제
- Dawn 업데이트
Chrome 130
Chrome 129
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 업데이트