지원되는 WGSL 언어 확장 프로그램
GPU 객체의 wgslLanguageFeatures 멤버는 지원되는 WGSL 언어 확장 프로그램의 이름을 나열합니다. 지원되는 WGSL 언어 확장 프로그램은 자동으로 사용 설정되므로 명시적으로 요청할 필요가 없습니다. 이 목록은 현재 비어 있지만 향후 많은 항목이 추가될 예정입니다 (예: do-while loops). 문제 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을 실행하여 로컬로 실험할 수 있습니다. dawn:1705 문제를 참고하세요.
AC 전원 사용 시 기본적으로 개별 GPU 가져오기
듀얼 GPU macOS 기기에서 powerPreference 옵션 없이 requestAdapter()이 호출되면 사용자의 기기가 AC 전원에 연결되어 있을 때 개별 GPU가 반환됩니다. 그렇지 않으면 통합 GPU가 반환됩니다. 변경사항 4499307을 참고하세요.
개발자 환경 개선
새로운 DevTools 경고
depth 키가 GPUExtend3DDict에서 사용되면 올바른 키는 depthOrArrayLayers이므로 DevTools 콘솔에 경고가 표시됩니다. 문제 chromium:1440900을 참고하세요.
GPUBlendComponent에 명시적 멤버와 기본 멤버가 혼합되어 있는 경우에도 경고가 발생합니다. 문제 dawn:1785를 참고하세요.
크기가 0인 디스패치와 그리기 작업은 유효하지만, 가능한 경우 이를 피하도록 개발자에게 경고가 표시됩니다. 문제 dawn:1786을 참고하세요.
오류 메시지 개선
finish()이 이미 호출된 경우 GPUCommandEncoder을 사용할 때 개선된 오류 메시지가 제공됩니다. dawn:1736 문제를 참고하세요.
소멸된 객체와 함께 명령 버퍼를 제출하면 이제 submit()에서 사용된 명령 버퍼의 라벨이 오류 메시지에 표시됩니다. 문제 dawn:1747을 참고하세요.
이제 depthStencil를 검증할 때 깊이 스텐실 상태의 잘못된 부분이 오류 메시지에 지정됩니다. issue dawn:1735를 참고하세요.
이제 minBindingSize 유효성 검사 오류 메시지에서 유효성 검사에 실패한 바인딩의 그룹과 번호는 물론 버퍼도 보고합니다. 문제 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에서 더 나은 디버그 환경이 제공됩니다. 문제 dawn:1784를 참고하세요.
컴파일이 실패하면 HLSL 로깅
dump_shaders 디버그 전환을 사용하면 입력 WGSL 셰이더와 변환된 백엔드 셰이더를 로깅할 수 있습니다. 이제부터 디버깅을 위해 사용 설정하면 컴파일이 실패할 경우 HLSL이 덤프됩니다. 문제 dawn:1681 참고
Dawn 업데이트
꼭짓점 버퍼 설정 해제
wgpu::RenderPassEncoder 또는 wgpu::RenderBundleEncoder에서 wgpu::Buffer 대신 nullptr를 SetVertexBuffer()에 전달하면 지정된 슬롯에서 이전에 설정된 꼭짓점 버퍼를 설정 해제할 수 있습니다. 문제 dawn:1675를 참고하세요.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
일시적인 첨부파일
렌더링 패스 작업이 타일 메모리에 유지되도록 하여 VRAM 트래픽을 방지하고 wgpu::TextureUsage::TransientAttachment 사용을 설정하여 텍스처의 VRAM 할당을 방지할 수 있는 첨부 파일을 만들 수 있습니다. 이 기능은 Metal 및 Vulkan에서만 지원됩니다. 문제 새벽: 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 옵션을 사용하면 이에 종속된 모든 프로젝트에서 depot_tools를 설치하지 않아도 DEPS 파일을 읽는 Python 스크립트를 사용하여 Dawn 종속 항목을 가져올 수 있습니다. 변경사항 131750을 참고하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용의 목록입니다.
Chrome 142
Chrome 141
Chrome 140
- 기기 요청이 어댑터를 사용함
- 텍스처 뷰가 사용되는 경우 텍스처를 사용하는 약식 표현
- WGSL textureSampleLevel이 1D 텍스처 지원
- bgra8unorm 읽기 전용 스토리지 텍스처 사용 지원 중단
- GPUAdapter isFallbackAdapter 속성 삭제
- Dawn 업데이트
Chrome 139
Chrome 138
- 버퍼를 바인딩 리소스로 사용하는 약식 표현
- 생성 시 매핑된 버퍼의 크기 요구사항 변경
- 최신 GPU의 아키텍처 보고
- GPUAdapter isFallbackAdapter 속성 지원 중단
- Dawn 업데이트
Chrome 137
- externalTexture 바인딩에 텍스처 뷰 사용
- 오프셋과 크기를 지정하지 않고 버퍼를 복사함
- 원자에 대한 포인터를 사용하는 WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 속성
- GPURequestAdapterOptions compatibilityMode 속성 삭제
- Dawn 업데이트
Chrome 136
Chrome 135
- null 바인드 그룹 레이아웃으로 파이프라인 레이아웃 만들기 허용
- 표시 영역이 렌더링 타겟 경계를 지나 확장되도록 허용
- Android에서 실험용 호환성 모드에 더 쉽게 액세스
- maxInterStageShaderComponents 한도 삭제
- Dawn 업데이트
Chrome 134
Chrome 133
- unorm8x4-bgra 및 1컴포넌트 정점 형식 추가
- 정의되지 않은 값으로 알 수 없는 한도를 요청하도록 허용
- WGSL 정렬 규칙 변경사항
- discard를 사용한 WGSL 성능 향상
- 외부 텍스처에 VideoFrame displaySize 사용
- copyExternalImageToTexture를 사용하여 기본이 아닌 방향의 이미지 처리
- 개발자 환경 개선
- featureLevel로 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- Dawn 업데이트
Chrome 132
- 텍스처 뷰 사용
- 32비트 부동 소수점 텍스처 혼합
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생함
- 텍스처에 대한 필터링 샘플러 제한
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식에 대한 실험적 지원
- Dawn 업데이트
Chrome 131
- WGSL에서의 클립 거리
- GPUCanvasContext getConfiguration()
- 점 및 선 기본 요소에는 깊이 바이어스가 없어야 함
- 하위 그룹에 대한 포괄적 스캔 기본 제공 함수
- multi-draw indirect 실험적 지원
- 셰이더 모듈 컴파일 옵션 엄격한 수학
- GPUAdapter requestAdapterInfo() 삭제
- Dawn 업데이트
Chrome 130
Chrome 129
Chrome 128
- 하위 그룹 실험
- 선과 점의 깊이 바이어스 설정 지원 중단
- preventDefault인 경우 uncaptured error DevTools 경고 숨기기
- WGSL 보간 샘플링 first 및 either
- 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 사용
- 컴퓨팅 및 렌더링 패스에서 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- GPUExternalTexture 색상 공간으로 display-p3 지원
- 메모리 힙 정보
- Dawn 업데이트
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()의 HTMLImageElement 및 ImageData 지원- 읽기-쓰기 및 읽기 전용 스토리지 텍스처 실험적 지원
- Dawn 업데이트
Chrome 117
- 정점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기가 손실된 경우 비동기 파이프라인 생성에서 오류 무시
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동으로 생성된 레이아웃으로 파이프라인 캐싱
- Dawn 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()에서 반환된 손실된 기기 importExternalTexture()가 호출되는 경우 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- Dawn 업데이트