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