Compartir a través de


PFND3D11DDI_DISPATCHINDIRECT función de devolución de llamada (d3d10umddi.h)

La función DispatchIndirect ejecuta el sombreador de proceso.

Sintaxis

PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;

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

Parámetros

unnamedParam1

hDevice [in]

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

hBufferForArgs [in]

Identificador de un búfer que contiene tres valores UINT que contienen los tamaños, en grupos de subprocesos, de las dimensiones X, Y y Z de la cuadrícula del grupo de subprocesos. El búfer contiene la siguiente estructura estrechamente empaquetada:

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

unnamedParam3

AlignedByteOffsetForArgs [in]

Desplazamiento, en bytes, en el búfer que hBufferForArgs especifica. AlignedByteOffsetForArgs debe ser un múltiplo de 4.

Valor devuelto

None

Observaciones

El controlador puede usar la función de devolución de llamada pfnSetErrorCb para establecer un código de error.

La función DispatchIndirect realiza la misma tarea que la llamada a la función Dispatch del controlador. El tiempo de ejecución de Direct3D llama a la función DispatchIndirect del controlador en el dispositivo de visualización para ejecutar el sombreador de proceso en una serie de subprocesos en una cuadrícula de grupos de subprocesos. Sin embargo, DispatchIndirect obtiene el número de grupos de subprocesos que se van a ejecutar desde el contenido del búfer que especifica el parámetro hBufferForArgs . DispatchIndirect lee tres valores UINT, empezando por el desplazamiento de bytes que especifica el parámetro AlignedByteOffsetForArgs .

Cuando el tiempo de ejecución de Direct3D llama a la función CreateResource(D3D11) del controlador para crear el recurso de búfer que especifica el parámetro hBufferForArgs , el runtime debe establecer la marca D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS en el miembro MiscFlags de la estructura D3D11DDIARG_CREATERESOURCE .

El controlador no debe encontrar ningún error, excepto por D3DDDIERR_DEVICEREMOVED. Por lo tanto, si el controlador pasa algún error, excepto por D3DDDIERR_DEVICEREMOVED, en una llamada a la función pfnSetErrorCb , el tiempo de ejecución de Direct3D determina que el error es crítico. Incluso si se quita el dispositivo, no es necesario que el controlador devuelva D3DDDIERR_DEVICEREMOVED; Sin embargo, si la eliminación de dispositivos interfiere con el funcionamiento de DispatchIndirect (que normalmente no debería ocurrir), el controlador puede devolver D3DDDIERR_DEVICEREMOVED.

Requisitos

Requisito Value
Cliente mínimo compatible DispatchIndirect se admite a partir del sistema operativo Windows 7.
Plataforma de destino Escritorio
Encabezado d3d10umddi.h (incluya D3d10umddi.h)

Consulte también

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb