OptiX
3.9
NVIDIA OptiX Acceleration Engine
|
OptiX public API declarations D3D10 interop.
Go to the source code of this file.
Typedefs | |
typedef struct IDXGIAdapter | IDXGIAdapter |
typedef struct ID3D10Device | ID3D10Device |
typedef struct ID3D10Resource | ID3D10Resource |
Functions | |
RTresult RTAPI | rtContextSetD3D10Device (RTcontext context, ID3D10Device *device) |
RTresult RTAPI | rtDeviceGetD3D10Device (int *device, IDXGIAdapter *pAdapter) |
RTresult RTAPI | rtBufferCreateFromD3D10Resource (RTcontext context, unsigned int bufferdesc, ID3D10Resource *resource, RTbuffer *buffer) |
RTresult RTAPI | rtTextureSamplerCreateFromD3D10Resource (RTcontext context, ID3D10Resource *resource, RTtexturesampler *textureSampler) |
RTresult RTAPI | rtBufferGetD3D10Resource (RTbuffer buffer, ID3D10Resource **resource) |
RTresult RTAPI | rtTextureSamplerGetD3D10Resource (RTtexturesampler textureSampler, ID3D10Resource **resource) |
RTresult RTAPI | rtBufferD3D10Register (RTbuffer buffer) |
RTresult RTAPI | rtBufferD3D10Unregister (RTbuffer buffer) |
RTresult RTAPI | rtTextureSamplerD3D10Register (RTtexturesampler textureSampler) |
RTresult RTAPI | rtTextureSamplerD3D10Unregister (RTtexturesampler textureSampler) |
RTresult RTAPI rtBufferCreateFromD3D10Resource | ( | RTcontext | context, |
unsigned int | bufferdesc, | ||
ID3D10Resource * | resource, | ||
RTbuffer * | buffer | ||
) |
Creates a new buffer object from a D3D10 resource.
Description
rtBufferCreateFromD3D10Resource allocates and returns a handle to a new buffer object in *buffer associated with context. If the allocated size of the D3D resource is 0, RT_ERROR_MEMORY_ALLOCATION_FAILED will be returned. Supported D3D10 buffer types are:
These buffers can be used to share data with D3D10; changes of the content in buffer, either done by D3D10 or OptiX, will be reflected automatically in both APIs. If the size, or format, of a D3D10 buffer is changed, appropriate OptiX calls have to be used to update buffer accordingly. OptiX keeps only a reference to D3D10 data, when buffer is destroyed, the state of resource is unaltered.
The type of this buffer is specified by one of the following values in bufferdesc:
The type values are used to specify the direction of data flow from the host to the OptiX devices. RT_BUFFER_INPUT specifies that the host may only write to the buffer and the device may only read from the buffer. RT_BUFFER_OUTPUT specifies the opposite, read only access on the host and write only access on the device. Devices and the host may read and write from buffers of type RT_BUFFER_INPUT_OUTPUT. Reading or writing to a buffer of the incorrect type (e.g., the host writing to a buffer of type RT_BUFFER_OUTPUT) is undefined.
Flags can be used to optimize data transfers between the host and it's devices. Currently no flags are supported for interop buffers.
[in] | context | The context to create the buffer in |
[in] | bufferdesc | Bitwise or combination of the type and flags of the new buffer |
[in] | resource | The D3D10 resource handle for use in OptiX |
[out] | buffer | The return handle for the buffer object |
Return values
Relevant return values:
History
rtBufferCreateFromD3D10Resource was introduced in OptiX 2.0.
See also rtBufferCreate, rtBufferDestroy
Declares a D3D10 buffer as immutable and accessible by OptiX.
Description
An OptiX buffer in an unregistered state can be registered to OptiX again via rtBufferD3D10Register. Once registered, properties like the size of the original D3D10 resource cannot be modified anymore. Calls to the corresponding D3D10 functions will return with an error code. However, the data of the D3D10 resource can still be read and written by the appropriate D3D10 commands. When a buffer is already in a registered state rtBufferD3D10Register will return RT_ERROR_RESOURCE_ALREADY_REGISTERED. A resource must be registered in order to be used by OptiX. If a resource is not registered RT_ERROR_INVALID_VALUE will be returned.
[in] | buffer | The handle for the buffer object |
Return values
Relevant return values:
History
rtBufferD3D10Register was introduced in OptiX 2.0.
See also rtBufferCreateFromD3D11Resource
Declares a D3D10 buffer as mutable and inaccessible by OptiX.
Description
An OptiX buffer in a registered state can be unregistered via rtBufferD3D10Register. Once unregistered, properties like the size of the original D3D10 resource can be changed. As long as a resource is unregistered, OptiX will not be able to access the data and will fail with RT_ERROR_INVALID_VALUE. When a buffer is already in an unregistered state rtBufferD3D10Unregister will return RT_ERROR_RESOURCE_NOT_REGISTERED.
[in] | buffer | The handle for the buffer object |
Return values
Relevant return values:
History
rtBufferD3D10Unregister was introduced in OptiX 2.0.
See also rtBufferCreateFromD3D11Resource
Gets the D3D10 resource associated with this buffer.
Description
rtBufferGetD3D10Resource stores the D3D10 resource pointer in **resource if buffer was created with rtBufferCreateFromD3D10Resource. If buffer was not created from a D3D10 resource **resource will be 0 after the call and RT_ERROR_INVALID_VALUE is returned.
[in] | buffer | The buffer to be queried for its D3D10 resource |
[out] | resource | The return handle for the resource |
Return values
Relevant return values:
History
rtBufferGetD3D10Resource was introduced in OptiX 2.0.
See also rtBufferCreateFromD3D10Resource
Binds a D3D10 device to a context and enables interop.
Description
rtContextSetD3D10Device binds device to context and enables D3D10 interop capabilities in context. This function must be executed once for context before any call to rtBufferCreateFromD3D10Resource or rtTextureSamplerCreateFromD3D10Resource can take place. A context can only be bound to one device. Once device is bound to context, the binding is immutable and remains upon destruction of context.
[in] | context | The context to bind the device with |
[in] | device | The D3D10 device to be used for interop with the associated context |
Return values
Relevant return values:
History
rtContextSetD3D10Device was introduced in OptiX 2.0.
See also rtBufferCreateFromD3D10Resource, rtTextureSamplerCreateFromD3D10Resource
RTresult RTAPI rtDeviceGetD3D10Device | ( | int * | device, |
IDXGIAdapter * | pAdapter | ||
) |
Returns the OptiX device number associated with the pointer to a D3D10 adapter.
Description
rtDeviceGetD3D10Device returns in device the OptiX device ID of the adapter represented by d3d10Device. d3d10Device is a pointer returned from D3D10CreateDeviceAndSwapChain. In combination with rtContextSetDevices, this function can be used to restrict OptiX to use only one device. The same device the D3D10 commands will be sent to.
This function is only supported on Windows platforms.
[in] | device | A handle to the memory location where the OptiX device ordinal associated with d3d10Device will be stored |
[out] | pAdapter | A pointer to an ID3D10Device as returned from D3D10CreateDeviceAndSwapChain |
Return values
Relevant return values:
History
rtDeviceGetD3D10Device was introduced in OptiX 2.5.
See also rtDeviceGetDeviceCount
RTresult RTAPI rtTextureSamplerCreateFromD3D10Resource | ( | RTcontext | context, |
ID3D10Resource * | resource, | ||
RTtexturesampler * | textureSampler | ||
) |
Creates a new texture sampler object from a D3D10 resource.
Description
rtTextureSamplerCreateFromD3D10Resource allocates and returns a handle to a new texture sampler object in *texturesampler associated with context. If the allocated size of the D3D resource is 0, RT_ERROR_MEMORY_ALLOCATION_FAILED will be returned. Supported D3D10 texture types are:
These texture samplers can be used to share data with D3D10; changes of the content and size of texturesampler done by D3D10 will be reflected automatically in OptiX. Currently texture sampler data are read only in OptiX programs. OptiX keeps only a reference to D3D10 data, when texturesampler is destroyed, the state of the resource is unaltered.
The array size and number of mipmap levels can't be changed for texture samplers that encapsulate a D3D10 resource. Furthermore no buffer objects can be queried. Please refer to the InteropTypes for a complete list of supported texture formats.
[in] | context | The context to create the texture sampler in |
[in] | resource | The D3D10 resource handle for use in OptiX |
[out] | textureSampler | The return handle for the texture sampler object |
Return values
Relevant return values:
History
rtTextureSamplerCreateFromD3D10Resource was introduced in OptiX 2.0.
RTresult RTAPI rtTextureSamplerD3D10Register | ( | RTtexturesampler | textureSampler | ) |
Declares a D3D10 texture as immutable and accessible by OptiX.
Description
An OptiX texture sampler in an unregistered state can be registered to OptiX again via rtTextureSamplerD3D10Register. Once registered, properties like the size of the original D3D10 resource cannot be modified anymore. Calls to the corresponding D3D10 functions will return with an error code. However, the data of the D3D10 resource can still be read and written by the appropriate D3D10 commands. When a texture sampler is already in a registered state rtTextureSamplerD3D10Register will return RT_ERROR_RESOURCE_ALREADY_REGISTERED. A resource must be registered in order to be used by OptiX. If a resource is not registered RT_ERROR_INVALID_VALUE will be returned.
[in] | textureSampler | The handle for the texture object |
Return values
Relevant return values:
History
rtTextureSamplerD3D10Register was introduced in OptiX 2.0.
RTresult RTAPI rtTextureSamplerD3D10Unregister | ( | RTtexturesampler | textureSampler | ) |
Declares a D3D10 texture as mutable and inaccessible by OptiX.
Description
An OptiX texture sampler in a registered state can be unregistered via rtTextureSamplerD3D10Unregister. Once unregistered, properties like the size of the original D3D10 resource can be changed. As long as a resource is unregistered, OptiX will not be able to access the data and will fail with RT_ERROR_INVALID_VALUE. When a buffer is already in an unregistered state rtBufferD3D10Unregister will return RT_ERROR_RESOURCE_NOT_REGISTERED.
[in] | textureSampler | The handle for the texture object |
Return values
Relevant return values:
History
rtTextureSamplerD3D10Unregister was introduced in OptiX 2.0.
RTresult RTAPI rtTextureSamplerGetD3D10Resource | ( | RTtexturesampler | textureSampler, |
ID3D10Resource ** | resource | ||
) |
Gets the D3D10 resource associated with this texture sampler.
Description
rtTextureSamplerGetD3D10Resource stores the D3D10 resource pointer in **resource if sampler was created with rtTextureSamplerGetD3D10Resource. If sampler was not created from a D3D10 resource resource will be 0 after the call and RT_ERROR_INVALID_VALUE is returned
[in] | textureSampler | The texture sampler to be queried for its D3D10 resource |
[out] | resource | The return handle for the resource |
Return values
Relevant return values:
History
rtTextureSamplerGetD3D10Resource was introduced in OptiX 2.0.
See also rtBufferCreateFromD3D10Resource