nngn
|
Public Member Functions | |
Pseudocomp ()=default | |
bool | init () override |
Must be called before the back end can be used. | |
size_t | n_platforms () const override |
size_t | n_devices () const override |
void | get_limits (u64 *p) const override |
std::string | platform_name () const override |
std::string | device_name () const override |
Buffer | create_buffer (MemFlag, size_t, const std::byte *) override |
bool | read_buffer (Buffer, std::size_t, std::size_t, std::byte *, Events) const override |
bool | fill_buffer (Buffer, std::size_t, std::size_t, std::byte, Events) const override |
Fills the buffer with n copies of v . | |
bool | fill_buffer (Buffer, std::size_t, std::size_t, std::size_t, const std::byte *, Events) const override |
Fills the buffer with n / pattern_size copies of pattern p . | |
bool | write_buffer (Buffer, std::size_t, std::size_t, const std::byte *, Events) const override |
bool | write_buffer_rect (Buffer, std::array< std::size_t, 3 >, std::array< std::size_t, 3 >, std::array< std::size_t, 3 >, std::size_t, std::size_t, std::size_t, std::size_t, const std::byte *, Events) const override |
Writes a rectangular region of a buffer. | |
void * | map_buffer (Buffer, MemFlag, std::size_t, std::size_t, Events) const override |
bool | unmap_buffer (Buffer, void *, Events) const override |
bool | release_buffer (Buffer) override |
Image | create_image (Type, std::size_t, std::size_t, MemFlag, const std::byte *) override |
Create an image of the specified size. | |
bool | read_image (Image, std::size_t, std::size_t, std::byte *, Events) const override |
bool | fill_image (Image, std::size_t, std::size_t, const void *, Events) const override |
Fills the image with copies of v . | |
bool | release_image (Image) override |
Sampler | create_sampler () override |
bool | release_sampler (Sampler) override |
Program | create_program (std::string_view, const char *) override |
Compiles source into a program using compilation options opts . | |
bool | release_program (Program) override |
Kernel | create_kernel (Program, const char *, std::size_t, const Type *, const std::size_t *, const std::byte *const *, Events) override |
bool | release_kernel (Kernel) override |
std::size_t | n_events (std::size_t, const Type *) const override |
Number of events generated by execute for arguments types . | |
bool | prof_info (ProfInfo, std::size_t, const Event *const *, u64 *) const override |
bool | wait (std::size_t, const Event *const *) const override |
Block until the given events have completed. | |
bool | release_events (std::size_t, const Event *const *) const override |
bool | execute (Kernel, ExecFlag, u32, const std::size_t *, const std::size_t *, Events) const override |
bool | execute (Program, const std::string &, ExecFlag, u32, const std::size_t *, const std::size_t *, std::size_t, const Type *, const std::size_t *, const std::byte *const *, Events) const override |
Pseudocomp ()=default | |
bool | init () override |
Must be called before the back end can be used. | |
size_t | n_platforms () const override |
size_t | n_devices () const override |
void | get_limits (u64 *p) const override |
std::string | platform_name () const override |
std::string | device_name () const override |
Buffer | create_buffer (MemFlag, size_t, const std::byte *) override |
bool | read_buffer (Buffer, std::size_t, std::size_t, std::byte *, Events) const override |
bool | fill_buffer (Buffer, std::size_t, std::size_t, std::byte, Events) const override |
Fills the buffer with n copies of v . | |
bool | fill_buffer (Buffer, std::size_t, std::size_t, std::size_t, const std::byte *, Events) const override |
Fills the buffer with n / pattern_size copies of pattern p . | |
bool | write_buffer (Buffer, std::size_t, std::size_t, const std::byte *, Events) const override |
bool | write_buffer_rect (Buffer, std::array< std::size_t, 3 >, std::array< std::size_t, 3 >, std::array< std::size_t, 3 >, std::size_t, std::size_t, std::size_t, std::size_t, const std::byte *, Events) const override |
Writes a rectangular region of a buffer. | |
void * | map_buffer (Buffer, MemFlag, std::size_t, std::size_t, Events) const override |
bool | unmap_buffer (Buffer, void *, Events) const override |
bool | release_buffer (Buffer) override |
Image | create_image (Type, std::size_t, std::size_t, MemFlag, const std::byte *) override |
Create an image of the specified size. | |
bool | read_image (Image, std::size_t, std::size_t, std::byte *, Events) const override |
bool | fill_image (Image, std::size_t, std::size_t, const void *, Events) const override |
Fills the image with copies of v . | |
bool | release_image (Image) override |
Sampler | create_sampler () override |
bool | release_sampler (Sampler) override |
Program | create_program (std::string_view, const char *) override |
Compiles source into a program using compilation options opts . | |
bool | release_program (Program) override |
Kernel | create_kernel (Program, const char *, std::size_t, const Type *, const std::size_t *, const std::byte *const *, Events) override |
bool | release_kernel (Kernel) override |
std::size_t | n_events (std::size_t, const Type *) const override |
Number of events generated by execute for arguments types . | |
bool | prof_info (ProfInfo, std::size_t, const Event *const *, u64 *) const override |
bool | wait (std::size_t, const Event *const *) const override |
Block until the given events have completed. | |
bool | release_events (std::size_t, const Event *const *) const override |
bool | execute (Kernel, ExecFlag, u32, const std::size_t *, const std::size_t *, Events) const override |
bool | execute (Program, const std::string &, ExecFlag, u32, const std::size_t *, const std::size_t *, std::size_t, const Type *, const std::size_t *, const std::byte *const *, Events) const override |
Public Member Functions inherited from nngn::Compute | |
virtual bool | init ()=0 |
Must be called before the back end can be used. | |
virtual size_t | n_platforms () const =0 |
virtual size_t | n_devices () const =0 |
virtual void | get_limits (u64 *p) const =0 |
Writes the information described in Limit into p . | |
std::vector< u64 > | get_limits () const |
Convenience overload that allocates the required memory. | |
virtual std::string | platform_name () const =0 |
virtual std::string | device_name () const =0 |
virtual Buffer | create_buffer (MemFlag flags, std::size_t n, const std::byte *p)=0 |
Create a buffer of the specified size. | |
virtual bool | read_buffer (Buffer b, std::size_t off, std::size_t n, std::byte *p, Events events) const =0 |
virtual bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::byte v, Events events) const =0 |
Fills the buffer with n copies of v . | |
virtual bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::size_t pattern_size, const std::byte *p, Events events) const =0 |
Fills the buffer with n / pattern_size copies of pattern p . | |
virtual bool | write_buffer (Buffer b, std::size_t off, std::size_t n, const std::byte *p, Events events) const =0 |
virtual bool | write_buffer_rect (Buffer b, std::array< std::size_t, 3 > buffer_origin, std::array< std::size_t, 3 > host_origin, std::array< std::size_t, 3 > region, std::size_t buffer_row_pitch, std::size_t buffer_slice_pitch, std::size_t host_row_pitch, std::size_t host_slice_pitch, const std::byte *p, Events events) const =0 |
Writes a rectangular region of a buffer. | |
virtual void * | map_buffer (Buffer b, MemFlag flags, std::size_t off, std::size_t n, Events events) const =0 |
virtual bool | unmap_buffer (Buffer b, void *p, Events events) const =0 |
template<typename ... Ts> | |
bool | write_struct (Buffer b, Events events, Ts &&...ts) const |
Writes the variadic arguments sequentially to the buffer. | |
virtual bool | release_buffer (Buffer b)=0 |
virtual Image | create_image (Type type, std::size_t w, std::size_t h, MemFlag flags, const std::byte *p)=0 |
Create an image of the specified size. | |
virtual bool | read_image (Image i, std::size_t w, std::size_t h, std::byte *p, Events events) const =0 |
virtual bool | fill_image (Image i, std::size_t w, std::size_t h, const void *v, Events events) const =0 |
Fills the image with copies of v . | |
virtual bool | release_image (Image i)=0 |
virtual Sampler | create_sampler ()=0 |
virtual bool | release_sampler (Sampler s)=0 |
virtual Program | create_program (std::string_view src, const char *opts)=0 |
Compiles source into a program using compilation options opts . | |
virtual bool | release_program (Program p)=0 |
virtual Kernel | create_kernel (Program program, const char *func, std::size_t len, const Type *types, const std::size_t *sizes, const std::byte *const *data, Events events)=0 |
virtual bool | release_kernel (Kernel k)=0 |
virtual std::size_t | n_events (std::size_t n, const Type *types) const =0 |
Number of events generated by execute for arguments types . | |
virtual bool | prof_info (ProfInfo info, std::size_t n, const Event *const *events, u64 *out) const =0 |
Collect profiling information from n events . | |
virtual bool | wait (std::size_t n, const Event *const *v) const =0 |
Block until the given events have completed. | |
virtual bool | release_events (std::size_t n, const Event *const *v) const =0 |
virtual bool | execute (Kernel kernel, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events) const =0 |
virtual bool | execute (Program program, const std::string &func, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, std::size_t len, const Type *types, const std::size_t *sizes, const std::byte *const *data, Events events) const =0 |
Execute a program with the given arguments. | |
template<typename ... Ts> | |
Kernel | create_kernel (Program program, const char *func, Events events, Ts &&...ts) |
Variadic interface for create_kernel. | |
template<typename ... Ts> | |
bool | execute (Program program, const std::string &func, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events, Ts &&...ts) |
Variadic interface for execute. | |
virtual bool | init ()=0 |
Must be called before the back end can be used. | |
virtual size_t | n_platforms () const =0 |
virtual size_t | n_devices () const =0 |
virtual void | get_limits (u64 *p) const =0 |
Writes the information described in Limit into p . | |
std::vector< u64 > | get_limits () const |
Convenience overload that allocates the required memory. | |
virtual std::string | platform_name () const =0 |
virtual std::string | device_name () const =0 |
virtual Buffer | create_buffer (MemFlag flags, std::size_t n, const std::byte *p)=0 |
Create a buffer of the specified size. | |
virtual bool | read_buffer (Buffer b, std::size_t off, std::size_t n, std::byte *p, Events events) const =0 |
virtual bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::byte v, Events events) const =0 |
Fills the buffer with n copies of v . | |
virtual bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::size_t pattern_size, const std::byte *p, Events events) const =0 |
Fills the buffer with n / pattern_size copies of pattern p . | |
virtual bool | write_buffer (Buffer b, std::size_t off, std::size_t n, const std::byte *p, Events events) const =0 |
virtual bool | write_buffer_rect (Buffer b, std::array< std::size_t, 3 > buffer_origin, std::array< std::size_t, 3 > host_origin, std::array< std::size_t, 3 > region, std::size_t buffer_row_pitch, std::size_t buffer_slice_pitch, std::size_t host_row_pitch, std::size_t host_slice_pitch, const std::byte *p, Events events) const =0 |
Writes a rectangular region of a buffer. | |
virtual void * | map_buffer (Buffer b, MemFlag flags, std::size_t off, std::size_t n, Events events) const =0 |
virtual bool | unmap_buffer (Buffer b, void *p, Events events) const =0 |
template<typename ... Ts> | |
bool | write_struct (Buffer b, Events events, Ts &&...ts) const |
Writes the variadic arguments sequentially to the buffer. | |
virtual bool | release_buffer (Buffer b)=0 |
virtual Image | create_image (Type type, std::size_t w, std::size_t h, MemFlag flags, const std::byte *p)=0 |
Create an image of the specified size. | |
virtual bool | read_image (Image i, std::size_t w, std::size_t h, std::byte *p, Events events) const =0 |
virtual bool | fill_image (Image i, std::size_t w, std::size_t h, const void *v, Events events) const =0 |
Fills the image with copies of v . | |
virtual bool | release_image (Image i)=0 |
virtual Sampler | create_sampler ()=0 |
virtual bool | release_sampler (Sampler s)=0 |
virtual Program | create_program (std::string_view src, const char *opts)=0 |
Compiles source into a program using compilation options opts . | |
virtual bool | release_program (Program p)=0 |
virtual Kernel | create_kernel (Program program, const char *func, std::size_t len, const Type *types, const std::size_t *sizes, const std::byte *const *data, Events events)=0 |
virtual bool | release_kernel (Kernel k)=0 |
virtual std::size_t | n_events (std::size_t n, const Type *types) const =0 |
Number of events generated by execute for arguments types . | |
virtual bool | prof_info (ProfInfo info, std::size_t n, const Event *const *events, u64 *out) const =0 |
Collect profiling information from n events . | |
virtual bool | wait (std::size_t n, const Event *const *v) const =0 |
Block until the given events have completed. | |
virtual bool | release_events (std::size_t n, const Event *const *v) const =0 |
virtual bool | execute (Kernel kernel, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events) const =0 |
virtual bool | execute (Program program, const std::string &func, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, std::size_t len, const Type *types, const std::size_t *sizes, const std::byte *const *data, Events events) const =0 |
Execute a program with the given arguments. | |
template<typename ... Ts> | |
Kernel | create_kernel (Program program, const char *func, Events events, Ts &&...ts) |
Variadic interface for create_kernel. | |
template<typename ... Ts> | |
bool | execute (Program program, const std::string &func, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events, Ts &&...ts) |
Variadic interface for execute. | |
template<Compute::Type t> | |
constexpr auto | to_vector_type () -> Type |
template<typename ... Ts> | |
auto | create_kernel (Program program, const char *func, Events events, Ts &&...ts) -> Kernel |
Additional Inherited Members | |
Public Types inherited from nngn::Compute | |
enum class | Backend : u8 { PSEUDOCOMP , OPENCL_BACKEND , PSEUDOCOMP , OPENCL_BACKEND } |
Indicates which type of back end to create. More... | |
enum class | DeviceType : u8 { CPU = 1u << 0 , GPU = 1u << 1 , CPU = 1u << 0 , GPU = 1u << 1 } |
enum class | Type : u8 { NONE , LOCAL , SCALAR_BEGIN , BYTE = SCALAR_BEGIN , INT , UINT , FLOAT , VECTOR_BEGIN , BYTEV = VECTOR_BEGIN , INTV , UINTV , FLOATV , VECTOR_END = FLOATV , DATA , HANDLE_BEGIN , BUFFER = HANDLE_BEGIN , IMAGE , SAMPLER , HANDLE_END = SAMPLER , N , NONE , LOCAL , SCALAR_BEGIN , BYTE = SCALAR_BEGIN , INT , UINT , FLOAT , VECTOR_BEGIN , BYTEV = VECTOR_BEGIN , INTV , UINTV , FLOATV , VECTOR_END = FLOATV , DATA , HANDLE_BEGIN , BUFFER = HANDLE_BEGIN , IMAGE , SAMPLER , HANDLE_END = SAMPLER , N } |
Supported parameter types for kernel execution. More... | |
enum | MemFlag : u8 { READ_WRITE = 1u << 0 , WRITE_ONLY = 1u << 1 , READ_ONLY = 1u << 2 , READ_WRITE = 1u << 0 , WRITE_ONLY = 1u << 1 , READ_ONLY = 1u << 2 } |
Properties of memory blocks. More... | |
enum | ExecFlag : u8 { BLOCKING = 1u << 0 , BLOCKING = 1u << 0 } |
Kernel execution flags. More... | |
enum | Limit : u8 { COMPUTE_UNITS , WORK_GROUP_SIZE , LOCAL_MEMORY , N , COMPUTE_UNITS , WORK_GROUP_SIZE , LOCAL_MEMORY , N } |
Indices for the values accessible via get_limits. More... | |
enum | ProfInfo : u8 { QUEUED = 1u << 0 , SUBMIT = 1u << 1 , START = 1u << 2 , END = 1u << 3 , PROF_INFO_MAX = END , PROF_INFO_ALL = QUEUED | SUBMIT | START | END , QUEUED = 1u << 0 , SUBMIT = 1u << 1 , START = 1u << 2 , END = 1u << 3 , PROF_INFO_MAX = END , PROF_INFO_ALL = QUEUED | SUBMIT | START | END } |
Bit mask indicating which profiling data to collect/return. More... | |
enum class | Backend : u8 { PSEUDOCOMP , OPENCL_BACKEND , PSEUDOCOMP , OPENCL_BACKEND } |
Indicates which type of back end to create. More... | |
enum class | DeviceType : u8 { CPU = 1u << 0 , GPU = 1u << 1 , CPU = 1u << 0 , GPU = 1u << 1 } |
enum class | Type : u8 { NONE , LOCAL , SCALAR_BEGIN , BYTE = SCALAR_BEGIN , INT , UINT , FLOAT , VECTOR_BEGIN , BYTEV = VECTOR_BEGIN , INTV , UINTV , FLOATV , VECTOR_END = FLOATV , DATA , HANDLE_BEGIN , BUFFER = HANDLE_BEGIN , IMAGE , SAMPLER , HANDLE_END = SAMPLER , N , NONE , LOCAL , SCALAR_BEGIN , BYTE = SCALAR_BEGIN , INT , UINT , FLOAT , VECTOR_BEGIN , BYTEV = VECTOR_BEGIN , INTV , UINTV , FLOATV , VECTOR_END = FLOATV , DATA , HANDLE_BEGIN , BUFFER = HANDLE_BEGIN , IMAGE , SAMPLER , HANDLE_END = SAMPLER , N } |
Supported parameter types for kernel execution. More... | |
enum | MemFlag : u8 { READ_WRITE = 1u << 0 , WRITE_ONLY = 1u << 1 , READ_ONLY = 1u << 2 , READ_WRITE = 1u << 0 , WRITE_ONLY = 1u << 1 , READ_ONLY = 1u << 2 } |
Properties of memory blocks. More... | |
enum | ExecFlag : u8 { BLOCKING = 1u << 0 , BLOCKING = 1u << 0 } |
Kernel execution flags. More... | |
enum | Limit : u8 { COMPUTE_UNITS , WORK_GROUP_SIZE , LOCAL_MEMORY , N , COMPUTE_UNITS , WORK_GROUP_SIZE , LOCAL_MEMORY , N } |
Indices for the values accessible via get_limits. More... | |
enum | ProfInfo : u8 { QUEUED = 1u << 0 , SUBMIT = 1u << 1 , START = 1u << 2 , END = 1u << 3 , PROF_INFO_MAX = END , PROF_INFO_ALL = QUEUED | SUBMIT | START | END , QUEUED = 1u << 0 , SUBMIT = 1u << 1 , START = 1u << 2 , END = 1u << 3 , PROF_INFO_MAX = END , PROF_INFO_ALL = QUEUED | SUBMIT | START | END } |
Bit mask indicating which profiling data to collect/return. More... | |
Static Public Member Functions inherited from nngn::Compute | |
static constexpr bool | is_vector_type (Type t) |
Determines is t is one of the *V vector values in Type. | |
static constexpr bool | is_handle_type (Type t) |
template<Type t> | |
static constexpr Type | to_vector_type () |
Transforms a scalar type into the equivalent vector type. | |
static std::unique_ptr< Compute > | create (Backend b, const void *params=nullptr) |
Creates a back end of the specified type. | |
static constexpr bool | is_vector_type (Type t) |
Determines is t is one of the *V vector values in Type. | |
static constexpr bool | is_handle_type (Type t) |
template<Type t> | |
static constexpr Type | to_vector_type () |
Transforms a scalar type into the equivalent vector type. | |
static std::unique_ptr< Compute > | create (Backend b, const void *params=nullptr) |
Creates a back end of the specified type. | |
template<> | |
constexpr auto | arg_type = T::type |
Maps supported types to the equivalent Type value. | |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
Static Public Attributes inherited from nngn::Compute | |
template<typename T > | |
static constexpr Type | arg_type = Type::NONE |
Maps supported types to the equivalent Type value. | |
|
default |
|
default |
|
inlineoverride |
|
inlineoverride |
|
inlineoverridevirtual |
Create an image of the specified size.
Optionally fill it with w * h bytes
starting from p
, if not null.
Implements nngn::Compute.
|
inlineoverridevirtual |
Create an image of the specified size.
Optionally fill it with w * h bytes
starting from p
, if not null.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Compiles source into a program using compilation options opts
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Compiles source into a program using compilation options opts
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |
|
inlineoverridevirtual |
Fills the buffer with n
copies of v
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Fills the buffer with n
copies of v
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Fills the buffer with n / pattern_size
copies of pattern p
.
n
must be a multiple of pattern_size
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Fills the buffer with n / pattern_size
copies of pattern p
.
n
must be a multiple of pattern_size
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Fills the image with copies of v
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Fills the image with copies of v
.
Implements nngn::Compute.
|
override |
|
override |
|
inlineoverridevirtual |
Must be called before the back end can be used.
Implements nngn::Compute.
|
inlineoverridevirtual |
Must be called before the back end can be used.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Number of events generated by execute for arguments types
.
Does not include the event generated by the execution itself.
Implements nngn::Compute.
|
inlineoverridevirtual |
Number of events generated by execute for arguments types
.
Does not include the event generated by the execution itself.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverride |
|
inlineoverride |
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Block until the given events
have completed.
Implements nngn::Compute.
|
inlineoverridevirtual |
Block until the given events
have completed.
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Implements nngn::Compute.
|
inlineoverridevirtual |
Writes a rectangular region of a buffer.
Arguments are the same as the OpenCL function clEnqueueCopyBufferRect
.
Implements nngn::Compute.
|
inlineoverridevirtual |
Writes a rectangular region of a buffer.
Arguments are the same as the OpenCL function clEnqueueCopyBufferRect
.
Implements nngn::Compute.