Partager via


PFND3D11DDI_DISPATCHINDIRECT fonction de rappel (d3d10umddi.h)

La fonction DispatchIndirect exécute le nuanceur de calcul.

Syntaxe

PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;

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

Paramètres

unnamedParam1

hDevice [in]

Handle de l’appareil d’affichage (contexte graphique).

unnamedParam2

hBufferForArgs [in]

Handle vers une mémoire tampon qui contient trois valeurs UINT qui contiennent les tailles, dans les groupes de threads, des dimensions X, Y et Z de la grille de groupe de threads. La mémoire tampon contient la structure serrée suivante :

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

unnamedParam3

AlignedByteOffsetForArgs [in]

Offset, en octets, dans la mémoire tampon qui hBufferForArgs spécifie. AlignedByteOffsetForArgs doit être un multiple de 4.

Valeur de retour

Aucun

Remarques

Le pilote peut utiliser la fonction de rappel pfnSetErrorCb pour définir un code d’erreur.

La fonction DispatchIndirect effectue la même tâche que l’appel à la fonction Dispatch du pilote. Le runtime Direct3D appelle la fonction DispatchIndirect du pilote sur l’appareil d’affichage pour exécuter le nuanceur de calcul sur un certain nombre de threads dans une grille de groupes de threads. Toutefois, DispatchIndirect obtient le nombre de groupes de threads à exécuter à partir du contenu de la mémoire tampon spécifiée par le paramètre hBufferForArgs. DispatchIndirect lit trois valeurs UINT, en commençant par le décalage d’octet spécifié par le paramètre AlignedByteOffsetForArgs.

Lorsque le runtime Direct3D appelle la fonction CreateResource(D3D11) du pilote pour créer la ressource de mémoire tampon spécifiée par le paramètre hBufferForArgs, le runtime doit définir l’indicateur D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS dans le MiscFlags membre de la structure D3D11DDIARG_CREATERESOURCE.

Le pilote ne doit pas rencontrer d’erreur, à l’exception de D3DDDIERR_DEVICEREMOVED. Par conséquent, si le pilote transmet une erreur, à l’exception de D3DDDIERR_DEVICEREMOVED, dans un appel à la fonction pfnSetErrorCb, le runtime Direct3D détermine que l’erreur est critique. Même si l’appareil est supprimé, le pilote n’est pas tenu de retourner D3DDDIERR_DEVICEREMOVED ; Toutefois, si la suppression de l’appareil interfère avec l’opération de dispatchIndirect (ce qui ne doit généralement pas se produire), le pilote peut retourner D3DDDIERR_DEVICEREMOVED.

Exigences

Exigence Valeur
client minimum pris en charge DispatchIndirect est pris en charge à partir du système d’exploitation Windows 7.
plateforme cible Bureau
d’en-tête d3d10umddi.h (include D3d10umddi.h)

Voir aussi

createResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb