Clover Git
OpenCL 1.1 software implementation
|
OpenCL C image access functions. More...
#include "../memobject.h"
#include "../sampler.h"
#include "kernel.h"
#include "buffer.h"
#include "builtins.h"
#include <cstdlib>
#include <cmath>
#include <immintrin.h>
Go to the source code of this file.
Defines | |
#define | __has_builtin(x) 0 |
#define | shuffle4(rs, a, b, x, y, z, w) slow_shuffle4(rs, a, b, x, y, z, w) |
Functions | |
static int | clamp (int a, int b, int c) |
static int | min (int a, int b) |
static int | max (int a, int b) |
static float | frac (float x) |
static float | round (float x) |
static bool | handle_address_mode (Image2D *image, int &x, int &y, int &z, uint32_t sampler) |
static void | slow_shuffle4 (uint32_t *rs, uint32_t *a, uint32_t *b, int x, int y, int z, int w) |
static void | convert_to_format (void *dest, float *data, cl_channel_type type, unsigned int channels) |
static void | convert_from_format (float *data, void *source, cl_channel_type type, unsigned int channels) |
static void | convert_to_format (void *dest, int *data, cl_channel_type type, unsigned int channels) |
static void | convert_from_format (int32_t *data, void *source, cl_channel_type type, unsigned int channels) |
static void | convert_to_format (void *dest, uint32_t *data, cl_channel_type type, unsigned int channels) |
static void | convert_from_format (uint32_t *data, void *source, cl_channel_type type, unsigned int channels) |
template<typename T > | |
static void | vec4_scalar_mul (T *vec, float val) |
template<typename T > | |
static void | vec4_add (T *vec1, T *vec2) |
static void | swizzle (uint32_t *target, uint32_t *source, cl_channel_order order, bool reading, uint32_t t_max) |
template<typename T > | |
uint32_t | type_max_value () |
template<> | |
uint32_t | type_max_value< float > () |
template<> | |
uint32_t | type_max_value< int32_t > () |
template<> | |
uint32_t | type_max_value< uint32_t > () |
OpenCL C image access functions.
It is recommended to compile this file using Clang as it supports the __builtin_shufflevector()
built-in function, providing SSE or NEON-accelerated code.
Definition in file cpu/sampler.cpp.
#define __has_builtin | ( | x | ) | 0 |
Definition at line 106 of file cpu/sampler.cpp.
#define shuffle4 | ( | rs, | |
a, | |||
b, | |||
x, | |||
y, | |||
z, | |||
w | |||
) | slow_shuffle4(rs, a, b, x, y, z, w) |
Definition at line 336 of file cpu/sampler.cpp.
Referenced by swizzle().
static int clamp | ( | int | a, |
int | b, | ||
int | c | ||
) | [static] |
Definition at line 53 of file cpu/sampler.cpp.
Referenced by handle_address_mode().
static void convert_from_format | ( | float * | data, |
void * | source, | ||
cl_channel_type | type, | ||
unsigned int | channels | ||
) | [static] |
Definition at line 145 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::readImageImplI().
static void convert_from_format | ( | int32_t * | data, |
void * | source, | ||
cl_channel_type | type, | ||
unsigned int | channels | ||
) | [static] |
Definition at line 193 of file cpu/sampler.cpp.
static void convert_from_format | ( | uint32_t * | data, |
void * | source, | ||
cl_channel_type | type, | ||
unsigned int | channels | ||
) | [static] |
Definition at line 235 of file cpu/sampler.cpp.
static void convert_to_format | ( | void * | dest, |
float * | data, | ||
cl_channel_type | type, | ||
unsigned int | channels | ||
) | [static] |
Definition at line 118 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::writeImageImpl().
static void convert_to_format | ( | void * | dest, |
int * | data, | ||
cl_channel_type | type, | ||
unsigned int | channels | ||
) | [static] |
Definition at line 172 of file cpu/sampler.cpp.
static void convert_to_format | ( | void * | dest, |
uint32_t * | data, | ||
cl_channel_type | type, | ||
unsigned int | channels | ||
) | [static] |
Definition at line 214 of file cpu/sampler.cpp.
static float frac | ( | float | x | ) | [static] |
Definition at line 68 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::readImageImplF().
static bool handle_address_mode | ( | Image2D * | image, |
int & | x, | ||
int & | y, | ||
int & | z, | ||
uint32_t | sampler | ||
) | [static] |
Definition at line 78 of file cpu/sampler.cpp.
References clamp(), CLK_ADDRESS_CLAMP, CLK_ADDRESS_CLAMP_TO_EDGE, Coal::Image2D::height(), Coal::MemObject::Image3D, Coal::Image2D::type(), and Coal::Image2D::width().
Referenced by Coal::CPUKernelWorkGroup::readImageImplI().
static int max | ( | int | a, |
int | b | ||
) | [static] |
Definition at line 63 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::readImageImplF().
static int min | ( | int | a, |
int | b | ||
) | [static] |
Definition at line 58 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::readImageImplF().
static float round | ( | float | x | ) | [static] |
Definition at line 73 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::readImageImplF().
static void slow_shuffle4 | ( | uint32_t * | rs, |
uint32_t * | a, | ||
uint32_t * | b, | ||
int | x, | ||
int | y, | ||
int | z, | ||
int | w | ||
) | [static] |
Definition at line 109 of file cpu/sampler.cpp.
static void swizzle | ( | uint32_t * | target, |
uint32_t * | source, | ||
cl_channel_order | order, | ||
bool | reading, | ||
uint32_t | t_max | ||
) | [static] |
Definition at line 340 of file cpu/sampler.cpp.
References shuffle4.
Referenced by Coal::CPUKernelWorkGroup::readImageImplI(), and Coal::CPUKernelWorkGroup::writeImageImpl().
uint32_t type_max_value | ( | ) |
Definition at line 473 of file cpu/sampler.cpp.
uint32_t type_max_value< float > | ( | ) |
Definition at line 479 of file cpu/sampler.cpp.
uint32_t type_max_value< int32_t > | ( | ) |
Definition at line 485 of file cpu/sampler.cpp.
uint32_t type_max_value< uint32_t > | ( | ) |
Definition at line 491 of file cpu/sampler.cpp.
static void vec4_add | ( | T * | vec1, |
T * | vec2 | ||
) | [static] |
Definition at line 264 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::linear2D(), and Coal::CPUKernelWorkGroup::linear3D().
static void vec4_scalar_mul | ( | T * | vec, |
float | val | ||
) | [static] |
Definition at line 257 of file cpu/sampler.cpp.
Referenced by Coal::CPUKernelWorkGroup::linear2D(), and Coal::CPUKernelWorkGroup::linear3D().