Freigeben über


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 in Threadgruppen des X-, Y- und Z-Dimensionen des Threadgruppenrasters enthalten. Der Puffer enthält die folgende eng gepackte Struktur:

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

unnamedParam3

AlignedByteOffsetForArgs [in]

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

Rückgabewert

Nichts

Bemerkungen

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

Die DispatchIndirect-Funktion führt dieselbe Aufgabe wie der Aufruf der Dispatch-Funktion des Treibers aus. Die Direct3D-Laufzeit 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 Threadgruppen ab, die aus dem Inhalt des Puffers ausgeführt werden sollen, den der hBufferForArgs Parameter angibt. DispatchIndirect- liest drei UINT-Werte ab, beginnend mit dem Byte-Offset, den der parameter AlignedByteOffsetForArgs angibt.

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

Der Treiber sollte keinen Fehler haben, mit Ausnahme von D3DDDIERR_DEVICEREMOVED. Wenn der Treiber daher einen Fehler außer D3DDDIERR_DEVICEREMOVED übergibt, bestimmt die Direct3D-Laufzeit in einem Aufruf der pfnSetErrorCb--Funktion, dass der Fehler kritisch ist. Auch wenn das Gerät entfernt wird, ist der Treiber nicht erforderlich, um D3DDDIERR_DEVICEREMOVED zurückzugeben; Wenn die Geräteentfernung jedoch den Betrieb von DispatchIndirect beeinträchtigt (was normalerweise nicht geschehen sollte), kann der Treiber D3DDDIERR_DEVICEREMOVED zurückgeben.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- DispatchIndirect wird beginnend mit dem Windows 7-Betriebssystem unterstützt.
Zielplattform- Desktop
Header- d3d10umddi.h (include D3d10umddi.h)

Siehe auch

CreateResource(D3D11)-

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Versand

pfnSetErrorCb