PFND3D11DDI_DISPATCHINDIRECT função de retorno de chamada (d3d10umddi.h)

A função DispatchIndirect executa o sombreador de computação.

Sintaxe

PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;

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

Parâmetros

unnamedParam1

hDevice [in]

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

hBufferForArgs [in]

Um identificador para um buffer que contém três valores UINT que contêm os tamanhos, em grupos de threads, das dimensões X, Y e Z da grade do grupo de threads. O buffer contém a seguinte estrutura bem empacotada:

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

unnamedParam3

AlignedByteOffsetForArgs [in]

O deslocamento, em bytes, para o buffer que hBufferForArgs especifica. AlignedByteOffsetForArgs deve ser um múltiplo de 4.

Retornar valor

Nenhum

Comentários

O driver pode usar a função de retorno de chamada pfnSetErrorCb para definir um código de erro.

A função DispatchIndirect executa a mesma tarefa que a chamada para a função Dispatch do driver. O runtime do Direct3D chama a função DispatchIndirect do driver no dispositivo de exibição para executar o sombreador de computação em vários threads em uma grade de grupos de threads. No entanto, DispatchIndirect obtém o número de grupos de threads a serem executados do conteúdo do buffer especificado pelo parâmetro hBufferForArgs . DispatchIndirect lê três valores UINT, começando no deslocamento de bytes especificado pelo parâmetro AlignedByteOffsetForArgs .

Quando o runtime do Direct3D chama a função CreateResource(D3D11) do driver para criar o recurso de buffer especificado pelo parâmetro hBufferForArgs , o runtime deve definir o sinalizador D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS no membro MiscFlags da estrutura D3D11DDIARG_CREATERESOURCE .

O driver não deve encontrar nenhum erro, exceto por D3DDDIERR_DEVICEREMOVED. Portanto, se o driver passar algum erro, exceto por D3DDDIERR_DEVICEREMOVED, em uma chamada para a função pfnSetErrorCb , o runtime do Direct3D determinará que o erro é crítico. Mesmo que o dispositivo seja removido, o driver não precisa retornar D3DDDIERR_DEVICEREMOVED; no entanto, se a remoção do dispositivo interferir na operação de DispatchIndirect (o que normalmente não deve acontecer), o driver poderá retornar D3DDDIERR_DEVICEREMOVED.

Requisitos

Requisito Valor
Cliente mínimo com suporte O DispatchIndirect tem suporte a partir do sistema operacional Windows 7.
Plataforma de Destino Área de Trabalho
Cabeçalho d3d10umddi.h (inclua D3d10umddi.h)

Confira também

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb