WebCodecs 통합
WebGPU는 HTMLVideoElement
에서 importExternalTexture()
까지 불투명한 '외부 텍스처' 객체를 만드는 API를 노출합니다. 이러한 객체를 사용하여 동영상 프레임을 효율적으로 샘플링할 수 있으며, 경우에 따라 소스 YUV 색상 모델 데이터에서 직접 0 복사 방식으로 샘플링할 수 있습니다.
그러나 초기 WebGPU 사양에서는 WebCodecs VideoFrame
객체에서 GPUExternalTexture
객체를 만들 수 없었습니다. 이 기능은 이미 WebCodecs를 사용하고 동영상 처리 파이프라인에 WebGPU를 통합하려는 고급 동영상 처리 앱에 중요합니다. WebCodecs 통합은 VideoFrame
를 GPUExternalTexture
및 copyExternalImageToTexture()
호출의 소스로 사용하는 지원을 추가합니다. 다음 예시와 chromestatus 항목을 참고하세요.
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
WebCodecs로 동영상 업로드 실험용 샘플을 확인해 보세요.
GPUAdapter requestDevice()에서 반환된 분실 기기
GPUDevice
를 만드는 데 이미 사용되었기 때문에 GPUAdapter
의 requestDevice()
메서드가 실패하면 이제 null
으로 거부하는 약속을 반환하는 대신 즉시 손실로 표시된 GPUDevice
로 처리됩니다. issue chromium:1234617을 참고하세요.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
importExternalTexture()가 호출된 경우 동영상 재생을 원활하게 유지
importExternalTexture()
가 HTMLVideoElement
와 함께 호출되면 동영상이 표시 영역에 표시되지 않을 때 연결된 동영상 재생이 더 이상 제한되지 않습니다. 문제 chromium:1425252를 참고하세요.
사양 준수
GPUPipelineError()
생성자의 message
인수는 선택사항입니다. chromium:4613967 변경을 참고하세요.
WGSL 소스 code
에 \0
가 포함된 경우 createShaderModule()
를 호출할 때 오류가 발생합니다. issue dawn:1345를 참고하세요.
createSampler()
로 텍스처를 샘플링할 때 사용되는 기본 최대 세부정보 수준 (lodMaxClamp
)은 32입니다. change chromium:4608063을 참고하세요.
개발자 환경 개선
개발자가 지원되지 않는 플랫폼에서 WebGPU를 사용하고 있을 때 DevTools JavaScript 콘솔에 메시지가 표시되어 개발자에게 이를 알립니다. chromium:4589369 변경을 참고하세요.
개발자가 명령어를 대기열에 전송하지 않아도 getMappedRange()
가 실패하면 버퍼 유효성 검사 오류 메시지가 DevTools JavaScript 콘솔에 즉시 표시됩니다. chromium:4597950 변경을 참고하세요.
Dawn 업데이트
disallow_unsafe_apis
디버그 전환 버튼의 이름이 allow_unsafe_apis
로 변경되고 기본값이 사용 중지되었습니다. 이 전환 버튼을 사용하면 아직 안전하지 않은 것으로 간주되는 API 진입점 또는 매개변수 조합에서 유효성 검사 오류가 억제됩니다. 디버깅에 유용할 수 있습니다.
문제 dawn:1685를 참고하세요.
지원 중단된 wgpu::ShaderModuleWGSLDescriptor
source
속성이 code
로 대체되어 삭제되었습니다. change dawn:130321을 참고하세요.
누락된 wgpu::RenderBundle::SetLabel()
메서드가 구현되었습니다. change dawn:134502를 참고하세요.
애플리케이션은 wgpu::RequestAdapterOptionsBackendType
옵션으로 어댑터를 가져올 때 특정 백엔드를 요청할 수 있습니다. 아래 예시와 issue dawn:1875를 참고하세요.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
반환 wgpu::Texture
를 사본에 사용할 수 있도록 스왑체인 텍스처의 추가 용도로 새 SwapChain::GetCurrentTexture()
메서드가 추가되었습니다. 아래 예와 issue dawn:1551을 참조하세요.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
여기에는 주요 내용 중 일부만 다룹니다. 전체 커밋 목록을 확인하세요.
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 업데이트