NvFlowDevice


Data Structures

struct  NvFlowDeviceDesc
 Description required for creating a Flow device. More...
struct  NvFlowDeviceQueueDesc
 Description required for creating a Flow device queue. More...
struct  NvFlowDeviceQueueStatus
 Flow device queue status to allow app to throttle maximum queued work. More...

Enumerations

enum  NvFlowDeviceMode { eNvFlowDeviceModeProxy = 0, eNvFlowDeviceModeUnique = 1 }
 Device Type. More...
enum  NvFlowDeviceQueueType { eNvFlowDeviceQueueTypeGraphics = 0, eNvFlowDeviceQueueTypeCompute = 1, eNvFlowDeviceQueueTypeCopy = 2 }
 Types of queues. More...

Functions

NvFlowDevice * NvFlowCreateDevice (NvFlowContext *renderContext, const NvFlowDeviceDesc *desc)
NvFlowDeviceQueue * NvFlowCreateDeviceQueue (NvFlowDevice *device, const NvFlowDeviceQueueDesc *desc)
bool NvFlowDedicatedDeviceAvailable (NvFlowContext *renderContext)
bool NvFlowDedicatedDeviceQueueAvailable (NvFlowContext *renderContext)
void NvFlowDeviceDescDefaults (NvFlowDeviceDesc *desc)
void NvFlowDeviceQueueConditionalFlush (NvFlowDeviceQueue *deviceQueue, NvFlowContext *context)
NvFlowContext * NvFlowDeviceQueueCreateContext (NvFlowDeviceQueue *deviceQueue)
void NvFlowDeviceQueueFlush (NvFlowDeviceQueue *deviceQueue, NvFlowContext *context)
void NvFlowDeviceQueueUpdateContext (NvFlowDeviceQueue *deviceQueue, NvFlowContext *context, NvFlowDeviceQueueStatus *status)
void NvFlowDeviceQueueWaitOnFence (NvFlowDeviceQueue *deviceQueue, NvFlowContext *context, NvFlowUint64 fenceValue)
void NvFlowReleaseDevice (NvFlowDevice *device)
void NvFlowReleaseDeviceQueue (NvFlowDeviceQueue *deviceQueue)

Enumeration Type Documentation

Device Type.

Enumerator:
eNvFlowDeviceModeProxy  Exposes renderContext device.
eNvFlowDeviceModeUnique  Generates unique device, not matching renderContext.

Types of queues.

Enumerator:
eNvFlowDeviceQueueTypeGraphics 
eNvFlowDeviceQueueTypeCompute 
eNvFlowDeviceQueueTypeCopy 


Function Documentation

NvFlowDevice* NvFlowCreateDevice ( NvFlowContext *  renderContext,
const NvFlowDeviceDesc desc 
)

Creates a Flow compute device.

Parameters:
[in] renderContext A context that maps to the application graphics GPU.
[in] desc Description that controls what GPU is selected.
Returns:
The created Flow compute device.

NvFlowDeviceQueue* NvFlowCreateDeviceQueue ( NvFlowDevice *  device,
const NvFlowDeviceQueueDesc desc 
)

Creates a Flow device queue.

Parameters:
[in] device The device to create the queue on.
[in] desc Description that controls kind of device queue to create.
Returns:
The created Flow device queue.

bool NvFlowDedicatedDeviceAvailable ( NvFlowContext *  renderContext  ) 

Checks if a GPU is available that is not being used for application graphics work.

Parameters:
[in] renderContext A context that maps to the application graphics GPU.
Returns:
Returns true if dedicated GPU is available.

bool NvFlowDedicatedDeviceQueueAvailable ( NvFlowContext *  renderContext  ) 

Checks if a GPU can support a dedicated queue

Parameters:
[in] renderContext A context that maps to the application graphics GPU.
Returns:
Returns true if dedicated device queue is available.

void NvFlowDeviceDescDefaults ( NvFlowDeviceDesc desc  ) 

Allows the application to request a default Flow device description from Flow.

Parameters:
[out] desc The description for Flow to fill out.

void NvFlowDeviceQueueConditionalFlush ( NvFlowDeviceQueue *  deviceQueue,
NvFlowContext *  context 
)

Flushes all submitted work to the Flow deviceQueue if the context requests a flush.

Parameters:
[in] deviceQueue The Flow deviceQueue to conditionally flush.
[in] context The context to sync with the flush event.

NvFlowContext* NvFlowDeviceQueueCreateContext ( NvFlowDeviceQueue *  deviceQueue  ) 

Creates a context that uses a Flow device queue.

Parameters:
[in] deviceQueue The Flow device queue to create the context against.
Returns:
The created context.

void NvFlowDeviceQueueFlush ( NvFlowDeviceQueue *  deviceQueue,
NvFlowContext *  context 
)

Flushes all submitted work to the Flow deviceQueue. Must be called to submit work to queue.

Parameters:
[in] deviceQueue The Flow deviceQueue to flush.
[in] context The context to sync with the flush event

void NvFlowDeviceQueueUpdateContext ( NvFlowDeviceQueue *  deviceQueue,
NvFlowContext *  context,
NvFlowDeviceQueueStatus status 
)

Updates a context that uses a Flow device queue.

Parameters:
[in] deviceQueue The Flow device queue the context was created against.
[in] context The context update.
[out] status Optional queue status to update, useful to detect if queue is overloaded.

void NvFlowDeviceQueueWaitOnFence ( NvFlowDeviceQueue *  deviceQueue,
NvFlowContext *  context,
NvFlowUint64  fenceValue 
)

Blocks CPU until fenceValue is reached.

Parameters:
[in] deviceQueue The Flow deviceQueue to flush.
[in] context The context to sync with the flush event.
[in] fenceValue The fence value to wait for.

void NvFlowReleaseDevice ( NvFlowDevice *  device  ) 

Releases a Flow compute device.

Parameters:
[in] device The Flow compute device to be released.

void NvFlowReleaseDeviceQueue ( NvFlowDeviceQueue *  deviceQueue  ) 

Releases a Flow device queue.

Parameters:
[in] deviceQueue The Flow device queue to be released.