Loading...
Searching...
No Matches
Halide::Internal::DeviceArgument Struct Reference

A DeviceArgument looks similar to an Halide::Argument, but has behavioral differences that make it specific to the GPU pipeline; the fact that neither is-a nor has-a Halide::Argument is deliberate. More...

`#include <DeviceArgument.h>`

## Public Member Functions

| DeviceArgument ()=default
| DeviceArgument (const std::string &_name, bool _is_buffer, MemoryType _mem, Type _type, uint8_t _dimensions, size_t _size=0)

## Public Attributes

std::string | name
| The name of the argument.
bool | is_buffer = false
| An argument is either a primitive type (for parameters), or a buffer pointer.
MemoryType | memory_type = MemoryType::Auto
| If is_buffer == true and memory_type == GPUTexture, this argument should be passed and accessed through texture sampler operations instead of directly as a memory array.
uint8_t | dimensions = 0
| If is_buffer is true, this is the dimensionality of the buffer.
Type | type
| If this is a scalar parameter, then this is its type.
size_t | size = 0
| The static size of the argument if known, or zero otherwise.
size_t | packed_index = 0
| The index of the first element of the argument when packed into a wider type, such as packing scalar floats into vec4 for GLSL.
bool | read = false
| For buffers, these two variables can be used to specify whether the buffer is read or written.
bool | write = false
ModulusRemainder | alignment
| Alignment information for integer parameters.

## Detailed Description

A DeviceArgument looks similar to an Halide::Argument, but has behavioral differences that make it specific to the GPU pipeline; the fact that neither is-a nor has-a Halide::Argument is deliberate.

In particular, note that a Halide::Argument that is a buffer can be read or write, but not both, while a DeviceArgument that is a buffer can be read and write for some GPU backends.

Definition at line 22 of file DeviceArgument.h.

## Constructor & Destructor Documentation

## DeviceArgument() [1/2]

Halide::Internal::DeviceArgument::DeviceArgument | ( |  | ) |

default

## DeviceArgument() [2/2]

Halide::Internal::DeviceArgument::DeviceArgument | ( | const std::string & | _name,
|  | bool | _is_buffer,
|  | MemoryType | _mem,
|  | Type | _type,
|  | uint8_t | _dimensions,
|  | size_t | _size = 0 )

inline

Definition at line 75 of file DeviceArgument.h.

References dimensions, is_buffer, memory_type, name, read, size, type, and write.

## Member Data Documentation

## name

std::string Halide::Internal::DeviceArgument::name

The name of the argument.

Definition at line 24 of file DeviceArgument.h.

Referenced by DeviceArgument().

## is_buffer

bool Halide::Internal::DeviceArgument::is_buffer = false

An argument is either a primitive type (for parameters), or a buffer pointer.

If is_buffer == false, then type fully encodes the expected type of the scalar argument.

If is_buffer == true, then type.bytes() should be used to determine elem_size of the buffer; additionally, type.code should reflect the expected interpretation of the buffer data (e.g. float vs int), but there is no runtime enforcement of this at present.

Definition at line 37 of file DeviceArgument.h.

Referenced by DeviceArgument().

## memory_type

MemoryType Halide::Internal::DeviceArgument::memory_type = MemoryType::Auto

If is_buffer == true and memory_type == GPUTexture, this argument should be passed and accessed through texture sampler operations instead of directly as a memory array.

Definition at line 43 of file DeviceArgument.h.

Referenced by DeviceArgument().

## dimensions

uint8_t Halide::Internal::DeviceArgument::dimensions = 0

If is_buffer is true, this is the dimensionality of the buffer.

If is_buffer is false, this value is ignored (and should always be set to zero)

Definition at line 47 of file DeviceArgument.h.

Referenced by DeviceArgument().

## type

Type Halide::Internal::DeviceArgument::type

If this is a scalar parameter, then this is its type.

If this is a buffer parameter, this is used to determine elem_size of the halide_buffer_t.

Note that type.lanes() should always be 1 here.

Definition at line 55 of file DeviceArgument.h.

Referenced by DeviceArgument().

## size

size_t Halide::Internal::DeviceArgument::size = 0

The static size of the argument if known, or zero otherwise.

Definition at line 58 of file DeviceArgument.h.

Referenced by DeviceArgument().

## packed_index

size_t Halide::Internal::DeviceArgument::packed_index = 0

The index of the first element of the argument when packed into a wider type, such as packing scalar floats into vec4 for GLSL.

Definition at line 62 of file DeviceArgument.h.

## read

bool Halide::Internal::DeviceArgument::read = false

For buffers, these two variables can be used to specify whether the buffer is read or written.

By default, we assume that the argument buffer is read-write and set both flags.

Definition at line 67 of file DeviceArgument.h.

Referenced by DeviceArgument().

## write

bool Halide::Internal::DeviceArgument::write = false

Definition at line 68 of file DeviceArgument.h.

Referenced by DeviceArgument().

## alignment

ModulusRemainder Halide::Internal::DeviceArgument::alignment

Alignment information for integer parameters.

Definition at line 71 of file DeviceArgument.h.

The documentation for this struct was generated from the following file:

- src/DeviceArgument.h