다음을 통해 공유


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 구조체의 인스턴스입니다.

BroadcastContextCount

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

BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]

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

pPrivateDriverData

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

PrivateDriverDataSize

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

NumPrimaries

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

WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES]

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

MarkerLogType

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

RenderCBSequence

pfnRenderCb 함수 호출에 대한 고유 식별자입니다. 단일 스레드 사용자 모드 DDIS와 연결된 컨텍스트의 경우 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