Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Namespaces | Macros | Enumerations | Functions | Variables
skcms_Transform.h File Reference
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Namespaces

namespace  skcms_private
 
namespace  skcms_private::baseline
 
namespace  skcms_private::hsw
 
namespace  skcms_private::skx
 

Macros

#define SKCMS_WORK_OPS(M)
 
#define SKCMS_STORE_OPS(M)
 
#define M(op)   op,
 
#define INFINITY_   inf_.f
 

Enumerations

enum class  skcms_private::Op : int { skcms_private::M }
 

Functions

void skcms_private::baseline::run_program (const Op *program, const void **contexts, ptrdiff_t programSize, const char *src, char *dst, int n, const size_t src_bpp, const size_t dst_bpp)
 
void skcms_private::hsw::run_program (const Op *program, const void **contexts, ptrdiff_t programSize, const char *src, char *dst, int n, const size_t src_bpp, const size_t dst_bpp)
 
void skcms_private::skx::run_program (const Op *program, const void **contexts, ptrdiff_t programSize, const char *src, char *dst, int n, const size_t src_bpp, const size_t dst_bpp)
 

Variables

union { 
 
   uint32_t   skcms_private::bits 
 
   float   skcms_private::f 
 
skcms_private::inf_ = { 0x7f800000 } 
 

Macro Definition Documentation

◆ INFINITY_

#define INFINITY_   inf_.f

Definition at line 122 of file skcms_Transform.h.

◆ M

#define M (   op)    op,

Definition at line 107 of file skcms_Transform.h.

◆ SKCMS_STORE_OPS

#define SKCMS_STORE_OPS (   M)
Value:
M(store_a8) \
M(store_g8) \
M(store_4444) \
M(store_565) \
M(store_888) \
M(store_8888) \
M(store_1010102) \
M(store_161616LE) \
M(store_16161616LE) \
M(store_161616BE) \
M(store_16161616BE) \
M(store_101010x_XR) \
M(store_hhh) \
M(store_hhhh) \
M(store_fff) \
M(store_ffff)
#define M(op)

Definition at line 88 of file skcms_Transform.h.

105 : int {
106#define M(op) op,
109#undef M
110};
111
112/** Constants */
113
114#if defined(__clang__) || defined(__GNUC__)
115 static constexpr float INFINITY_ = __builtin_inff();
116#else
117 static const union {
118 uint32_t bits;
119 float f;
120 } inf_ = { 0x7f800000 };
121 #define INFINITY_ inf_.f
122#endif
123
124/** Vector type */
125
126#if defined(__clang__)
127 template <int N, typename T> using Vec = T __attribute__((ext_vector_type(N)));
128#elif defined(__GNUC__)
129 // Unfortunately, GCC does not allow us to omit the struct. This will not compile:
130 // template <int N, typename T> using Vec = T __attribute__((vector_size(N*sizeof(T))));
131 template <int N, typename T> struct VecHelper {
132 typedef T __attribute__((vector_size(N * sizeof(T)))) V;
133 };
134 template <int N, typename T> using Vec = typename VecHelper<N, T>::V;
135#endif
136
137/** Interface */
138
139namespace baseline {
140
141void run_program(const Op* program, const void** contexts, ptrdiff_t programSize,
142 const char* src, char* dst, int n,
143 const size_t src_bpp, const size_t dst_bpp);
144
145}
146namespace hsw {
147
148void run_program(const Op* program, const void** contexts, ptrdiff_t programSize,
149 const char* src, char* dst, int n,
150 const size_t src_bpp, const size_t dst_bpp);
151
152}
153namespace skx {
154
155void run_program(const Op* program, const void** contexts, ptrdiff_t programSize,
156 const char* src, char* dst, int n,
157 const size_t src_bpp, const size_t dst_bpp);
158
159}
160} // namespace skcms_private
void run_program(const Op *program, const void **contexts, SKCMS_MAYBE_UNUSED ptrdiff_t programSize, const char *src, char *dst, int n, const size_t src_bpp, const size_t dst_bpp)
#define N
Definition beziers.cpp:19
__attribute__((visibility("default"))) int RunBenchmarks(int argc
static const union skcms_private::@307 inf_
#define T
#define V(name)
Definition raw_object.h:124
#define SKCMS_STORE_OPS(M)
#define INFINITY_
#define SKCMS_WORK_OPS(M)

◆ SKCMS_WORK_OPS

#define SKCMS_WORK_OPS (   M)

All transform ops

Definition at line 20 of file skcms_Transform.h.