Freigeben über


Concurrency::direct3d-Namespace-Funktionen (AMP)

Die folgenden Funktionen sind im Concurrency::direct3d Namespace (AMP) definiert:

Anforderungen

Kopfzeile: amp.h

Namespace: Gleichzeitigkeit

abs

Gibt den absoluten Wert des Arguments zurück.

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

Parameter

_X
Ganzzahliger Wert

Rückgabewert

Gibt den absoluten Wert des Arguments zurück.

Klemme

Berechnet den Wert des angegebenen ersten Arguments, das an einen Bereich gebunden ist, der vom zweiten und dritten angegebenen Argument definiert wird.

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

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

Parameter

_X
Der Wert, der eingeklemmt werden soll.

_Min
Die untere Grenze des gebundenen Bereichs.

_Max
Die obere Grenze des Spannbereichs.

Rückgabewert

Der gebundene Wert von _X.

countbits

Zählt die Anzahl der festgelegten Bits in _X.

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

Parameter

_X
Ganzzahliger Wert ohne Vorzeichen

Rückgabewert

Gibt die Anzahl der festgelegten Bits in _Xzurück.

create_Accelerator_Ansicht

Erstellt ein accelerator_view -Objekt von einem Zeiger auf eine Direct3D-Geräteschnittstelle.

Syntax

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);

Parameter

_Beschleuniger
Der Beschleuniger, in dem das neue accelerator_view-Objekt erstellt werden soll.

_D3D_device
Der Zeiger auf die Schnittstelle eines Direct3D-Geräts.

_Disable_timeout
Ein boolescher Parameter, der angibt, ob das Timeout für das neu erstellte accelerator_view-Objekt deaktiviert werden sollte. Dies entspricht dem D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT-Flag für die Erstellung von Direct3D-Geräten und wird verwendet, um anzugeben, ob das Betriebssystem Arbeitslasten zulässt, deren Ausführung mehr als 2 Sekunden dauert, ohne das Gerät über den Windows-TDR-Mechanismus (Timeout Detection and Recovery) zurückzusetzen. Die Verwendung dieses Flags wird empfohlen, wenn Sie zeitintensive Aufgaben im accelerator_view-Objekt ausführen müssen.

_Qmode
Die queuing_mode die für die neu erstellte accelerator_view verwendet werden soll. Der Standardwert dieses Parameters ist queuing_mode_automatic.

Rückgabewert

Das accelerator_view-Objekt, das über die übergebene Direct3D-Geräteschnittstelle erstellt wurde.

Bemerkungen

Diese Funktion erstellt ein neues accelerator_view-Objekt von einem vorhandenen Zeiger auf eine Direct3D-Geräteschnittstelle. Wenn der Funktionsaufruf erfolgreich ist, wird der Verweiszähler des Parameters durch einen AddRef-Aufruf der Schnittstelle erhöht. Sie können das Objekt sicher freigeben, wenn es im DirectX-Code nicht mehr benötigt wird. Wenn der Methodenaufruf fehlschlägt, wird ein runtime_exception ausgelöst.

Das accelerator_view-Objekt, das Sie mit dieser Funktion erstellen, ist threadsicher. Sie müssen die gleichzeitige Verwendung des accelerator_view-Objekts synchronisieren. Die unsynchronisierte gleichzeitige Verwendung des accelerator_view-Objekts und die unformatierte ID3D11Device-Schnittstelle verursachen ein nicht definiertes Verhalten.

Die C++-AMP-Laufzeit stellt detaillierte Fehlerinformationen im Debugmodus mithilfe der D3D-Debugebene bereit, wenn Sie das D3D11_CREATE_DEVICE_DEBUG-Flag verwenden.

d3d_access_lock

Erwirbt eine Sperre für eine "accelerator_view", um D3D-Vorgänge sicher ausführen zu können bei Ressourcen, die mit der "accelerator_view" freigegeben sind. Die "accelerator_view" und alle damit verbundenen C++ AMP-Ressourcen nehmen intern diese Sperre während der Ausführung von Vorgängen an und blockieren, solange ein anderer Thread die D3D-Zugriffssperre innehat. Diese Sperre ist nicht rekursiv: Es ist nicht definiertes Verhalten, diese Funktion von einem Thread aufzurufen, der bereits die Sperre besitzt. Es ist nicht definiertes Verhalten, Vorgänge für die "accelerator_view" oder Datencontainer auszuführen, die der "accelerator_view" vom Thread zugeordnet sind, der die D3D-Zugriffssperre besitzt. Siehe auch: "scoped_d3d_access_lock", eine RAII-Formatklasse für eine bereichsbasierte D3D-Zugriffssperre.

void __cdecl d3d_access_lock(accelerator_view& _Av);

Parameter

_Av
Die "accelerator_view", die gesperrt werden soll.

d3d_access_try_lock

Versuch, ohne Blockierung die D3D-Zugriffssperre für eine accelerator_view abzurufen.

bool __cdecl d3d_access_try_lock(accelerator_view& _Av);

Parameter

_Av
Die "accelerator_view", die gesperrt werden soll.

Rückgabewert

"true", wenn die Sperre erworben wurde, oder "false", wenn sie derzeit von einem anderen Thread gehalten wird.

d3d_access_unlock

Gibt die D3D-Zugriffssperre für die angegebene accelerator_view frei. Wenn der aufrufende Thread den Lock auf "accelerator_view" nicht besitzt, sind die Ergebnisse undefiniert.

void __cdecl d3d_access_unlock(accelerator_view& _Av);

Parameter

_Av
Die „accelerator_view“, für die die Verriegelung aufgehoben werden soll.

firstbithigh

Ruft die Position des ersten Set-Bits in _Xab, beginnend mit dem Bit der höchsten Reihenfolge und dem Wechsel zum Bit der niedrigsten Reihenfolge.

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

Parameter

_X
Ganzzahliger Wert

Rückgabewert

Die Position des ersten gesetzten Bits.

firstbitlow

Ruft die Position des ersten gesetzten Bits in _X ab, beginnend mit dem niederwertigsten Bit und arbeitet sich zum höchstwertigen Bit vor.

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

Parameter

_X
Ganzzahliger Wert

Rückgabewert

Gibt die Stelle des ersten gesetzten Bits zurück.

get_buffer

Rufen Sie die Direct3D-Pufferschnittstelle ab, die dem angegebenen Array zugrunde liegt.

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

Parameter

Werttyp
Der Typ der Elemente im Array.

_Rank
Der Rang des Arrays.

_Array
Ein Array auf einem Direct3D-accelerator_view, für das die zugrunde liegende Direct3D-Pufferschnittstelle abgerufen wird.

Rückgabewert

Der IUnknown-Schnittstellenzeiger entspricht dem Direct3D-Puffer, der dem Array zugrunde liegt.

get_device

Rufen Sie die D3D-Geräteschnittstelle ab, die einem accelerator_view zugrunde liegt.

IUnknown* get_device(const accelerator_view Av);

Parameter

Av
Das D3D-accelerator_view, für das die zugrunde liegende D3D-Geräteschnittstelle zurückgegeben wird.

Rückgabewert

Der IUnknown Schnittstellenzeiger des D3D-Geräts, das dem accelerator_view zugrunde liegt.

imax

Bestimmen Sie den maximalen numerischen Wert der Argumente.

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

Parameter

_X
Ganzzahliger Wert

_Y
Ganzzahliger Wert

Rückgabewert

Gibt den maximalen numerischen Wert der Argumente zurück.

imin

Bestimmen Sie den minimalen numerischen Wert der Argumente.

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

Parameter

_X
Ganzzahliger Wert

_Y
Ganzzahliger Wert

Rückgabewert

Gibt den minimalen numerischen Wert der Argumente zurück.

is_timeout_disabled

Gibt ein boolesches Kennzeichen zurück, das angibt, ob das Timeout für die angegebene accelerator_view deaktiviert ist. Dies entspricht dem D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT-Flag für Direct3D-Geräteerstellung.

bool __cdecl is_timeout_disabled(const accelerator_view& _Accelerator_view);

Parameter

_Beschleuniger_Ansicht
Die "accelerator_view", für die die deaktivierte Timeout-Einstellung abgefragt werden soll.

Rückgabewert

Ein boolesches Flag, das angibt, ob das Timeout für die angegebene Accelerator-Ansicht deaktiviert ist.

verrückt

Berechnet das Produkt des ersten und zweiten angegebenen Arguments und fügt dann das dritte angegebene Argument hinzu.

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);

Parameter

_X
Das erste angegebene Argument.

_Y
Das zweite angegebene Argument.

_Z
Das dritte angegebene Argument.

Rückgabewert

Das Ergebnis von _X * _Y + _Z.

make_array

Ein Array aus einem Direct3D-Pufferschnittstellenzeiger erstellen.

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

Parameter

Werttyp
Der Elementtyp des zu erstellenden Arrays.

_Rank
Der Rang des zu erstellenden Arrays.

_Umfang
Ein Wertebereich, der die Form des Arrayaggregats beschreibt.

_Reisemobil
Eine D3D-Beschleunigungsansicht, in der das Array erstellt werden soll.

_D3D_buffer
IUnknown-Schnittstellenzeiger des D3D-Puffers, um das Array zu erstellen.

Rückgabewert

Ein mithilfe des angegebenen Direct3D-Puffers erstelltes Array.

Rauschen

Generiert einen Zufallswert mithilfe des Perlin-Rausch-Algorithmus.

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

Parameter

_X
Ein Gleitkommawert, aus dem Perlin-Rauschen generiert werden soll.

Rückgabewert

Gibt den Perlin-Rauschwert innerhalb eines Bereichs zwischen -1 und 1 zurück.

Bogenmaß

Wandelt _X von Grad in Bogenmaß um.

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

Parameter

_X
Gleitkommawert

Rückgabewert

Gibt _X von Grad in Bogenmaß umgewandelt zurück.

rcp

Berechnet den Kehrwert des angegebenen Arguments mithilfe einer schnellen Näherung.

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

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

Parameter

_X
Der Wert, für den der Kehrwert berechnet werden soll.

Rückgabewert

Der Kehrwert des angegebenen Arguments.

reversebits

Kehrt die Reihenfolge der Bits in _Xum.

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

Parameter

_X
Ganzzahliger Wert ohne Vorzeichen

Rückgabewert

Gibt den Wert mit umgekehrter Bitreihenfolge in _Xzurück.

sättigen

Beschränkt _X auf den Bereich von 0 bis 1.

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

Parameter

_X
Gleitkommawert

Rückgabewert

Gibt _X auf den Bereich von 0 bis 1 begrenzt zurück.

sign

Bestimmt das Vorzeichen des angegebenen Arguments.

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

Parameter

_X
Ganzzahliger Wert

Rückgabewert

Das Vorzeichen des Arguments.

Smoothstep

Gibt eine glatte Hermit-Interpolation zwischen 0 und 1 zurück, wenn _X sich im Bereich [_Min, _Max] befindet.

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

Parameter

_Min
Gleitkommawert

_Max
Gleitkommawert

_X
Gleitkommawert

Rückgabewert

Gibt 0 zurück, wenn _X kleiner als _Min ist; 1, wenn _X größer als _Max ist; andernfalls ein Wert zwischen 0 und 1, wenn _X sich im Bereich [_Min, _Max] befindet.

Schritt

Vergleicht zwei Werte, wobei 0 oder 1 basierend darauf zurückgegeben wird, welcher Wert größer ist.

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

Parameter

_Y
Gleitkommawert

_X
Gleitkommawert

Rückgabewert

Gibt 1 zurück, wenn die _X größer oder gleich _Yist; andernfalls 0.

umax

Bestimmen Sie den maximalen numerischen Wert der Argumente.

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

Parameter

_X
Ganzzahliger Wert

_Y
Ganzzahliger Wert

Rückgabewert

Gibt den maximalen numerischen Wert der Argumente zurück.

umin

Bestimmen Sie den minimalen numerischen Wert der Argumente.

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

Parameter

_X
Ganzzahliger Wert

_Y
Ganzzahliger Wert

Rückgabewert

Gibt den minimalen numerischen Wert der Argumente zurück.

Siehe auch

Concurrency::direct3d-Namespace