PFND3D11DDI_DISPATCHINDIRECT Rückruffunktion (d3d10umddi.h)

Die DispatchIndirect-Funktion führt den Compute-Shader aus.

Syntax

PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;

void Pfnd3d11ddiDispatchindirect(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3
)
{...}

Parameter

unnamedParam1

hDevice [in]

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

hBufferForArgs [in]

Ein Handle für einen Puffer, der drei UINT-Werte enthält, die die Größen der X-, Y- und Z-Dimensionen des Threadgruppenrasters in Threadgruppen enthalten. Der Puffer enthält die folgende eng gepackte Struktur:

struct DispatchArgs {
  UINT ThreadGroupCountX; 
  UINT ThreadGroupCountY;
  UINT ThreadGroupCountZ;
}

unnamedParam3

AlignedByteOffsetForArgs [in]

Der Offset in Bytes in den Puffer, den hBufferForArgs angibt. AlignedByteOffsetForArgs muss ein Vielfaches von 4 sein.

Rückgabewert

Keine

Bemerkungen

Der Treiber kann die Rückruffunktion pfnSetErrorCb verwenden, um einen Fehlercode festzulegen.

Die DispatchIndirect-Funktion führt dieselbe Aufgabe wie der Aufruf der Dispatch-Funktion des Treibers aus. Die Direct3D-Runtime ruft die DispatchIndirect-Funktion des Treibers auf dem Anzeigegerät auf, um den Compute-Shader über eine Reihe von Threads in einem Raster von Threadgruppen auszuführen. DispatchIndirect ruft jedoch die Anzahl der auszuführenden Threadgruppen aus dem Inhalt des Puffers ab, den der hBufferForArgs-Parameter angibt. DispatchIndirect liest drei UINT-Werte ab dem Byteoffset, den der AlignedByteOffsetForArgs-Parameter angibt.

Wenn die Direct3D-Runtime die CreateResource(D3D11) -Funktion des Treibers aufruft, um die Pufferressource zu erstellen, die der hBufferForArgs-Parameter angibt, muss die Runtime das D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS-Flag im MiscFlags-Member der D3D11DDIARG_CREATERESOURCE-Struktur festlegen.

Für den Treiber sollte kein Fehler auftreten, mit Ausnahme von D3DDDIERR_DEVICEREMOVED. Wenn der Treiber in einem Aufruf der PfnSetErrorCb-Funktion einen Fehler mit Ausnahme von D3DDDIERR_DEVICEREMOVED übergibt, ermittelt die Direct3D-Runtime daher, dass der Fehler kritisch ist. Selbst wenn das Gerät entfernt wird, muss der Treiber nicht D3DDDIERR_DEVICEREMOVED zurückgeben. Wenn die Geräteentfernung jedoch den Betrieb von DispatchIndirect beeinträchtigt (was normalerweise nicht erfolgen sollte), kann der Treiber D3DDDIERR_DEVICEREMOVED zurückgeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) DispatchIndirect wird ab dem Windows 7-Betriebssystem unterstützt.
Zielplattform Desktop
Kopfzeile d3d10umddi.h (einschließlich D3d10umddi.h)

Weitere Informationen

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb