NVIDIA IndeX API nvidia_logo_transpbg.gif Up
idistributed_compute_technique.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6
7#ifndef NVIDIA_INDEX_IDISTRIBUTED_COMPUTE_TECHNIQUE_H
8#define NVIDIA_INDEX_IDISTRIBUTED_COMPUTE_TECHNIQUE_H
9
10#include <mi/dice.h>
11#include <mi/base/interface_declare.h>
12
13#include <nv/index/iattribute.h>
15
16namespace nv {
17namespace index {
18
39 public mi::base::Interface_declare<0xfbde8f4c,0x421e,0x4a6e,0x98,0x68,0x6a,0xe2,0x9b,0xac,0x30,0x4d,
40 nv::index::IAttribute>
41{
42public:
44 {
48 };
49
50public:
68 virtual void launch_compute(
69 IDistributed_compute_destination_buffer_container* dst_buffer_container,
70 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
71
81 virtual bool is_gpu_operation() const = 0;
82
83 // Returns the expected invocation mode for the compute technique
93
102 virtual const char* get_configuration() const
103 {
104 return 0;
105 }
106};
107
124 public mi::base::Interface_declare<0x7c8909d5,0x3cc2,0x415b,0x80,0xef,0x65,0x74,0x99,0x38,0xd6,0xff,
125 nv::index::IDistributed_compute_technique>
126{
127};
128
136template <mi::Uint32 i_id1, mi::Uint16 i_id2, mi::Uint16 i_id3,
137 mi::Uint8 i_id4, mi::Uint8 i_id5, mi::Uint8 i_id6, mi::Uint8 i_id7,
138 mi::Uint8 i_id8, mi::Uint8 i_id9, mi::Uint8 i_id10, mi::Uint8 i_id11,
141 public mi::neuraylib::Element<i_id1,i_id2,i_id3,i_id4,i_id5,i_id6,i_id7,i_id8,i_id9,i_id10,i_id11,I>
142{
143public:
146 virtual mi::base::Uuid get_attribute_class() const
147 {
148 return nv::index::IDistributed_compute_technique::IID();
149 }
150
153 virtual bool multiple_active_instances() const
154 {
155 return false;
156 }
157
162 virtual void set_enabled(bool enable)
163 {
164 // avoid warnings
165 (void) enable;
166 }
167
172 virtual bool get_enabled() const
173 {
174 return true;
175 }
176
186 virtual void set_meta_data(mi::neuraylib::Tag_struct tag)
187 {
188 (void) tag;
189 }
190
196 virtual mi::neuraylib::Tag_struct get_meta_data() const { return mi::neuraylib::NULL_TAG; }
197
200 virtual bool is_gpu_operation() const
201 {
202 return false;
203 }
204
205 // Per default we want individual invocations
206 virtual IDistributed_compute_technique::Invocation_mode get_invocation_mode() const
207 {
209 }
210
211 // Keep compatibility with the old launch_compute() interface
212 virtual void launch_compute(
213 mi::neuraylib::IDice_transaction* dice_transaction,
214 IDistributed_compute_destination_buffer* dst_buffer) const
215 {
216 (void) dice_transaction;
217 (void) dst_buffer;
218 }
219
220 virtual void launch_compute(
221 IDistributed_compute_destination_buffer_container* dst_buffer_container,
222 mi::neuraylib::IDice_transaction* dice_transaction) const
223 {
224 if (dst_buffer_container && dst_buffer_container->get_nb_destination_buffers() > 0u) {
225 return launch_compute(dice_transaction, dst_buffer_container->get_destination_buffer(0u));
226 }
227 }
228};
229
230
235template <mi::Uint32 i_id1, mi::Uint16 i_id2, mi::Uint16 i_id3,
236 mi::Uint8 i_id4, mi::Uint8 i_id5, mi::Uint8 i_id6, mi::Uint8 i_id7,
237 mi::Uint8 i_id8, mi::Uint8 i_id9, mi::Uint8 i_id10, mi::Uint8 i_id11,
240 public nv::index::Distributed_compute_technique<i_id1,i_id2,i_id3,i_id4,i_id5,i_id6,i_id7,i_id8,i_id9,i_id10,i_id11,I>
241{
242};
243
244} // namespace index
245} // namespace nv
246
247#endif // NVIDIA_INDEX_IDISTRIBUTED_COMPUTE_TECHNIQUE_H
Mixin class for implementing the IDistributed_compute_technique_LOD interface.
Definition: idistributed_compute_technique.h:241
Mixin class for implementing the IDistributed_compute_technique interface.
Definition: idistributed_compute_technique.h:142
virtual mi::neuraylib::Tag_struct get_meta_data() const
Retrieve the scene element's reference to the user-defined meta data.
Definition: idistributed_compute_technique.h:196
virtual void set_meta_data(mi::neuraylib::Tag_struct tag)
Each scene element can store additional user-defined meta data.
Definition: idistributed_compute_technique.h:186
virtual bool is_gpu_operation() const
Tell NVIDIA IndeX the default operation does not access or alter potentially exposed device data.
Definition: idistributed_compute_technique.h:200
virtual bool get_enabled() const
Attribute is always enabled.
Definition: idistributed_compute_technique.h:172
virtual bool multiple_active_instances() const
Only a single instance of this attribute can be active at the same time.
Definition: idistributed_compute_technique.h:153
virtual void set_enabled(bool enable)
Attribute is always enabled.
Definition: idistributed_compute_technique.h:162
virtual mi::base::Uuid get_attribute_class() const
Return IID as attribute class.
Definition: idistributed_compute_technique.h:146
Interface class for user-defined techniques for computing 2D LOD-texture data on demand.
Definition: idistributed_compute_technique.h:126
Interface class for user-defined techniques for computing data (2D textures on plane and heightfield ...
Definition: idistributed_compute_technique.h:41
Invocation_mode
Definition: idistributed_compute_technique.h:44
@ GROUPED_PER_HOST
The launch_compute() callback will be invoked with a list of all data-subsets grouped per host.
Definition: idistributed_compute_technique.h:47
@ GROUPED_PER_DEVICE
The launch_compute() callback will be invoked with a list of all data-subsets grouped per device.
Definition: idistributed_compute_technique.h:46
@ INDIVIDUAL
The launch_compute() callback will be invoked for each data-subset individually.
Definition: idistributed_compute_technique.h:45
virtual void launch_compute(IDistributed_compute_destination_buffer_container *dst_buffer_container, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Launches the user-defined compute technique.
virtual const char * get_configuration() const
Returns optional configuration settings that may be used by the library for the session export mechan...
Definition: idistributed_compute_technique.h:102
virtual bool is_gpu_operation() const =0
Return whether the compute technique will work on the potentially exposed device data directly.
virtual Invocation_mode get_invocation_mode() const =0
This mode controls how IndeX is providing the destination buffers for multiple data subsets to an ins...
Base class representing attributes that can be defined in a scene description.
Asynchronous texture generation for use with shapes.
Common namespace for all NVIDIA APIs.
Definition: iindex.h:349