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