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