D3DDDICB_SUBMITCOMMAND 구조체(d3dumddi.h)

D3DDDICB_SUBMITCOMMAND 구조는 GPU(그래픽 처리 장치) 가상 주소 지정을 지원하는 컨텍스트에서 명령 버퍼를 제출하는 데 사용됩니다.

구문

typedef struct _D3DDDICB_SUBMITCOMMAND {
  D3DGPU_VIRTUAL_ADDRESS      Commands;
  UINT                        CommandLength;
  D3DDDICB_SUBMITCOMMANDFLAGS Flags;
  UINT                        BroadcastContextCount;
  HANDLE                      BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
  VOID                        *pPrivateDriverData;
  UINT                        PrivateDriverDataSize;
  UINT                        NumPrimaries;
  D3DKMT_HANDLE               WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES];
  D3DDDI_MARKERLOGTYPE        MarkerLogType;
  UINT                        RenderCBSequence;
  union {
    struct {
      UINT FirstAPISequenceNumberHigh;
      UINT CompletedAPISequenceNumberLow0Size;
      UINT CompletedAPISequenceNumberLow1Size;
      UINT BegunAPISequenceNumberLow0Size;
      UINT BegunAPISequenceNumberLow1Size;
    };
    UINT BatchedMarkerDataCount;
  };
  union {
    struct {
      const UINT *pCompletedAPISequenceNumberLow0;
      const UINT *pCompletedAPISequenceNumberLow1;
      const UINT *pBegunAPISequenceNumberLow0;
      const UINT *pBegunAPISequenceNumberLow1;
    };
    const D3DDDI_BATCHEDMARKERDATA *pBatchedMarkerData;
  };
  UINT                        Reserved;
  UINT                        NumHistoryBuffers;
  D3DKMT_HANDLE               *HistoryBufferArray;
  HANDLE                      hSyncToken;
  void                        *pReserved;
} D3DDDICB_SUBMITCOMMAND;

멤버

Commands

실행을 위해 컨텍스트에 제출되는 명령에 대한 GPU 가상 주소입니다. 이 정보는 명령 제출 중에 커널 모드 드라이버에 제공되며 디버깅 목적으로도 사용됩니다.

CommandLength

GPU에 제출되는 명령의 길이(바이트)를 지정합니다. 이 정보는 명령 제출 중에 커널 모드 드라이버에 제공되며 디버깅 목적으로도 사용됩니다.

Flags

D3DDDICB_SUBMITCOMMANDFLAGS 구조체의 instance.

BroadcastContextCount

이러한 명령을 제출해야 하는 컨텍스트 수를 지정합니다. 이 개수는 1 이상이어야 합니다.

BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]

지정된 명령을 실행할 컨텍스트의 핸들을 지정합니다.

pPrivateDriverData

이 제출의 일부로 커널 모드 드라이버에 전달할 드라이버 프라이빗 데이터에 대한 포인터입니다.

PrivateDriverDataSize

전달되는 개인 드라이버 데이터 정보의 크기입니다. 이 크기는 제출 프라이빗 드라이버 데이터에 대해 커널 모드 드라이버에서 요청한 크기보다 작아야 합니다.

NumPrimaries

제출된 명령에 의해 기록되는 기본 버퍼 및 스왑 체인 백 버퍼의 수를 지정합니다. 이는 WrittenPrimaries 배열의 할당 수와 같습니다.

WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES]

제출된 명령에 의해 기록되는 기본 및 스왑 체인 백 버퍼에 대한 핸들 배열입니다.

MarkerLogType

사용자 모드 표시 드라이버가 지원하는 ETW(Windows용 이벤트 추적) 로그의 표식 유형을 나타내는 D3DDDI_MARKERLOGTYPE 열거형입니다.

RenderCBSequence

pfnRenderCb 함수 호출에 대한 고유 식별자입니다. 단일 스레드 사용자 모드 DDI와 연결된 컨텍스트의 경우 값 1에서 시작하고 자유 스레드 사용자 모드 DDI와 연결된 컨텍스트의 경우 0x80000001 값까지 범위가 지정됩니다. 사용자 모드 표시 드라이버는 모든 엔진에서 호출하는 각 pfnRenderCb 호출의 값을 증가시켜야 합니다.

FirstAPISequenceNumberHigh

드라이버에서 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용됩니다.

CompletedAPISequenceNumberLow0Size

드라이버에서 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용됩니다.

CompletedAPISequenceNumberLow1Size

드라이버에서 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용됩니다.

BegunAPISequenceNumberLow0Size

드라이버에서 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용됩니다.

BegunAPISequenceNumberLow1Size

드라이버에서 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용됩니다.

BatchedMarkerDataCount

드라이버에서 컨텍스트의 일괄 처리된 표식 데이터 수를 전달하는 데 사용됩니다.

pCompletedAPISequenceNumberLow0

드라이버가 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용하는 포인터입니다.

pCompletedAPISequenceNumberLow1

드라이버가 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용하는 포인터입니다.

pBegunAPISequenceNumberLow0

드라이버가 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용하는 포인터입니다.

pBegunAPISequenceNumberLow1

드라이버가 컨텍스트의 API 시퀀스 번호를 전달하는 데 사용하는 포인터입니다.

pBatchedMarkerData

드라이버가 컨텍스트의 일괄 처리된 표식 데이터를 전달하는 데 사용하는 포인터입니다.

Reserved

이 멤버는 예약되어 있으며 0으로 설정해야 합니다.

NumHistoryBuffers

기록 버퍼의 수입니다.

HistoryBufferArray

기록 버퍼 배열에 대한 포인터입니다.

hSyncToken

pReserved

설명

pfnSubmitCommandCb 코드 경로는 이 명령 중에 읽고 쓸 할당 목록을 제공하기 위해 사용자 모드 드라이버에 대한 할당 목록을 더 이상 제공하지 않습니다. 그러나 할당 목록 없이는 일반적으로 알 수 없는 일부 쓰기를 동기화해야 합니다. 이를 위해 콘텐츠를 표시하기 위해 쓰여지고 사용되는 표면에 대한 새로운 작은 할당 목록입니다. WrittenPrimaries 배열은 이러한 할당을 제공하는 데 사용해야 합니다.

이름에도 불구하고 WrittenPrimaries 에는 주 복제본 외에도 런타임에 따라 SwapChainBackBuffer 할당으로 간주되는 할당이 포함되어야 합니다. 이는 D3D10_DDI_RESOURCE_MISC_FLAG 새 플래그에 의해 사용자 모드 드라이버에 노출됩니다. 런타임은 FlipEx 스왑 체인 또는 기본으로 생성된 리소스 또는 힙을 만들기 위해 호출하는 동안 사용자 모드 드라이버에 D3DWDDM2_0DDI_RESOURCE_MISC_DISPLAYABLE_SURFACE 플래그 제공합니다. 드라이버는 이 플래그를 사용하여 Microsoft Direct3D 11에 대한 WrittenPrimaries 목록에 배치해야 하는 모든 할당을 결정할 수 있습니다. 다른 런타임은 변경되지 않았습니다.

드라이버가 이 플래그가 있는 CreateResource 에 대한 호출을 수신하는 경우 화면에 쓰는 모든 pfnSubmitCommandCb 호출에서 할당을 이 목록에 추가해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
머리글 d3dumddi.h(D3dumddi.h 포함)

추가 정보

D3D10_DDI_RESOURCE_MISC_FLAG

pfnRenderCb

pfnSubmitCommandCb