게시일: 2026년 1월 28일
WGSL subgroup_uniformity 확장 프로그램
WGSL 언어 확장 프로그램 subgroup_uniformity는 하위 그룹 및 쿼드 기본 제공 함수의 균일성 분석 범위를 작업 그룹이 아닌 하위 그룹 수준에서 발생하도록 변경합니다. 이 기능을 사용하면 더 많은 경우에 하위 그룹 기능이 균일한 것으로 간주되어 개발자의 삶의 질이 향상되고 균일성 검사를 완전히 사용 중지할 가능성이 줄어듭니다. 실질적인 의미는 최근에 추가된 subgroup_id 기본 제공 값과 같이 더 많은 값이 하위 그룹 균일로 간주된다는 것입니다.
이 언어 확장 프로그램은 navigator.gpu.wgslLanguageFeatures를 사용하여 기능 감지할 수 있습니다. 다음 예시와 배송 의도를 참고하세요.
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
throw new Error(`WGSL subgroup uniformity is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
@group(0) @binding(0) var<storage, read_write> non_uniform: i32;
fn main() {
if (non_uniform == 42) {
_ = subgroupElect();
}
}`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.
작업자의 실험적 동기 버퍼 매핑
Chrome팀은 WebGPU와 애플리케이션 코드 간의 마찰을 줄일 수 있는 잠재적 방법을 알아보기 위해 작업자 내에서 동기 버퍼 매핑을 조사하고 있습니다. 이 노력의 일환으로 GPUBuffer의 새로운 실험적 mapSync() 메서드가 프로토타입으로 제작되었습니다. 작업자로 제한되는 이 메서드는 mapAsync()와 유사하게 작동합니다.
이 기능은 실험적이며 표준화를 위해 제안될지 여부를 결정하는 데 의견이 중요합니다. 사용해 보려면 --enable-features=WebGPUMapSyncOnWorkers 스위치를 사용하여 Chrome을 실행하고 유용성과 영향에 관한 의견을 보고하세요. 시작하려면 다음 스니펫을 참고하세요.
// Create a GPU buffer.
const buffer = device.createBuffer({
size: 42,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
buffer.mapSync(GPUMapMode.READ);
} else {
// Awaiting allows other code to run, which can cause application logic issues.
await buffer.mapAsync(GPUMapMode.READ);
}
Dawn 업데이트
wgpu::FeatureName::R8UnormStorage 기능은 더 이상 사용할 수 없습니다. 이제 이를 대체하는 wgpu::FeatureName::TextureFormatTier1로 대체되었습니다. 문제 472926167을 참고하세요.
wgpu::FeatureName::Snorm16TextureFormats 기능이 삭제되었습니다. 이제 Resolve를 제외한 기능이 wgpu::FeatureName::TextureFormatsTier1에 크게 포함됩니다. 문제 465347942를 참고하세요.
이제 Emdawnwebgpu 외에 야간 바이너리 출시가 GitHub에서 빌드되며 google/dawn 출시에서 사용할 수 있습니다. 이는 최선의 노력 서비스로 제공되며 Google 또는 Dawn팀에서 서명하거나 보장하지 않습니다.
wgpu::ExternalTexture 지원이 Emdawnwebgpu에 추가되었습니다. C/C++에서 생성은 HTMLVideoElement 또는 VideoFrame과 같은 JavaScript 객체가 필요하므로 JavaScript 코드 (예: EM_ASM)에서만 가져올 수 있습니다. 문제 462477379 및 SpotTests.cpp의 예시 코드를 참고하세요.
여기에는 몇 가지 주요 하이라이트만 포함됩니다. 커밋의 전체 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용의 목록입니다.
Chrome 149~150
Chrome 147~148
Chrome 146
Chrome 145
Chrome 144
- WGSL subgroup_id 확장 프로그램
- WGSL uniform_buffer_standard_layout 확장 프로그램
- Linux의 WebGPU
- 더 빠른 writeBuffer 및 writeTexture
- Dawn 업데이트
Chrome 143
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 정렬 규칙 변경
- WGSL 성능 향상(discard 사용)
- 외부 텍스처에 VideoFrame displaySize 사용
- copyExternalImageToTexture를 사용하여 기본값이 아닌 방향으로 이미지 처리
- 개발자 환경 개선
- featureLevel로 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- Dawn 업데이트
Chrome 132
- 텍스처 뷰 사용
- 32비트 부동 소수점 텍스처 블렌딩
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생
- 텍스처에 대한 필터링 샘플러 제한
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식에 대한 실험적 지원
- Dawn 업데이트
Chrome 131
- WGSL에서의 클립 거리
- GPUCanvasContext getConfiguration()
- 점 및 선 기본 요소에는 깊이 바이어스가 없어야 함
- 하위 그룹에 대한 포괄적 스캔 기본 제공 함수
- 다중 그리기 간접에 대한 실험적 지원
- 셰이더 모듈 컴파일 옵션 엄격한 수학
- 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 사용
- 컴퓨팅 및 렌더링 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- display-p3을 GPUExternalTexture 색상 공간으로 지원
- 메모리 힙 정보
- Dawn 업데이트
Chrome 120
Chrome 119
Chrome 118
- `copyExternalImageToTexture()`의 HTMLImageElement 및 ImageData 지원
copyExternalImageToTexture() - 읽기-쓰기 및 읽기 전용 스토리지 텍스처 실험적 지원
- Dawn 업데이트
Chrome 117
- 정점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기가 손실된 경우 비동기 파이프라인 생성의 오류 표시 안 함
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동 생성된 레이아웃으로 파이프라인 캐싱
- Dawn 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()에서 반환된 손실된 기기 importExternalTexture()가 호출되는 경우 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- Dawn 업데이트