게시일: 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은 컴파일러를 더 효율적이고 유지관리 가능하게 만들어 궁극적으로 개발자와 사용자 모두에게 이점을 제공합니다. 초기 테스트 결과에 따르면 Unity의 WGSL 셰이더를 HLSL로 변환할 때 새로운 버전의 Tint가 최대 10배 더 빠른 것으로 나타났습니다.

Android, ChromeOS, macOS에서 이미 사용할 수 있는 이러한 개선사항은 D3D12 백엔드로 WebGPU를 지원하는 Windows 기기로 점진적으로 확대되고 있습니다. 문제 42251045를 참고하세요.
캔버스 이미지 저장 및 복사
이제 Chrome 사용자는 WebGPU 캔버스를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴 옵션 이미지를 다른 이름으로 저장… 또는 이미지 복사에 액세스할 수 있습니다. 문제 40902474를 참고하세요.

호환성 모드 제한 해제
GPUDevice에서 사용할 수 있는 실험용 "core-features-and-limits"
기능은 chrome://flags/#enable-unsafe-webgpu
플래그가 사용 설정된 경우 모든 호환성 모드 제한 (기능 및 제한)을 해제합니다. 문제 395855517을 참고하세요.
featureLevel: "compatibility"
옵션으로 GPUAdapter를 요청하면 브라우저가 실험용 WebGPU 호환성 모드를 선택하도록 힌트를 제공합니다. 성공하면 결과 어댑터는 '호환성 기본값'입니다. 그렇지 않으면 featureLevel: "core"
옵션을 사용하는 것과 동일한 'core-defaulting'입니다. 또한 requiredFeatures
및 requiredLimits
없이 requestDevice()
를 호출하면 GPUAdapter의 기본 기능이 있는 GPUDevice가 요청됩니다.
코어 기본 어댑터는 항상 "core-features-and-limits"
기능을 지원하며 이 기능은 어댑터에서 생성된 GPUDevice에서 자동으로 사용 설정됩니다. 호환성 기본 어댑터의 경우 "core-features-and-limits"
기능이 지원될 수 있으며 이 기능은 어댑터에서 생성된 GPUDevice에서 요청할 수 있습니다. 두 유형의 어댑터 모두 핵심 모드와 호환성 모드에서 선택사항인 "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 featureLevel
및 isCompatibilityMode
속성이 "core-features-and-limits"
기능으로 대체되어 삭제되었습니다. 문제 395855516을 참고하세요.
새벽 업데이트
콜백 상태 enum InstanceDropped
가 CallbackCancelled
로 이름이 변경되었습니다. 이는 콜백이 취소되었지만 파이프라인 컴파일과 같은 이벤트와 관련된 백그라운드 처리는 계속 실행될 수 있음을 명확히 하기 위한 것입니다. 새 이름은 나중에 다른 취소 메커니즘이 추가될 경우를 대비하여 더 일반적으로 적용할 수 있습니다. 문제 520을 참고하세요.
오류 범위 스택을 팝할 수 없음을 나타내는 wgpu::PopErrorScopeStatus::EmptyStack
enum의 이름이 wgpu::PopErrorScopeStatus::Error
로 바뀌었습니다 (wgpu::PopErrorScopeStatus::Error
는 더 일반적으로 적용 가능함). 이제 콜백에는 디버깅에 도움이 되는 해당 오류 설명 메시지도 포함됩니다. 문제 369를 참고하세요.
여기에서는 몇 가지 주요 사항만 다룹니다. 전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.
Chrome 140
- 기기 요청이 어댑터를 사용함
- 텍스처 뷰가 사용되는 경우 텍스처를 사용하는 약어
- WGSL textureSampleLevel이 1D 텍스처 지원
- bgra8unorm 읽기 전용 저장소 텍스처 사용 지원 중단
- GPUAdapter isFallbackAdapter 속성 삭제
- 새벽 업데이트
Chrome 139
Chrome 138
- 버퍼를 바인딩 리소스로 사용하는 약식
- 생성 시 매핑된 버퍼의 크기 요구사항 변경
- 최근 GPU의 아키텍처 보고서
- GPUAdapter isFallbackAdapter 속성 지원 중단
- 새벽 업데이트
Chrome 137
- externalTexture 바인딩에 텍스처 뷰 사용
- 오프셋과 크기를 지정하지 않고 버퍼 복사
- 원자에 대한 포인터를 사용하는 WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 속성
- GPURequestAdapterOptions compatibilityMode 속성 삭제
- 새벽 업데이트
Chrome 136
Chrome 135
- null 바인드 그룹 레이아웃으로 파이프라인 레이아웃 생성 허용
- 뷰포트가 렌더링 타겟 경계를 지나 확장되도록 허용
- Android에서 실험용 호환성 모드에 더 쉽게 액세스
- maxInterStageShaderComponents 한도 삭제
- 새벽 업데이트
Chrome 134
Chrome 133
- 추가 unorm8x4-bgra 및 1컴포넌트 꼭짓점 형식
- 정의되지 않은 값으로 알 수 없는 한도를 요청하도록 허용
- WGSL 정렬 규칙 변경사항
- discard를 사용한 WGSL 성능 향상
- 외부 텍스처에 VideoFrame displaySize 사용
- copyExternalImageToTexture를 사용하여 기본이 아닌 방향의 이미지 처리
- 개발자 환경 개선
- featureLevel로 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- 새벽 업데이트
Chrome 132
- 텍스처 뷰 사용량
- 32비트 부동 소수점 텍스처 혼합
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생함
- 텍스처의 샘플러 제한 필터링
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식 실험적 지원
- 새벽 업데이트
Chrome 131
- WGSL에서 거리 클리핑
- GPUCanvasContext getConfiguration()
- 점 및 선 기본 요소에는 깊이 바이어스가 없어야 합니다
- 하위 그룹의 포괄적 검색 기본 제공 함수
- multi-draw indirect 실험적 지원
- 셰이더 모듈 컴파일 옵션 strict math
- GPUAdapter requestAdapterInfo() 삭제
- 새벽 업데이트
Chrome 130
Chrome 129
Chrome 128
- 하위 그룹 실험
- 선과 점의 깊이 편향 설정 지원 중단
- preventDefault인 경우 포착되지 않은 오류 DevTools 경고 숨기기
- WGSL 보간 샘플링이 먼저 실행되고 다음 중 하나가 실행됩니다.
- 새벽 업데이트
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- Android에서 WebGPU 지원
- Windows에서 셰이더 컴파일에 FXC 대신 DXC 사용
- 컴퓨팅 및 렌더링 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- GPUExternalTexture 색상 공간으로 display-p3 지원
- 메모리 힙 정보
- 새벽 업데이트
Chrome 120
Chrome 119
Chrome 118
Chrome 117
- 꼭짓점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기가 손실된 경우 비동기 파이프라인 생성에서 오류 무시
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동으로 생성된 레이아웃으로 파이프라인 캐싱
- 새벽 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()
에서 반환된 손실된 기기 importExternalTexture()
이 호출되는 경우 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- 새벽 업데이트