Compartilhar via


Funções de namespace Concurrency::direct3d (AMP)

Requisitos

Cabeçalho:Namespace amp.h: Simultaneidade

abs

Calcula o valor absoluto do argumento

inline int abs(int _X) restrict(amp);

Parâmetros

_X
Valor inteiro

Valor de retorno

Retorna o valor absoluto do argumento.

clamp

Calcula o valor do primeiro argumento especificado fixado em um intervalo definido pelo segundo e terceiro argumentos especificados.

inline float clamp(
    float _X,
    float _Min,
    float _Max) restrict(amp);

inline int clamp(
    int _X,
    int _Min,
    int _Max) restrict(amp);

Parâmetros

_X
O valor a ser fixado

_Min
O limite inferior do intervalo de fixação.

_Max
O limite superior do intervalo de fixação.

Valor de retorno

O valor fixado de _X.

countbits

Conta o número de bits definidos em _X

inline unsigned int countbits(unsigned int _X) restrict(amp);

Parâmetros

_X
Valor inteiro sem sinal

Valor de retorno

Retorna o número de bits definidos em _X

create_accelerator_view

Cria um objeto accelerator_view de um ponteiro para uma interface de dispositivo Direct3D.

Sintaxe

accelerator_view create_accelerator_view(
    IUnknown * _D3D_device
    queuing_mode _Qmode = queuing_mode_automatic);

accelerator_view create_accelerator_view(
    accelerator& _Accelerator,
    bool _Disable_timeout
    queuing_mode _Qmode = queuing_mode_automatic);

Parâmetros

_Accelerator
O acelerador no qual o novo accelerator_view será criado.

_D3D_device
O ponteiro para a interface do dispositivo Direct3D.

_Disable_timeout
Um parâmetro booliano que especifica se o tempo limite deve ser desabilitado para o accelerator_view recém-criado. Isso corresponde ao sinalizador D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT para a criação de dispositivo Direct3D e é usado para indicar se o sistema operacional deve permitir cargas de trabalho que levam mais de 2 segundos para serem executadas sem redefinir o dispositivo de acordo com o mecanismo de recuperação e detecção de tempo limite do Windows. É recomendável usar esse sinalizador se você precisar executar tarefas demoradas no accelerator_view.

_Qmode
O queuing_mode a ser usado para o accelerator_view recém-criado. Esse parâmetro tem um valor padrão de queuing_mode_automatic.

Valor de retorno

O objeto accelerator_view criado a partir da interface do dispositivo Direct3D passada.

Comentários

Essa função cria um novo objeto accelerator_view de um ponteiro existente para uma interface de dispositivo Direct3D. Se a chamada de função for bem-sucedida, a contagem de referência do parâmetro será incrementada por meio de uma chamada AddRef para a interface. Você pode liberar o objeto com segurança quando ele não for mais necessário em seu código DirectX. Se a chamada de método falhar, será gerado um runtime_exception.

O objeto accelerator_view que você cria usando essa função é thread-safe. Você deve sincronizar o uso simultâneo do objeto accelerator_view. O uso simultâneo não sincronizado do objeto accelerator_view e a interface ID3D11Device bruta causam um comportamento indefinido.

O runtime do C++ AMP fornece informações de erro detalhadas no modo de depuração usando a camada de depuração D3D se você usar o sinalizador D3D11_CREATE_DEVICE_DEBUG.

d3d_access_lock

Adquira um bloqueio em um accelerator_view com a finalidade de executar com segurança operações D3D em recursos compartilhados com o accelerator_view. O accelerator_view e todos os recursos C++ AMP associados a ele assumem esse bloqueio internamente ao executar operações e serão bloqueados enquanto outro thread mantém o bloqueio de acesso D3D. Esse bloqueio não é recursivo. Ocorrerá um comportamento indefinido ao chamar essa função de um thread que já contenha o bloqueio. Ocorrerá um comportamento indefinido ao executar operações no accelerator_view ou qualquer contêiner de dados associado a ele do thread que contém o bloqueio de acesso D3D. Consulte também scoped_d3d_access_lock, uma classe no estilo RAII para um bloqueio de acesso D3D baseado em escopo.

void __cdecl d3d_access_lock(accelerator_view& _Av);

Parâmetros

_Av
O accelerator_view a ser bloqueado.

d3d_access_try_lock

Tentativa de adquirir o bloqueio de acesso D3D em um accelerator_view sem bloqueio.

bool __cdecl d3d_access_try_lock(accelerator_view& _Av);

Parâmetros

_Av
O accelerator_view a ser bloqueado.

Valor de retorno

true se o bloqueio foi adquirido ou false se ele está atualmente mantido por outro thread.

d3d_access_unlock

Libera o bloqueio de acesso D3D no accelerator_view determinado. Se o thread de chamada não mantiver o bloqueio no accelerator_viewm os resultados serão indefinidos.

void __cdecl d3d_access_unlock(accelerator_view& _Av);

Parâmetros

_Av
O accelerator_view para o qual o bloqueio será liberado.

firstbithigh

Obtém o local do primeiro bit definido em _X, começando com o bit de ordem mais alta e movendo-se para o bit de ordem mais baixa.

inline int firstbithigh(int _X) restrict(amp);

Parâmetros

_X
Valor inteiro

Valor de retorno

O local do primeiro bit definido

firstbitlow

Obtém o local do primeiro bit definido em _X, começando com o bit de ordem mais baixa e indo em direção ao bit de ordem mais alta.

inline int firstbitlow(int _X) restrict(amp);

Parâmetros

_X
Valor inteiro

Valor de retorno

Retorna o local do primeiro bit definido

get_buffer

Obtém a interface de buffer Direct3D subjacente à matriz especificada.

template<
    typename value_type,
    int _Rank
>
IUnknown *get_buffer(
    const array<value_type, _Rank>& _Array)  ;

Parâmetros

value_type
O tipo de elementos na matriz.

_Rank
A classificação da matriz.

_Array
Uma matriz em um accelerator_view Direct3D para o qual a interface de buffer Direct3D subjacente é retornada.

Valor de retorno

O ponteiro da interface IUnknown correspondente ao buffer do Direct3D subjacente à matriz.

get_device

Obtém a interface do dispositivo D3D subjacente a um accelerator_view.

IUnknown* get_device(const accelerator_view Av);

Parâmetros

Av
O accelerator_view D3D para o qual a interface do dispositivo D3D subjacente é retornada.

Valor retornado

O ponteiro IUnknown da interface do dispositivo D3D subjacente ao accelerator_view.

imax

Determinar o valor numérico máximo dos argumentos

inline int imax(
    int _X,
    int _Y) restrict(amp);

Parâmetros

_X
Valor inteiro

_Y
Valor inteiro

Valor de retorno

Retornar o valor numérico máximo dos argumentos

imin

Determinar o valor numérico mínimo dos argumentos

inline int imin(
    int _X,
    int _Y) restrict(amp);

Parâmetros

_X
Valor inteiro

_Y
Valor inteiro

Valor de retorno

Retornar o valor numérico mínimo dos argumentos

is_timeout_disabled

Retorna um sinalizador booliano que indica se o tempo limite está desabilitado para o accelerator_view especificado. Isso corresponde ao sinalizador D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT para a criação do dispositivo Direct3D.

bool __cdecl is_timeout_disabled(const accelerator_view& _Accelerator_view);

Parâmetros

_Accelerator_view
O accelerator_view para o qual a configuração de tempo limite desabilitada deve ser consultada.

Valor de retorno

Um sinalizador booliano que indica se o tempo limite está desabilitado para o accelerator_view especificado.

mad

Calcula o produto do primeiro e do segundo argumento especificado e adiciona o terceiro argumento especificado.

inline float mad(
    float _X,
    float _Y,
    float _Z) restrict(amp);

inline double mad(
    double _X,
    double _Y,
    double _Z) restrict(amp);

inline int mad(
    int _X,
    int _Y,
    int _Z) restrict(amp);

inline unsigned int mad(
    unsigned int _X,
    unsigned int _Y,
    unsigned int _Z) restrict(amp);

Parâmetros

_X
O primeiro argumento especificado.

_Y
O segundo argumento especificado.

_Z
O terceiro argumento especificado.

Valor de retorno

O resultado de _X * _Y + _Z.

make_array

Cria uma matriz a partir de um ponteiro da interface do buffer Direct3D.

template<
    typename value_type,
    int _Rank
>
array<value_type, _Rank> make_array(
    const extent<_Rank>& _Extent,
    const Concurrency::accelerator_view& _Rv,
    IUnknown* _D3D_buffer)  ;

Parâmetros

value_type
O tipo de elemento da matriz a ser criada.

_Rank
A classificação da matriz a ser criada.

_Extent
Uma extensão que descreve a forma de agregação da matriz.

_Rv
Uma exibição do acelerador D3D na qual a matriz deve ser criada.

_D3D_buffer
Ponteiro da interface IUnknown do buffer D3D para criar a matriz.

Valor de retorno

Uma matriz criada usando o buffer do Direct3D fornecido.

noise

Gera um valor aleatório usando o algoritmo de ruído Perlin

inline float noise(float _X) restrict(amp);

Parâmetros

_X
Valor de ponto flutuante do qual gerar ruído de Perlin

Valor de retorno

Retorna o valor de ruído Perlin dentro de um intervalo entre -1 e 1

radians

Converte _X de graus em radianos

inline float radians(float _X) restrict(amp);

Parâmetros

_X
Valor de ponto flutuante

Valor de retorno

Retorna _X convertido de graus em radianos

rcp

Calcula a recíproca do argumento especificado usando uma aproximação rápida.

inline float rcp(float _X) restrict(amp);

inline double rcp(double _X) restrict(amp);

Parâmetros

_X
O valor para o qual calcular a recíproca.

Valor de retorno

A recíproca do argumento especificado.

reversebits

Inverte a ordem dos bits no _X

inline unsigned int reversebits(unsigned int _X) restrict(amp);

Parâmetros

_X
Valor inteiro sem sinal

Valor de retorno

Retorna o valor com a ordem de bit invertida em _X

saturate

Fixa _X dentro do intervalo de 0 a 1

inline float saturate(float _X) restrict(amp);

Parâmetros

_X
Valor de ponto flutuante

Valor de retorno

Retorna _X fixado dentro do intervalo de 0 a 1

sign

Determina o sinal do argumento especificado.

inline int sign(int _X) restrict(amp);

Parâmetros

_X
Valor inteiro

Valor de retorno

O sinal do argumento.

smoothstep

Retorna uma interpolação Hermite suave entre 0 e 1, se _X estiver no intervalo [_Min, _Max].

inline float smoothstep(
    float _Min,
    float _Max,
    float _X) restrict(amp);

Parâmetros

_Min
Valor de ponto flutuante

_Max
Valor de ponto flutuante

_X
Valor de ponto flutuante

Valor de retorno

Retorna 0 se _X for menor que _Min e 1 se for maior que _Max; caso contrário, um valor entre 0 e 1 se _X estiver no intervalo [_Min, _Max]

step

Compara dois valores, retornando 0 ou 1 com base em qual valor é maior

inline float step(
    float _Y,
    float _X) restrict(amp);

Parâmetros

_Y
Valor de ponto flutuante

_X
Valor de ponto flutuante

Valor de retorno

Retorna 1 se o _X for maior ou igual a _Y; caso contrário, 0

umax

Determinar o valor numérico máximo dos argumentos

inline unsigned int umax(
    unsigned int _X,
    unsigned int _Y) restrict(amp);

Parâmetros

_X
Valor inteiro

_Y
Valor inteiro

Valor de retorno

Retornar o valor numérico máximo dos argumentos

umin

Determinar o valor numérico mínimo dos argumentos

inline unsigned int umin(
    unsigned int _X,
    unsigned int _Y) restrict(amp);

Parâmetros

_X
Valor inteiro

_Y
Valor inteiro

Valor de retorno

Retornar o valor numérico mínimo dos argumentos

Confira também

Namespace Concurrency::direct3d