다음을 통해 공유


D3D12DDI_WORK_GRAPH_DESC_0108 구조체(d3d12umddi.h)

D3D12DDI_WORK_GRAPH_DESC_0108 구조체는 D3D12DDI_STATE_SUBOBJECT_TYPE_WORK_GRAPH 형식의 상태 하위 개체를 정의합니다.

구문

typedef struct D3D12DDI_WORK_GRAPH_DESC_0108 {
  LPCWSTR                             ProgramName;
  UINT                                Version;
  D3D12DDI_WORK_GRAPH_FLAGS_0108      Flags;
  UINT                                NumNodes;
  const D3D12DDI_NODE_LIST_ENTRY_0108 *pNodes;
  UINT                                NumEntrypoints;
  const D3D12DDI_NODE_LIST_ENTRY_0108 *pEntrypoints;
} D3D12DDI_WORK_GRAPH_DESC_0108;

멤버

ProgramName

작업 그래프의 이름입니다. 이 이름은 지정된 상태 개체에서 고유합니다.

Version

0부터 시작하는 이 작업 그래프의 버전 번호입니다. PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 사용하는 경우 이 값은 새 버전에 대해 증가합니다.

상태 개체가 다른 부분(아마도 다른 작업 그래프)에 몇 가지 추가된 상태 개체가 새로 만든 작업 그래프를 추가하는 경우 상태 개체 자체에 몇 번의 반복이 있었음에도 불구하고 새 작업 그래프의 초기 모양에 대해 Version은 0이 됩니다. 마찬가지로 상태 개체의 다른 부분에 추가되지만 해당 개체의 특정 작업 그래프가 단독으로 남아 있는 경우 다음에 작업 그래프 자체에 추가될 때까지 해당 버전이 변경되지 않습니다. Version 값은 D3D12DDI_NODE_0108VersionAdded 필드에 사용되는 것과 동일한 번호 매기기입니다.

Flags

작업 그래프의 동작을 제어하는 플래그를 지정하는 D3D12DDI_WORK_GRAPH_FLAGS_0108 열거형입니다.

NumNodes

추가가 발생하는 경우 기존 노드를 포함하여 작업 그래프 내의 노드 수입니다. 이 값은 pNodes 배열의 요소 수를 결정합니다.

pNodes

각 항목이 작업 그래프의 노드 정의를 나타내는 D3D12DDI_NODE_LIST_ENTRY_0108 구조체 배열에 대한 포인터입니다.

D3D12DDI_WORK_GRAPH_FLAG_ADD_TO_EXISTING_WORK_GRAPH 플래그를 사용하더라도 pNodes는 그래프의 모든 노드 목록을 가리킵니다. 목록의 시작 부분에 새 노드가 나타납니다.

NumEntrypoints

추가가 발생하는 경우 이미 기존 항목을 포함한 진입점 수입니다. 이 값은 pEntrypoints 배열의 요소 수를 결정합니다.

pEntrypoints

각 항목이 작업 그래프의 진입점을 나타내는 D3D12DDI_NODE_LIST_ENTRY_0108 구조체 배열에 대한 포인터입니다.

D3D12DDI_WORK_GRAPH_FLAG_ADD_TO_EXISTING_WORK_GRAPH 플래그를 사용하더라도 pEntryPoints는 모든 진입점 목록을 가리킵니다. 목록의 시작 부분에 새 진입점이 표시되고 이전 버전 이후에 진입점 인덱스 번호 매기기를 계속합니다. 예를 들어 그래프의 초기 버전에 두 개의 진입점이 있다고 가정합니다. 이 목록에는 두 개의 항목이 있으며 드라이버는 PFND3D12DDI_DISPATCH_GRAPH_0108 레코드 할당에 대해 각각 진입점 인덱스 [0] 및 [1]이 있음을 유추해야 합니다. 추가가 발생하는 경우 3개의 새 진입점이 있는 경우 새 그래프 버전의 목록에는 5개의 진입점 항목이 있고 목록의 시작 부분에 새 항목이 포함됩니다. 드라이버는 목록의 시작 부분에 있는 3개의 새 항목(새 버전이 있는 항목)의 진입점 인덱스를 유추해야 하므로 전체 목록은 [2], [3], [4], [0], [1]입니다. 이상적으로 이러한 할당은 DDI의 런타임에서 제공되었으므로 드라이버가 이를 파악할 필요가 없지만 누락되었으며 수정하기에 충분하지 않은 것으로 간주되었습니다.

설명

D3D12DDI_WORK_GRAPH_DESC_0108 구조는 작업 그래프를 설명합니다. 작업 그래프 자체는 각 노드가 작업 단위 또는 태스크를 나타내는 노드의 컬렉션입니다. 노드는 실행 순서를 정의하는 서로 종속성을 가질 수 있습니다. 진입점은 실행을 시작할 수 있는 노드이며 일반적으로 종속성이 없는 노드 또는 즉시 실행할 수 있는 노드입니다.

런타임은 진입점을 나열하거나 사용 가능한 모든 노드를 사용하도록 요청하여 작업 그래프를 정의할 수 있는 것과 같은 API 수준에서 편의를 제공합니다. 런타임은 API 작업 그래프 정의를 사용하고, 유효성을 검사하고, 이 D3D12DDI_WORK_GRAPH_DESC_0108 구조에 표시된 그래프의 최종 노드 집합을 드라이버에 제공합니다.

자세한 내용은 작업 그래프를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11 버전 24H2(WDDM 3.2)
머리글 d3d12umddi.h

추가 정보

D3D12DDI_NODE_LIST_ENTRY_0108

D3D12DDI_STATE_SUBOBJECT_TYPE

D3D12DDI_WORK_GRAPH_FLAGS_0108

PFND3D12DDI_ADD_TO_STATE_OBJECT_0072

PFND3D12DDI_CREATE_STATE_OBJECT_0054

PFND3D12DDI_DISPATCH_GRAPH_0108