PFND3D11DDI_DISPATCHINDIRECT funzione di callback (d3d10umddi.h)

La funzione DispatchIndirect esegue lo shader di calcolo.

Sintassi

PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;

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

Parametri

unnamedParam1

hDevice [in]

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

hBufferForArgs [in]

Handle a un buffer contenente tre valori UINT che contengono le dimensioni, nei gruppi di thread, delle dimensioni X, Y e Z della griglia del gruppo di thread. Il buffer contiene la struttura strettamente confezionata seguente:

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

unnamedParam3

AlignedByteOffsetForArgs [in]

Offset, in byte, nel buffer specificato da hBufferForArgs . AlignedByteOffsetForArgs deve essere un multiplo di 4.

Valore restituito

nessuno

Osservazioni

Il driver può usare la funzione di callback pfnSetErrorCb per impostare un codice di errore.

La funzione DispatchIndirect esegue la stessa attività della chiamata alla funzione Dispatch del driver. Il runtime Direct3D chiama la funzione DispatchIndirect del driver nel dispositivo visualizzato per eseguire lo shader di calcolo su un numero di thread in una griglia di gruppi di thread. DispatchIndirect ottiene tuttavia il numero di gruppi di thread da eseguire dal contenuto del buffer specificato dal parametro hBufferForArgs. DispatchIndirect legge tre valori UINT, a partire dall'offset di byte specificato dal parametro AlignedByteOffsetForArgs .

Quando il runtime Direct3D chiama la funzione CreateResource(D3D11) del driver per creare la risorsa buffer specificata dal parametro hBufferForArgs , il runtime deve impostare il flag di D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS nel membro MiscFlagsdella struttura D3D11DDIARG_CREATERESOURCE.

Il driver non deve riscontrare alcun errore, ad eccezione di D3DDDIERR_DEVICEREMOVED. Pertanto, se il driver passa qualsiasi errore, ad eccezione di D3DDDIERR_DEVICEREMOVED, in una chiamata alla funzione pfnSetErrorCb , il runtime Direct3D determina che l'errore è critico. Anche se il dispositivo viene rimosso, il driver non è necessario restituire D3DDDIERR_DEVICEREMOVED; tuttavia, se la rimozione del dispositivo interferisce con l'operazione di DispatchIndirect (che in genere non dovrebbe verificarsi), il driver può restituire D3DDDIERR_DEVICEREMOVED.

Requisiti

Requisito Valore
Client minimo supportato DispatchIndirect è supportato a partire dal sistema operativo Windows 7.
Piattaforma di destinazione Desktop
Intestazione d3d10umddi.h (include D3d10umddi.h)

Vedi anche

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb