Halide 22.0.0 Halide compiler and libraries

Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
Halide::Buffer< T, Dims > Class Template Reference

A Halide::Buffer is a named shared reference to a Halide::Runtime::Buffer. More...

`#include <Buffer.h>`

## Public Types
typedef T | ElemType

## Public Member Functions
virtual | ~Buffer ()=default
| Buffer ()=default
| Make a null Buffer, which points to no Runtime::Buffer. More...
| Buffer (const Buffer &that)=default
| Trivial copy constructor. More...
Buffer & | operator= (const Buffer &that)=default
| Trivial copy assignment operator. More...
Buffer & | operator= (Buffer &&) noexcept=default
| Trivial move assignment operator. More...
template<typename T2 , int D2>
| Buffer (const Buffer< T2, D2 > &other)
| Make a Buffer from a Buffer of a different type. More...
template<typename T2 , int D2>
| Buffer (Buffer< T2, D2 > &&other) noexcept
| Move construct from a Buffer of a different type. More...
template<int D2>
| Buffer (Runtime::Buffer< T, D2 > &&buf, const std::string &name="")
| Construct a Buffer that captures and owns an rvalue Runtime::Buffer. More...
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>
| Buffer (Type t, int first, Args... rest)
| Constructors that match Runtime::Buffer with two differences: 1) They take a Type instead of a halide_type_t 2) There is an optional last string argument that gives the buffer a specific name. More...
| Buffer (const halide_buffer_t &buf, const std::string &name="")
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>
| Buffer (int first, const Args &...rest)
| Buffer (Type t, const std::vector< int > &sizes, const std::string &name="")
| Buffer (Type t, const std::vector< int > &sizes, const std::vector< int > &storage_order, const std::string &name="")
| Buffer (const std::vector< int > &sizes, const std::string &name="")
| Buffer (const std::vector< int > &sizes, const std::vector< int > &storage_order, const std::string &name="")
template<typename Array , size_t N>
| Buffer (Array(&vals)[N], const std::string &name="")
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>
| Buffer (Type t, Internal::add_const_if_T_is_const< T, void > *data, int first, Args &&...rest)
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>
| Buffer (Type t, Internal::add_const_if_T_is_const< T, void > *data, const std::vector< int > &sizes, const std::string &name="")
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>
| Buffer (T *data, int first, Args &&...rest)
| Buffer (T *data, const std::vector< int > &sizes, const std::string &name="")
| Buffer (Type t, Internal::add_const_if_T_is_const< T, void > *data, const std::vector< int > &sizes, const std::string &name="")
| Buffer (Type t, Internal::add_const_if_T_is_const< T, void > *data, int d, const halide_dimension_t *shape, const std::string &name="")
| Buffer (T *data, int d, const halide_dimension_t *shape, const std::string &name="")
void | set_name (const std::string &n)
| Buffers are optionally named. More...
const std::string & | name () const
template<typename T2 , int D2>
bool | same_as (const Buffer< T2, D2 > &other) const
| Check if two Buffer objects point to the same underlying Buffer. More...
bool | defined () const
| Check if this Buffer refers to an existing Buffer. More...
Runtime::Buffer< T, Dims > * | get ()
| Get a pointer to the underlying Runtime::Buffer. More...
const Runtime::Buffer< T, Dims > * | get () const
template<typename Fn , typename... Args>
Buffer< T, Dims > & | for_each_value (Fn &&f, Args... other_buffers)
| Does the same thing as the equivalent Halide::Runtime::Buffer method. More...
template<typename Fn , typename... Args>
const Buffer< T, Dims > & | for_each_value (Fn &&f, Args... other_buffers) const
template<typename Fn >
Buffer< T, Dims > & | for_each_element (Fn &&f)
template<typename Fn >
const Buffer< T, Dims > & | for_each_element (Fn &&f) const
template<typename FnOrValue >
Buffer< T, Dims > & | fill (FnOrValue &&f)
Type | type () const
template<typename T2 , int D2 = Dims>
Buffer< T2, D2 > | as () const
Buffer< T, Dims > | copy () const
template<typename T2 , int D2>
void | copy_from (const Buffer< T2, D2 > &other)
template<typename... Args>
auto | operator() (int first, Args &&...args) -> decltype(std::declval< Runtime::Buffer< T, Dims > >()(first, std::forward< Args >(args)...))
template<typename... Args>
auto | operator() (int first, Args &&...args) const -> decltype(std::declval< const Runtime::Buffer< T, Dims > >()(first, std::forward< Args >(args)...))
auto | operator() (const int *pos) -> decltype(std::declval< Runtime::Buffer< T, Dims > >()(pos))
auto | operator() (const int *pos) const -> decltype(std::declval< const Runtime::Buffer< T, Dims > >()(pos))
auto | operator() () -> decltype(std::declval< Runtime::Buffer< T, Dims > >()())
auto | operator() () const -> decltype(std::declval< const Runtime::Buffer< T, Dims > >()())
template<typename... Args>
const Expr | operator() (const Expr &first, const Args &...rest) const
| Make an Expr that loads from this concrete buffer at a computed coordinate. More...
template<typename... Args>
const Expr | operator() (const std::vector< Expr > &args) const
int | copy_to_device (const Target &t=get_jit_target_from_environment(), JITUserContext *context=nullptr)
| Copy to the GPU, using the device API that is the default for the given Target. More...
int | copy_to_device (const DeviceAPI &d, const Target &t=get_jit_target_from_environment(), JITUserContext *context=nullptr)
| Copy to the GPU, using the given device API. More...
int | device_malloc (const Target &t=get_jit_target_from_environment(), JITUserContext *context=nullptr)
| Allocate on the GPU, using the device API that is the default for the given Target. More...
int | device_malloc (const DeviceAPI &d, const Target &t=get_jit_target_from_environment(), JITUserContext *context=nullptr)
| Allocate storage on the GPU, using the given device API. More...
int | device_wrap_native (const DeviceAPI &d, uint64_t handle, const Target &t=get_jit_target_from_environment(), JITUserContext *context=nullptr)
| Wrap a native handle, using the given device API. More...

## Static Public Member Functions
static Buffer< T, Dims > | make_scalar (const std::string &name="")
static Buffer | make_scalar (Type t, const std::string &name="")
static Buffer< T, Dims > | make_scalar (T *data, const std::string &name="")
static Buffer< T, Dims > | make_interleaved (int width, int height, int channels, const std::string &name="")
static Buffer | make_interleaved (Type t, int width, int height, int channels, const std::string &name="")
static Buffer< T, Dims > | make_interleaved (T *data, int width, int height, int channels, const std::string &name="")
static Buffer< Internal::add_const_if_T_is_const< T, void > > | make_interleaved (Type t, T *data, int width, int height, int channels, const std::string &name="")
template<typename T2 , int D2>
static Buffer< T, Dims > | make_with_shape_of (Buffer< T2, D2 > src, void *(*allocate_fn)(size_t)=nullptr, void(*deallocate_fn)(void *)=nullptr, const std::string &name="")
template<typename T2 , int D2>
static Buffer< T, Dims > | make_with_shape_of (const Runtime::Buffer< T2, D2 > &src, void *(*allocate_fn)(size_t)=nullptr, void(*deallocate_fn)(void *)=nullptr, const std::string &name="")
static constexpr halide_type_t | static_halide_type ()
static constexpr int | static_dimensions ()
template<typename T2 , int D2>
static bool | can_convert_from (const Buffer< T2, D2 > &other)

## Static Public Attributes
static constexpr int | AnyDims = Halide::AnyDims
static constexpr bool | has_static_halide_type = Runtime::Buffer<T, Dims>::has_static_halide_type
static constexpr bool | has_static_dimensions = Runtime::Buffer<T, Dims>::has_static_dimensions

## Detailed Description

template<typename T, int Dims>
class Halide::Buffer< T, Dims >

A Halide::Buffer is a named shared reference to a Halide::Runtime::Buffer.

A Buffer<T1, D> can refer to a Buffer<T2, D> if T1 is const whenever T2 is const, and either T1 = T2 or T1 is void. A Buffer<void, D> can refer to any Buffer of any non-const type, and the default template parameter is T = void.

A Buffer<T, D1> can refer to a Buffer<T, D2> if D1 == D2, or if D1 is AnyDims (meaning "dimensionality is checked at runtime, not compiletime").

Examples
  tutorial/lesson_01_basics.cpp, and tutorial/lesson_02_input_image.cpp.

Definition at line 122 of file Buffer.h.

## Member Typedef Documentation

## ◆ ElemType

template<typename T , int Dims>

typedef T Halide::Buffer< T, Dims >::ElemType

Definition at line 160 of file Buffer.h.

## Constructor & Destructor Documentation

## ◆ ~Buffer()

template<typename T , int Dims>

virtual Halide::Buffer< T, Dims >::~Buffer | ( |  | ) |
| virtualdefault

## ◆ Buffer() [1/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( |  | ) |
| default

Make a null Buffer, which points to no Runtime::Buffer.

## ◆ Buffer() [2/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | const Buffer< T, Dims > & | that | ) |
| default

Trivial copy constructor.

## ◆ Buffer() [3/20]

template<typename T , int Dims>
template<typename T2 , int D2>

Halide::Buffer< T, Dims >::Buffer | ( | const Buffer< T2, D2 > & | other | ) |
| inline

Make a Buffer from a Buffer of a different type.

Definition at line 180 of file Buffer.h.

## ◆ Buffer() [4/20]

template<typename T , int Dims>
template<typename T2 , int D2>

Halide::Buffer< T, Dims >::Buffer | ( | Buffer< T2, D2 > && | other | ) |
| inlinenoexcept

Move construct from a Buffer of a different type.

Definition at line 187 of file Buffer.h.

## ◆ Buffer() [5/20]

template<typename T , int Dims>
template<int D2>

Halide::Buffer< T, Dims >::Buffer | ( | Runtime::Buffer< T, D2 > && | buf,
|  | const std::string & | name = `""`
| ) |  |
| inline

Construct a Buffer that captures and owns an rvalue Runtime::Buffer.

Definition at line 194 of file Buffer.h.

References Halide::Internal, Halide::Buffer< T, Dims >::name(), and Halide::Internal::unique_name().

## ◆ Buffer() [6/20]

template<typename T , int Dims>
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | int | first,
|  | Args... | rest
| ) |  |
| inlineexplicit

Constructors that match Runtime::Buffer with two differences: 1) They take a Type instead of a halide_type_t 2) There is an optional last string argument that gives the buffer a specific name.

Definition at line 211 of file Buffer.h.

References Halide::Internal.

## ◆ Buffer() [7/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | const halide_buffer_t & | buf,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 217 of file Buffer.h.

## ◆ Buffer() [8/20]

template<typename T , int Dims>
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>

Halide::Buffer< T, Dims >::Buffer | ( | int | first,
|  | const Args &... | rest
| ) |  |
| inlineexplicit

Definition at line 224 of file Buffer.h.

References Halide::Internal.

## ◆ Buffer() [9/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | const std::vector< int > & | sizes,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 229 of file Buffer.h.

## ◆ Buffer() [10/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | const std::vector< int > & | sizes,
|  | const std::vector< int > & | storage_order,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 235 of file Buffer.h.

## ◆ Buffer() [11/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | const std::vector< int > & | sizes,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 242 of file Buffer.h.

## ◆ Buffer() [12/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | const std::vector< int > & | sizes,
|  | const std::vector< int > & | storage_order,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 247 of file Buffer.h.

## ◆ Buffer() [13/20]

template<typename T , int Dims>
template<typename Array , size_t N>

Halide::Buffer< T, Dims >::Buffer | ( | Array(&) | vals[N],
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 254 of file Buffer.h.

## ◆ Buffer() [14/20]

template<typename T , int Dims>
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | Internal::add_const_if_T_is_const< T, void > * | data,
|  | int | first,
|  | Args &&... | rest
| ) |  |
| inlineexplicit

Definition at line 261 of file Buffer.h.

References Halide::Internal.

## ◆ Buffer() [15/20]

template<typename T , int Dims>
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | Internal::add_const_if_T_is_const< T, void > * | data,
|  | const std::vector< int > & | sizes,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 270 of file Buffer.h.

## ◆ Buffer() [16/20]

template<typename T , int Dims>
template<typename... Args, typename = std::enable_if_t<Internal::all_ints_and_optional_name<Args...>::value>>

Halide::Buffer< T, Dims >::Buffer | ( | T * | data,
|  | int | first,
|  | Args &&... | rest
| ) |  |
| inlineexplicit

Definition at line 279 of file Buffer.h.

References Halide::Internal.

## ◆ Buffer() [17/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | T * | data,
|  | const std::vector< int > & | sizes,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 285 of file Buffer.h.

## ◆ Buffer() [18/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | Internal::add_const_if_T_is_const< T, void > * | data,
|  | const std::vector< int > & | sizes,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 291 of file Buffer.h.

## ◆ Buffer() [19/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | Type | t,
|  | Internal::add_const_if_T_is_const< T, void > * | data,
|  | int | d,
|  | const halide_dimension_t * | shape,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 298 of file Buffer.h.

## ◆ Buffer() [20/20]

template<typename T , int Dims>

Halide::Buffer< T, Dims >::Buffer | ( | T * | data,
|  | int | d,
|  | const halide_dimension_t * | shape,
|  | const std::string & | name = `""`
| ) |  |
| inlineexplicit

Definition at line 306 of file Buffer.h.

## Member Function Documentation

## ◆ operator=() [1/2]

template<typename T , int Dims>

Buffer & Halide::Buffer< T, Dims >::operator= | ( | const Buffer< T, Dims > & | that | ) |
| default

Trivial copy assignment operator.

## ◆ operator=() [2/2]

template<typename T , int Dims>

Buffer & Halide::Buffer< T, Dims >::operator= | ( | Buffer< T, Dims > && |  | ) |
| defaultnoexcept

Trivial move assignment operator.

## ◆ make_scalar() [1/3]

template<typename T , int Dims>

static Buffer< T, Dims > Halide::Buffer< T, Dims >::make_scalar | ( | const std::string & | name = `""` | ) |
| inlinestatic

Definition at line 313 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_scalar() [2/3]

template<typename T , int Dims>

static Buffer Halide::Buffer< T, Dims >::make_scalar | ( | Type | t,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 317 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_scalar() [3/3]

template<typename T , int Dims>

static Buffer< T, Dims > Halide::Buffer< T, Dims >::make_scalar | ( | T * | data,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 321 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_interleaved() [1/4]

template<typename T , int Dims>

static Buffer< T, Dims > Halide::Buffer< T, Dims >::make_interleaved | ( | int | width,
|  | int | height,
|  | int | channels,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 325 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_interleaved() [2/4]

template<typename T , int Dims>

static Buffer Halide::Buffer< T, Dims >::make_interleaved | ( | Type | t,
|  | int | width,
|  | int | height,
|  | int | channels,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 329 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_interleaved() [3/4]

template<typename T , int Dims>

static Buffer< T, Dims > Halide::Buffer< T, Dims >::make_interleaved | ( | T * | data,
|  | int | width,
|  | int | height,
|  | int | channels,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 333 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_interleaved() [4/4]

template<typename T , int Dims>

static Buffer< Internal::add_const_if_T_is_const< T, void > > Halide::Buffer< T, Dims >::make_interleaved | ( | Type | t,
|  | T * | data,
|  | int | width,
|  | int | height,
|  | int | channels,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 338 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ make_with_shape_of() [1/2]

template<typename T , int Dims>
template<typename T2 , int D2>

static Buffer< T, Dims > Halide::Buffer< T, Dims >::make_with_shape_of | ( | Buffer< T2, D2 > | src,
|  | void *(*)(size_t) | allocate_fn = `nullptr`,
|  | void(*)(void *) | deallocate_fn = `nullptr`,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 344 of file Buffer.h.

References Halide::Buffer< T, Dims >::get(), and Halide::Buffer< T, Dims >::name().

## ◆ make_with_shape_of() [2/2]

template<typename T , int Dims>
template<typename T2 , int D2>

static Buffer< T, Dims > Halide::Buffer< T, Dims >::make_with_shape_of | ( | const Runtime::Buffer< T2, D2 > & | src,
|  | void *(*)(size_t) | allocate_fn = `nullptr`,
|  | void(*)(void *) | deallocate_fn = `nullptr`,
|  | const std::string & | name = `""`
| ) |  |
| inlinestatic

Definition at line 352 of file Buffer.h.

References Halide::Buffer< T, Dims >::name().

## ◆ set_name()

template<typename T , int Dims>

void Halide::Buffer< T, Dims >::set_name | ( | const std::string & | n | ) |
| inline

Buffers are optionally named.

Definition at line 362 of file Buffer.h.

## ◆ name()

template<typename T , int Dims>

const std::string & Halide::Buffer< T, Dims >::name | ( |  | ) | const
| inline

Definition at line 366 of file Buffer.h.

Referenced by Halide::Buffer< T, Dims >::Buffer(), Halide::Internal::Call::make(), Halide::Buffer< T, Dims >::make_interleaved(), Halide::Buffer< T, Dims >::make_scalar(), and Halide::Buffer< T, Dims >::make_with_shape_of().

## ◆ same_as()

template<typename T , int Dims>
template<typename T2 , int D2>

bool Halide::Buffer< T, Dims >::same_as | ( | const Buffer< T2, D2 > & | other | ) | const
| inline

Check if two Buffer objects point to the same underlying Buffer.

Definition at line 373 of file Buffer.h.

References Halide::Internal::IntrusivePtr< T >::get().

## ◆ defined()

template<typename T , int Dims>

bool Halide::Buffer< T, Dims >::defined | ( |  | ) | const
| inline

Check if this Buffer refers to an existing Buffer.

Default-constructed Buffer objects do not refer to any existing Buffer.

Definition at line 380 of file Buffer.h.

References Halide::Internal::IntrusivePtr< T >::defined().

## ◆ get() [1/2]

template<typename T , int Dims>

Runtime::Buffer< T, Dims > * Halide::Buffer< T, Dims >::get | ( |  | ) |
| inline

Get a pointer to the underlying Runtime::Buffer.

Definition at line 386 of file Buffer.h.

Referenced by Halide::Buffer< T, Dims >::can_convert_from(), Halide::Buffer< T, Dims >::copy_from(), Halide::Buffer< T, Dims >::fill(), Halide::Buffer< T, Dims >::for_each_element(), Halide::Buffer< T, Dims >::for_each_value(), Halide::Buffer< T, Dims >::make_with_shape_of(), and Halide::Buffer< T, Dims >::operator()().

## ◆ get() [2/2]

template<typename T , int Dims>

const Runtime::Buffer< T, Dims > * Halide::Buffer< T, Dims >::get | ( |  | ) | const
| inline

Definition at line 390 of file Buffer.h.

## ◆ for_each_value() [1/2]

template<typename T , int Dims>
template<typename Fn , typename... Args>

Buffer< T, Dims > & Halide::Buffer< T, Dims >::for_each_value | ( | Fn && | f,
|  | Args... | other_buffers
| ) |  |
| inline

Does the same thing as the equivalent Halide::Runtime::Buffer method.

Definition at line 484 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ for_each_value() [2/2]

template<typename T , int Dims>
template<typename Fn , typename... Args>

const Buffer< T, Dims > & Halide::Buffer< T, Dims >::for_each_value | ( | Fn && | f,
|  | Args... | other_buffers
| ) |  | const
| inline

Definition at line 490 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ for_each_element() [1/2]

template<typename T , int Dims>
template<typename Fn >

Buffer< T, Dims > & Halide::Buffer< T, Dims >::for_each_element | ( | Fn && | f | ) |
| inline

Definition at line 496 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ for_each_element() [2/2]

template<typename T , int Dims>
template<typename Fn >

const Buffer< T, Dims > & Halide::Buffer< T, Dims >::for_each_element | ( | Fn && | f | ) | const
| inline

Definition at line 502 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ fill()

template<typename T , int Dims>
template<typename FnOrValue >

Buffer< T, Dims > & Halide::Buffer< T, Dims >::fill | ( | FnOrValue && | f | ) |
| inline

Definition at line 508 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ static_halide_type()

template<typename T , int Dims>

static constexpr halide_type_t Halide::Buffer< T, Dims >::static_halide_type | ( |  | ) |
| inlinestaticconstexpr

Definition at line 515 of file Buffer.h.

References Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::static_halide_type().

## ◆ static_dimensions()

template<typename T , int Dims>

static constexpr int Halide::Buffer< T, Dims >::static_dimensions | ( |  | ) |
| inlinestaticconstexpr

Definition at line 521 of file Buffer.h.

References Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::static_dimensions().

## ◆ can_convert_from()

template<typename T , int Dims>
template<typename T2 , int D2>

static bool Halide::Buffer< T, Dims >::can_convert_from | ( | const Buffer< T2, D2 > & | other | ) |
| inlinestatic

Definition at line 526 of file Buffer.h.

References Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::can_convert_from(), and Halide::Buffer< T, Dims >::get().

## ◆ type()

template<typename T , int Dims>

Type Halide::Buffer< T, Dims >::type | ( |  | ) | const
| inline

Definition at line 534 of file Buffer.h.

Referenced by Halide::Internal::Call::make(), and Halide::Internal::GeneratorOutput_Buffer< T >::operator=().

## ◆ as()

template<typename T , int Dims>
template<typename T2 , int D2 = Dims>

Buffer< T2, D2 > Halide::Buffer< T, Dims >::as | ( |  | ) | const
| inline

Definition at line 539 of file Buffer.h.

## ◆ copy()

template<typename T , int Dims>

Buffer< T, Dims > Halide::Buffer< T, Dims >::copy | ( |  | ) | const
| inline

Definition at line 543 of file Buffer.h.

## ◆ copy_from()

template<typename T , int Dims>
template<typename T2 , int D2>

void Halide::Buffer< T, Dims >::copy_from | ( | const Buffer< T2, D2 > & | other | ) |
| inline

Definition at line 548 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [1/8]

template<typename T , int Dims>
template<typename... Args>

auto Halide::Buffer< T, Dims >::operator() | ( | int | first,
|  | Args &&... | args
| ) |  | -> decltype(std::declval<Runtime::Buffer<T, Dims>>()(first, std::forward<Args>(args)...))
| inline

Definition at line 553 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [2/8]

template<typename T , int Dims>
template<typename... Args>

auto Halide::Buffer< T, Dims >::operator() | ( | int | first,
|  | Args &&... | args
| ) |  | const -> decltype(std::declval<const Runtime::Buffer<T, Dims>>()(first, std::forward<Args>(args)...))
| inline

Definition at line 558 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [3/8]

template<typename T , int Dims>

auto Halide::Buffer< T, Dims >::operator() | ( | const int * | pos | ) | -> decltype(std::declval<Runtime::Buffer<T, Dims>>()(pos))
| inline

Definition at line 562 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [4/8]

template<typename T , int Dims>

auto Halide::Buffer< T, Dims >::operator() | ( | const int * | pos | ) | const -> decltype(std::declval<const Runtime::Buffer<T, Dims>>()(pos))
| inline

Definition at line 566 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [5/8]

template<typename T , int Dims>

auto Halide::Buffer< T, Dims >::operator() | ( |  | ) | -> decltype(std::declval<Runtime::Buffer<T, Dims>>()())
| inline

Definition at line 570 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [6/8]

template<typename T , int Dims>

auto Halide::Buffer< T, Dims >::operator() | ( |  | ) | const -> decltype(std::declval<const Runtime::Buffer<T, Dims>>()())
| inline

Definition at line 574 of file Buffer.h.

References Halide::Buffer< T, Dims >::get().

## ◆ operator()() [7/8]

template<typename T , int Dims>
template<typename... Args>

const Expr Halide::Buffer< T, Dims >::operator() | ( | const Expr & | first,
|  | const Args &... | rest
| ) |  | const
| inline

Make an Expr that loads from this concrete buffer at a computed coordinate.

Returned Expr is const so that it's not possible to accidentally treat a buffer like a Func and try to assign an Expr to a given symbolic coordinate.

Definition at line 585 of file Buffer.h.

## ◆ operator()() [8/8]

template<typename T , int Dims>
template<typename... Args>

const Expr Halide::Buffer< T, Dims >::operator() | ( | const std::vector< Expr > & | args | ) | const
| inline

Definition at line 591 of file Buffer.h.

References Halide::Internal::buffer_accessor().

## ◆ copy_to_device() [1/2]

template<typename T , int Dims>

int Halide::Buffer< T, Dims >::copy_to_device | ( | const Target & | t = `get_jit_target_from_environment()`,
|  | JITUserContext * | context = `nullptr`
| ) |  |
| inline

Copy to the GPU, using the device API that is the default for the given Target.

Definition at line 597 of file Buffer.h.

References Halide::Buffer< T, Dims >::copy_to_device(), and Halide::Default_GPU.

Referenced by Halide::Buffer< T, Dims >::copy_to_device().

## ◆ copy_to_device() [2/2]

template<typename T , int Dims>

int Halide::Buffer< T, Dims >::copy_to_device | ( | const DeviceAPI & | d,
|  | const Target & | t = `get_jit_target_from_environment()`,
|  | JITUserContext * | context = `nullptr`
| ) |  |
| inline

Copy to the GPU, using the given device API.

Definition at line 602 of file Buffer.h.

References Halide::get_device_interface_for_device_api().

## ◆ device_malloc() [1/2]

template<typename T , int Dims>

int Halide::Buffer< T, Dims >::device_malloc | ( | const Target & | t = `get_jit_target_from_environment()`,
|  | JITUserContext * | context = `nullptr`
| ) |  |
| inline

Allocate on the GPU, using the device API that is the default for the given Target.

Definition at line 607 of file Buffer.h.

References Halide::Default_GPU, and Halide::Buffer< T, Dims >::device_malloc().

Referenced by Halide::Buffer< T, Dims >::device_malloc().

## ◆ device_malloc() [2/2]

template<typename T , int Dims>

int Halide::Buffer< T, Dims >::device_malloc | ( | const DeviceAPI & | d,
|  | const Target & | t = `get_jit_target_from_environment()`,
|  | JITUserContext * | context = `nullptr`
| ) |  |
| inline

Allocate storage on the GPU, using the given device API.

Definition at line 612 of file Buffer.h.

References Halide::get_device_interface_for_device_api().

## ◆ device_wrap_native()

template<typename T , int Dims>

int Halide::Buffer< T, Dims >::device_wrap_native | ( | const DeviceAPI & | d,
|  | uint64_t | handle,
|  | const Target & | t = `get_jit_target_from_environment()`,
|  | JITUserContext * | context = `nullptr`
| ) |  |
| inline

Wrap a native handle, using the given device API.

It is a bad idea to pass DeviceAPI::Default_GPU to this routine as the handle argument must match the API that the default resolves to and it is clearer and more reliable to pass the resolved DeviceAPI explicitly.

Definition at line 621 of file Buffer.h.

References Halide::get_device_interface_for_device_api().

## Member Data Documentation

## ◆ AnyDims

template<typename T , int Dims>

constexpr int Halide::Buffer< T, Dims >::AnyDims = Halide::AnyDims
| staticconstexpr

Definition at line 157 of file Buffer.h.

## ◆ has_static_halide_type

template<typename T , int Dims>

constexpr bool Halide::Buffer< T, Dims >::has_static_halide_type = Runtime::Buffer<T, Dims>::has_static_halide_type
| staticconstexpr

Definition at line 513 of file Buffer.h.

## ◆ has_static_dimensions

template<typename T , int Dims>

constexpr bool Halide::Buffer< T, Dims >::has_static_dimensions = Runtime::Buffer<T, Dims>::has_static_dimensions
| staticconstexpr

Definition at line 519 of file Buffer.h.

The documentation for this class was generated from the following files:

- src/Argument.h
- src/Buffer.h