D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_TYPE 열거형(d3d12umddi.h)

PFND3D12DDI_BEGIN_RENDER_PASS 호출에 대한 리소스 액세스 유형을 선언합니다.

Syntax

typedef enum D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_TYPE {
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_DISCARD,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_PRESERVE,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_NO_ACCESS,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_WRITING,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ
} ;

상수

 
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_DISCARD
애플리케이션에 리소스의 이전 콘텐츠에 대한 종속성이 없음을 나타냅니다.

지정된 구현은 이전에 작성한 콘텐츠를 반환하거나 초기화되지 않은 데이터를 반환할 수 있습니다. 그러나 리소스에서 읽는 것이 GPU 중단을 생성해서는 안 됩니다. '읽기'는 최악의 경우 정의되지 않은 데이터만 반환할 수 있습니다.
읽기는 기존으로 정의됩니다.

* UAV(순서가 지정되지 않은 액세스 뷰)
* SRV(셰이더 리소스 뷰)
* CBV(상수 버퍼 뷰)
* VBV(꼭짓점 버퍼 뷰)
* IBV(인덱스 버퍼 뷰)
* IndirectArg 바인딩/읽기
* blend/depth-testing-유도 읽기
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_PRESERVE
애플리케이션이 리소스의 이전 콘텐츠에 종속되어 있으며 기본 메모리에서 콘텐츠를 로드해야 함을 나타냅니다.
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR
애플리케이션에 특정(앱 제공) 색으로 지워지는 리소스에 대한 종속성이 있음을 나타냅니다.

참고

리소스가 Render Pass 이외의 항목과 상호 작용했는지 여부가 명확합니다.

API를 사용하면 애플리케이션이 D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS 구조를 통해PFND3D12DDI_BEGIN_RENDER_PASS 호출에서 명확한 값을 지정할 수 있습니다.

D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_NO_ACCESS
렌더링 패스 중에 리소스를 읽거나 쓸 수 없음을 나타냅니다. 이 값은 DSV(데이터 원본 뷰)의 깊이/스텐실 평면에 액세스하지 못했는지 여부도 나타냅니다.

중요

이 필드는 D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE D3D12DDI_RENDER_PASS_ENDING_ACCESS_NO_ACCESS 플래그와 페어링되어야 합니다.

D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_WRITING
애플리케이션이 다음 조건에서 쓰기를 다시 시작하도록 나타냅니다.

* 이전 렌더링 패스에서 이전에 작성된 표면에 쓰기를 다시 시작합니다.
* D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE 열거형에 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_WRITING 플래그가 있습니다.
* 두 렌더링 패스 사이에 발생한 중간 GPU 작업이 없습니다.

다시 시작할 렌더링 패스의 쓰기는 일시 중단 렌더링 패스의 쓰기 직후에 발생합니다.
이 플래그의 목적은 온칩 캐시를 플러시하지 않고 여러 명령 목록에 걸쳐 있도록 동일한 렌더링 대상에 대한 쓰기를 허용하는 것입니다.
동일한 ExecuteCommandLists 그룹에서 일시 중단/다시 시작 명령 Lists 실행(뒤로)하는 한 별도의 명령 목록의 렌더링 패스에서 쓰기가 다시 시작될 수 있습니다.
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ
애플리케이션이 이전에 즉시 GPU에 의해 작성된 리소스(즉, 여전히 타일 캐시에 있음)에서 읽고자 하며 픽셀 로컬 방식으로 읽도록 지정합니다(즉, 읽기는 항상 정확한 출력 픽셀 또는 인접 픽셀에 있음).

이 열거형 값은 D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE 열거형의 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ 값과 쌍을 이루며, 가능한 경우 두 후속 Render Pass 작업 간에 플러시를 실행하지 않고 리소스를 읽을 수 있도록 하는 것입니다.

특히 애플리케이션은 다음을 보증합니다.

* 리소스는 이전에 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ '쓰기' 특성을 가진 렌더링 패스에 기록되었습니다.
* 이전 렌더링 패스의 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ 현재 렌더링 패스 간에 GPU 작업이 발생하지 않았습니다.
* 동일한 명령 목록 내에서 또는 동일한 ExecuteCommandLists 호출의 명령 Lists 간에 D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ 연결될 수 있지만 별도의 ExecuteCommandLists 호출에는 연결되지 않습니다.
* 에서 읽을 리소스는 새로 바인딩된 렌더링 대상의 크기와 형식과 일치합니다.
* 모든 읽기/쓰기는 '1 대 1'(앱에서 지정한 선택적 여백 읽기 픽셀 포함)이며, 원본 텍스처의 읽기는 대상 텍스처의 동일한 위치에 쓰여지고 렌더링 대상 텍스처는 원본 텍스처와 동일한 크기입니다.

읽기의 커널 크기(필요한 주변 픽셀 수)는 D3D12_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ_PARAMETERS AdditionalWidth/AdditionalHeight 필드를 통해 PFND3D12DDI_BEGIN_RENDER_PASS 시간에 지정됩니다. AdditionalWidth/AdditionalHeight 매개 변수는 이전 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ_PARAMETERS 매개 변수와 일치해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1809
머리글 d3d12umddi.h