https://learn.microsoft.com/en-us/windows/win32/direct3d12/using-resource-barriers-to-synchronize-resource-states-in-direct3d-12

“Note that common state promotion is ‘free’ in that there is no need for the GPU to perform any synchronization waits. The promotion represents the fact that resources in the COMMON state should not require additional GPU work or driver tracking to support certain accesses.”

불필요한 Resource Barrier 상태전환을 줄이고 암시적인 상태전환을 하도록 하는 것이 성능상 유리하다.

Resources can only be ‘promoted’ out of D3D12_RESOURCE_STATE_COMMON. Similarly, resources will only ‘decay’ to D3D12_RESOURCE_STATE_COMMON.

COMMON → (하나의 쓰기 상태 또는 복수의 읽기 상태)
암시적 전환가능 (Promotion)

https://learn.microsoft.com/en-us/windows/win32/direct3d12/using-resource-barriers-to-synchronize-resource-states-in-direct3d-12

“When this access occurs the promotion acts like an implicit resource barrier. For subsequent accesses, resource barriers will be required to change the resource state if necessary.”

첫 접근 이후에는 배리어 필요(= NON-COMMON ↔ NON-COMMON 전환은 명시적)

https://learn.microsoft.com/en-us/windows/win32/direct3d12/using-resource-barriers-to-synchronize-resource-states-in-direct3d-12

State decay to common

The flip-side of common state promotion is decay back to D3D12_RESOURCE_STATE_COMMON. Resources that meet certain requirements are considered to be stateless and effectively return to the common state when the GPU finishes execution of an ExecuteCommandLists operation. Decay does not occur between command lists executed together in the same ExecuteCommandLists call.

The following resources will decay when an ExecuteCommandLists operation is completed on the GPU:

다른상태로 전환후에 다시 Common 으로 자동으로 돌아오는 경우이다.

다시 Common 으로 돌아오는 것을 decay 라고 한다.

대표적으로 Copy Queue 의 경우 초기에 COMMON 상태로 넘기면 내부적으로 알아서 COMMON → COPY_DEST → COMMON 으로 처리한다.

단 반드시 초기 상태는 COMMON 이어야한다.

<aside> 💡

</aside>

Implicit State Transitions