다음을 통해 공유


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 함수를 호출하여 스레드 그룹 그리드의 여러 스레드에서 컴퓨팅 셰이더를 실행합니다. 그러나 DispatchIndirecthBufferForArgs 매개 변수가 지정하는 버퍼의 내용에서 실행할 스레드 그룹의 수를 가져옵니다. DispatchIndirectAlignedByteOffsetForArgs 매개 변수가 지정하는 바이트 오프셋부터 세 개의 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 포함)

추가 정보

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb