지원되는 WGSL 언어 확장 프로그램
GPU
객체의 wgslLanguageFeatures
멤버에는 지원되는 WGSL 언어 확장 프로그램의 이름이 나열됩니다. 지원되는 WGSL 언어 확장 프로그램은 자동으로 사용 설정되므로 명시적으로 요청할 필요가 없습니다. 이 목록은 현재 비어 있지만 향후에 많이 표시될 것으로 예상됩니다 (예: do-while loops
). issue dawn:1777을 참고하세요.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Direct3D 11 실험 지원
Chromium팀에서는 Direct3D 11을 위한 WebGPU 지원을 추가하기 위해 노력하고 있습니다. 이제 Windows에서 Chrome을 --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
명령줄 플래그로 실행하여 로컬에서 실험할 수 있습니다. 문제 dawn:1705를 참조하세요.
AC 전원을 사용하는 개별 GPU를 기본으로 사용
듀얼 GPU macOS 기기에서 powerPreference
옵션 없이 requestAdapter()
를 호출하면 사용자의 기기에 AC 전원이 켜져 있을 때 개별 GPU가 반환됩니다. 그렇지 않으면 통합된 GPU가 반환됩니다. 변경사항 4499307을 참고하세요.
개발자 환경 개선
새 DevTools 경고
GPUExtend3DDict
에서 depth
키를 사용하면 올바른 키가 depthOrArrayLayers
이므로 DevTools 콘솔에 경고가 표시됩니다. 문제 chromium:1440900을 참고하세요.
GPUBlendComponent
에 명시적 멤버와 기본 멤버가 혼합되어 있는 경우에도 경고가 발생합니다. 문제 dawn:1785를 참조하세요.
크기가 0인 디스패치와 그리기는 유효하지만 개발자는 가능하면 이러한 디스패치와 그리기를 피하도록 권장합니다. Issue dawn:1786을 참조하세요.
오류 메시지 개선
이제 finish()
가 이미 호출된 경우 GPUCommandEncoder
를 사용할 때 개선된 오류 메시지가 제공됩니다. 문제 dawn:1736을 참조하세요.
소멸된 객체가 포함된 명령어 버퍼를 제출할 때 이제 submit()
에 사용된 명령어 버퍼의 라벨이 오류 메시지에 표시됩니다. 문제 dawn:1747을 참조하세요.
이제 depthStencil
를 확인할 때 깊이 스텐실 상태의 잘못된 부분이 오류 메시지에 지정됩니다. 문제 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를 디버깅에 사용 설정하면 macOS에서 더 나은 디버그 환경이 제공됩니다. 문제 dawn:1784를 참조하세요.
컴파일 실패 시 HLSL 로깅
dump_shaders
디버그 전환을 사용하면 입력 WGSL 셰이더와 변환된 백엔드 셰이더를 로깅할 수 있습니다. 이제부터 디버깅에 사용 설정하면 HLSL이 컴파일에 실패하는 경우 덤프됩니다. Issue dawn:1681을 참조하세요.
여명 업데이트
꼭짓점 버퍼 설정 해제
wgpu::Buffer
대신 nullptr
를 wgpu::RenderPassEncoder
또는 wgpu::RenderBundleEncoder
의 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);
임시 첨부파일
wgpu::TextureUsage::TransientAttachment
사용을 설정하여 렌더 패스 작업을 타일 메모리에 유지하여 VRAM 트래픽을 방지하고 텍스처에 대한 VRAM 할당을 방지하는 연결을 만들 수 있습니다. 이 기능은 메탈 및 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 125
Chrome 124
Chrome 123
- WGSL에서 DP4a 내장 함수 지원
- WGSL의 제한되지 않은 포인터 매개변수
- WGSL의 복합 요소 역참조를 위한 구문 슈가
- 스텐실 부분과 깊이 측면의 별도의 읽기 전용 상태
- 새벽 업데이트
Chrome 122
Chrome 121
- Android에서 WebGPU 지원
- Windows에서 셰이더 컴파일에 FXC 대신 DXC 사용
- 컴퓨팅 및 렌더 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- display-p3를 GPUExternalTexture 색공간으로 지원
- 메모리 힙 정보
- 새벽 업데이트
Chrome 120
Chrome 119
Chrome 118
Chrome 117
- 꼭짓점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기 분실 시 비동기 파이프라인 생성에서 발생하는 오류 음소거
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동으로 생성된 레이아웃으로 파이프라인 캐싱
- 새벽 업데이트
Chrome 116
- WebCodecs 통합
- GPU 어댑터에서 기기를 반환함
requestDevice()
importExternalTexture()
가 호출되어도 동영상 재생을 원활하게 유지합니다.- 사양 적합성
- 개발자 환경 개선
- 새벽 업데이트