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 포함) |