PFND3D11DDI_DISPATCHINDIRECT 콜백 함수(d3d10umddi.h)
DispatchIndirect 함수는 컴퓨팅 셰이더를 실행합니다.
구문
PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;
void Pfnd3d11ddiDispatchindirect(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3
)
{...}
매개 변수
unnamedParam1
hDevice [in]
디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.
unnamedParam2
hBufferForArgs [in]
스레드 그룹 그리드의 X, Y 및 Z 차원의 크기(스레드 그룹)를 포함하는 세 개의 UINT 값이 포함된 버퍼에 대한 핸들입니다. 버퍼에는 다음과 같은 긴밀하게 압축된 구조체가 포함됩니다.
struct DispatchArgs {
UINT ThreadGroupCountX;
UINT ThreadGroupCountY;
UINT ThreadGroupCountZ;
}
unnamedParam3
AlignedByteOffsetForArgs [in]
hBufferForArgs가 지정하는 버퍼에 대한 오프셋(바이트)입니다. AlignedByteOffsetForArgs 는 4의 배수여야 합니다.
반환 값
없음
설명
드라이버는 pfnSetErrorCb 콜백 함수를 사용하여 오류 코드를 설정할 수 있습니다.
DispatchIndirect 함수는 드라이버의 Dispatch 함수 호출과 동일한 작업을 수행합니다. Direct3D 런타임은 디스플레이 디바이스에서 드라이버의 DispatchIndirect 함수를 호출하여 스레드 그룹 그리드의 여러 스레드에서 컴퓨팅 셰이더를 실행합니다. 그러나 DispatchIndirect 는 hBufferForArgs 매개 변수가 지정하는 버퍼의 내용에서 실행할 스레드 그룹의 수를 가져옵니다. DispatchIndirect 는 AlignedByteOffsetForArgs 매개 변수가 지정하는 바이트 오프셋부터 세 개의 UINT 값을 읽습니다.
Direct3D 런타임이 드라이버의 CreateResource(D3D11) 함수를 호출하여 hBufferForArgs 매개 변수가 지정하는 버퍼 리소스를 만들 때 런타임은 D3D11DDIARG_CREATERESOURCE 구조체의 MiscFlags 멤버에서 D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS 플래그를 설정해야 합니다.
드라이버는 D3DDDIERR_DEVICEREMOVED 제외하고 오류가 발생하지 않아야 합니다. 따라서 드라이버가 pfnSetErrorCb 함수에 대한 호출에서 D3DDDIERR_DEVICEREMOVED 제외하고 오류를 전달하는 경우 Direct3D 런타임은 오류가 중요하다고 결정합니다. 디바이스가 제거되더라도 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 필요가 없습니다. 그러나 디바이스 제거가 DispatchIndirect (일반적으로 발생하지 않아야 하는) 작업을 방해하는 경우 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | DispatchIndirect는 Windows 7 운영 체제부터 지원됩니다. |
대상 플랫폼 | 데스크톱 |
머리글 | d3d10umddi.h(D3d10umddi.h 포함) |