WebGPU의 새로운 기능 (Chrome 136)

François Beaufort
François Beaufort

게시일: 2025년 4월 23일

GPUAdapterInfo isFallbackAdapter 속성

GPUAdapterInfo isFallbackAdapter 불리언 속성은 GPUAdapter에 더 광범위한 호환성, 더 예측 가능한 동작 또는 향상된 개인 정보 보호를 위해 상당한 성능 제한이 있는지 여부를 나타냅니다. 사용자 제공 GPUDevice 객체를 사용하는 라이브러리가 GPUDevice의 adapterInfo 속성을 통해 이 정보에 액세스할 수 없으므로 이 속성을 추가해야 했습니다. 다음 예시와 문제 403172841을 참고하세요.

const adapter = await navigator.gpu.requestAdapter();

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

Chrome은 아직 대체 어댑터 지원을 출시하지 않았으므로 현재 사용자 기기에서 isFallbackAdapter는 항상 false입니다. GPUAdapter isFallbackAdapter 속성을 지원 중단하고 삭제할 수 있는지 조사하고 있습니다. 배송 인텐트를 참고하세요.

D3D12의 셰이더 컴파일 시간 개선

Chrome팀은 D3D12 백엔드로 WebGPU를 지원하는 기기의 중간 표현 (IR)을 추가하여 WebGPU 셰이더 언어 컴파일러인 Tint를 지속적으로 개선하고 있습니다. Tint의 추상 문법 트리 (AST)와 HLSL 백엔드 작성기 사이에 위치한 이 IR은 컴파일러를 더 효율적이고 유지보수 가능하게 만들어 궁극적으로 개발자와 사용자 모두에게 도움이 됩니다. 초기 테스트에 따르면 새 버전의 Tint는 Unity의 WGSL 셰이더를 HLSL로 변환할 때 최대 10배 더 빠릅니다.

WGSL 셰이더 코드를 하위 수준 GPU 명령어로 변환하는 프로세스를 보여주는 플로우 차트
Windows에서 렌더링 파이프라인 만들기

이러한 개선사항은 이미 Android, ChromeOS, macOS에서 액세스할 수 있으며 D3D12 백엔드로 WebGPU를 지원하는 Windows 기기로 점진적으로 확대되고 있습니다. 문제 42251045를 참고하세요.

캔버스 이미지 저장 및 복사하기

이제 Chrome 사용자는 WebGPU 캔버스를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴 옵션 이미지를 다른 이름으로 저장… 또는 이미지 복사에 액세스할 수 있습니다. 문제 40902474를 참고하세요.

Google 검색을 사용한 그라운딩의 사용에는
사용자가 '이미지 다른 이름으로 저장' 컨텍스트 메뉴를 선택했습니다.

광고효과 측정 호환성 모드 제한사항

GPUDevice에서 사용할 수 있는 실험용 "core-features-and-limits" 기능은 chrome://flags/#enable-unsafe-webgpu 플래그가 사용 설정된 경우 모든 호환성 모드 제한사항 (기능 및 제한)을 해제합니다. 문제 395855517을 참고하세요.

featureLevel: "compatibility" 옵션으로 GPUAdapter를 요청하면 브라우저에 실험용 WebGPU 호환성 모드를 선택하라는 힌트가 제공됩니다. 성공하면 결과 어댑터가 '호환성 기본값'으로 설정됩니다. 그렇지 않으면 featureLevel: "core" 옵션을 사용하는 것과 동일한 'core-defaulting'입니다. 또한 requiredFeaturesrequiredLimits 없이 requestDevice()를 호출하면 GPUAdapter의 기본 기능이 있는 GPUDevice가 요청됩니다.

핵심 기본 어댑터는 항상 "core-features-and-limits" 기능을 지원하며, 이 어댑터에서 생성된 GPUDevice에서 자동으로 사용 설정됩니다. 호환성 기본값 어댑터의 경우 "core-features-and-limits" 기능이 지원될 수 있으며 이러한 어댑터에서 생성된 GPUDevices에서 요청할 수 있습니다. 두 유형의 어댑터 모두 "float32-blendable"와 같은 기능을 지원할 수 있으며, 이는 핵심 모드와 호환성 모드 모두에서 선택사항입니다.

다음 예는 "float32-blendable"가 필요하고 사용 가능한 경우 핵심 기능 사용을 지원하지만 핵심 기능을 사용할 수 없는 경우 호환성 기능만 사용하는 애플리케이션을 보여줍니다.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

실험용 GPUAdapter featureLevelisCompatibilityMode 속성이 "core-features-and-limits" 기능을 위해 삭제되었습니다. 문제 395855516을 참고하세요.

Dawn 업데이트

콜백이 취소되었지만 이벤트와 관련된 백그라운드 처리(예: 파이프라인 컴파일)가 여전히 실행 중일 수 있음을 명확히 하기 위해 콜백 상태 enum InstanceDropped의 이름이 CallbackCancelled로 변경되었습니다. 새 이름은 나중에 다른 취소 메커니즘이 추가되는 경우 더 일반적으로 적용할 수 있습니다. 문제 520을 참고하세요.

오류 범위 스택을 팝할 수 없음을 나타내는 wgpu::PopErrorScopeStatus::EmptyStack enum의 이름이 더 일반적으로 적용할 수 있는 wgpu::PopErrorScopeStatus::Error로 변경되었습니다. 이제 디버깅에 도움이 되는 상응하는 오류 설명 메시지도 콜백에 포함됩니다. 문제 369를 참고하세요.

여기에는 주요 내용 중 일부만 다룹니다. 전체 커밋 목록을 확인하세요.

WebGPU의 새로운 기능

WebGPU의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.

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