CPU는 GPU에 명령과 자원을 넘겨주고 GPU는 넘어온 명령들을 처리하며 각각 개별적으로 작동한다.
CPU와 GPU의 작업이 병렬로 처리된다는 뜻이다.
그렇기 때문에 GPU가 이전에 넘겨받은 작업을 다 처리하기 전에 CPU가 새로운 작업을 넘겨줘 원활히 작업이 수행되지 않는 문제가 발생할 수 있다.
이 문제를 해결하기 위해 CPU와 GPU의 작업을 동기화 시켜야 한다.
동기화의 기본적으로 GPU가 작업을 끝내기 전 까지 CPU가 대기하는 것을 말한다.
그리고 이 동기화를 위해 사용되는 것이 Fence이다.
Fence
Fence는 CPU와 GPU의 동기화를 위해 사용되는 것이다.
Fence는 UINT64값 하나를 관리한다. 이 값은 Fence의 위치를 나타내는 의미로 사용된다.
새로운 작업이 들어올 때 마다 Fence의 값을 1씩 증가시켜 처리해야 할 작업의 지점을 나타낸다.
Fence는 ID3D12Fence로 선언하고 디바이스를 통해 생성할 수 있다.
Fence는 아래처럼 사용할 수 있다.
위의 함수를 명령어 설정이 끝나는 지점에 사용하면 된다.
'DirectX12' 카테고리의 다른 글
[DirectX12] 렌더링 파이프라인 (1) | 2024.01.28 |
---|---|
[DirectX12] 안티 앨리어싱 (1) | 2024.01.27 |
[DirectX12] 장치 생성 (1) | 2024.01.26 |
[DirectX12] Swap Chain (0) | 2024.01.24 |
[DirectX12] Command List, Allocator, Queue (0) | 2024.01.23 |