From a4daf58ef5063ebb8ba68f24c7a7abd54abd1e5b Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sun, 22 Dec 2024 08:30:51 +0100 Subject: [PATCH 1/2] drivers/nema: Add Nema GPU driver. Nema --- src/Makefile | 1 + src/drivers/nema/LICENSE.pdf | Bin 0 -> 141368 bytes src/drivers/nema/include/build_version.h | 1 + src/drivers/nema/include/nema_blender.h | 188 +++ src/drivers/nema/include/nema_cmdlist.h | 208 ++++ src/drivers/nema/include/nema_core.h | 42 + src/drivers/nema/include/nema_easing.h | 369 ++++++ src/drivers/nema/include/nema_error.h | 69 ++ src/drivers/nema/include/nema_font.h | 184 +++ src/drivers/nema/include/nema_graphics.h | 1019 +++++++++++++++++ src/drivers/nema/include/nema_hal.h | 218 ++++ src/drivers/nema/include/nema_interpolators.h | 122 ++ src/drivers/nema/include/nema_math.h | 278 +++++ src/drivers/nema/include/nema_matrix3x3.h | 230 ++++ src/drivers/nema/include/nema_matrix4x4.h | 232 ++++ src/drivers/nema/include/nema_provisional.h | 124 ++ src/drivers/nema/include/nema_raster.h | 117 ++ src/drivers/nema/include/nema_sys_defs.h | 58 + src/drivers/nema/include/nema_transitions.h | 210 ++++ src/drivers/nema/include/nema_utils.h | 50 + src/drivers/nema/include/nema_version.h | 55 + src/drivers/nema/include/nema_vg.h | 254 ++++ src/drivers/nema/include/nema_vg_context.h | 233 ++++ src/drivers/nema/include/nema_vg_font.h | 210 ++++ src/drivers/nema/include/nema_vg_paint.h | 241 ++++ src/drivers/nema/include/nema_vg_path.h | 143 +++ src/drivers/nema/include/nema_vg_tsvg.h | 56 + src/drivers/nema/include/nema_vg_version.h | 55 + src/drivers/nema/include/tsi_malloc.h | 64 ++ .../nema/lib/libnemagfx-cortex-m55+fp.a | Bin 0 -> 317756 bytes src/drivers/nema/lib/libnemagfx-cortex-m55.a | Bin 0 -> 319516 bytes 31 files changed, 5031 insertions(+) create mode 100644 src/drivers/nema/LICENSE.pdf create mode 100644 src/drivers/nema/include/build_version.h create mode 100644 src/drivers/nema/include/nema_blender.h create mode 100644 src/drivers/nema/include/nema_cmdlist.h create mode 100644 src/drivers/nema/include/nema_core.h create mode 100644 src/drivers/nema/include/nema_easing.h create mode 100644 src/drivers/nema/include/nema_error.h create mode 100644 src/drivers/nema/include/nema_font.h create mode 100644 src/drivers/nema/include/nema_graphics.h create mode 100644 src/drivers/nema/include/nema_hal.h create mode 100644 src/drivers/nema/include/nema_interpolators.h create mode 100644 src/drivers/nema/include/nema_math.h create mode 100644 src/drivers/nema/include/nema_matrix3x3.h create mode 100644 src/drivers/nema/include/nema_matrix4x4.h create mode 100644 src/drivers/nema/include/nema_provisional.h create mode 100644 src/drivers/nema/include/nema_raster.h create mode 100644 src/drivers/nema/include/nema_sys_defs.h create mode 100644 src/drivers/nema/include/nema_transitions.h create mode 100644 src/drivers/nema/include/nema_utils.h create mode 100644 src/drivers/nema/include/nema_version.h create mode 100644 src/drivers/nema/include/nema_vg.h create mode 100644 src/drivers/nema/include/nema_vg_context.h create mode 100644 src/drivers/nema/include/nema_vg_font.h create mode 100644 src/drivers/nema/include/nema_vg_paint.h create mode 100644 src/drivers/nema/include/nema_vg_path.h create mode 100644 src/drivers/nema/include/nema_vg_tsvg.h create mode 100644 src/drivers/nema/include/nema_vg_version.h create mode 100644 src/drivers/nema/include/tsi_malloc.h create mode 100644 src/drivers/nema/lib/libnemagfx-cortex-m55+fp.a create mode 100644 src/drivers/nema/lib/libnemagfx-cortex-m55.a diff --git a/src/Makefile b/src/Makefile index 5b2d11082..19dcc2134 100755 --- a/src/Makefile +++ b/src/Makefile @@ -69,6 +69,7 @@ VL53L5CX_DIR=drivers/vl53l5cx PIXART_DIR=drivers/pixart DISPLAY_DIR=drivers/display DAVE2D_DIR=drivers/dave2d +NEMA_DIR=drivers/nema LIBPDM_DIR=lib/libpdm TENSORFLOW_DIR=lib/tflm CYW4343_FW_DIR=drivers/cyw4343/firmware/ diff --git a/src/drivers/nema/LICENSE.pdf b/src/drivers/nema/LICENSE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..72f275608d89e91c5d75e85b6facc93c688fb5b9 GIT binary patch literal 141368 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

$hMIkP;-*BK?Z5LOP($>crw#z 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 + * + */ +void *nema_buffer_map(nema_buffer_t *bo); + +/** \brief Unmaps buffer + * + * \param bo Pointer to buffer struct + * \return void + * + */ +void nema_buffer_unmap(nema_buffer_t *bo); + +/** \brief Destroy/deallocate buffer + * + * \param bo Pointer to buffer struct + * \return void + * + */ +void nema_buffer_destroy(nema_buffer_t *bo); + +/** \brief Get physical (GPU) base address of a given buffer + * + * \param bo Pointer to buffer struct + * \return Physical base address of a given buffer + * + */ +uintptr_t nema_buffer_phys(nema_buffer_t *bo); + +/** \brief Write-back buffer from cache to main memory + * + * \param bo Pointer to buffer struct + * \return void + * + */ +void nema_buffer_flush(nema_buffer_t * bo); + +/** \brief Allocate memory for CPU to use (typically, standard malloc() is called) + * + * \param size Size in bytes + * \return Pointer to allocated memory (virtual) + * \see nema_host_free() + * + */ +void *nema_host_malloc(size_t size); + +/** \brief Free memory previously allocated with nema_host_malloc() + * + * \param ptr Pointer to allocated memory (virtual) + * \return void + * \see nema_host_malloc() + * + */ +void nema_host_free(void *ptr ); + +/** \private */ +typedef struct nema_ringbuffer_t_ { + nema_buffer_t bo; + int offset; //number of 32-bit entries + int last_submission_id; +} nema_ringbuffer_t; + + +/** \brief Initialize Ring Buffer. Should be called from inside nema_sys_init(). + * This is a private function, the user should never call it. + * + * \param *rb Pointer to nema_ring_buffer_t struct + * \param reset Resets the Ring Buffer if non-zero + * \return Negative number on error + * \see nema_sys_init() + * + */ +/** \private */ +int nema_rb_init(nema_ringbuffer_t *rb, int reset); + +#define MUTEX_RB 0 +#define MUTEX_MALLOC 1 +#define MUTEX_FLUSH 2 +#define MUTEX_MAX 2 + +/** \brief Mutex Lock for multiple processes/threads + * + * \param MUTEX_RB or MUTEX_MALLOC + * \return int + * + */ +int nema_mutex_lock(int mutex_id); + +/** \brief Mutex Unlock for multiple processes/threads + * + * \param MUTEX_RB or MUTEX_MALLOC + * \return int + * + */ +int nema_mutex_unlock(int mutex_id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/include/nema_interpolators.h b/src/drivers/nema/include/nema_interpolators.h new file mode 100644 index 000000000..aa267cc38 --- /dev/null +++ b/src/drivers/nema/include/nema_interpolators.h @@ -0,0 +1,122 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef _NEMA_INTERPOLATORS_H_ +#define _NEMA_INTERPOLATORS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nema_sys_defs.h" + +typedef struct _color_var_t { + float r; /**< Red */ + float g; /**< Green */ + float b; /**< Blue */ + float a; /**< Alpha */ +} color_var_t; + +/** \brief Interpolate color gradient for rectangle + * + * \param x0 x coordinate of the upper left vertex of the rectangle + * \param y0 y coordinate at the upper left vertex of the rectangle + * \param w width of the rectangle + * \param h height of the rectangle + * \param col0 color for the first vertex + * \param col1 color for the second vertex + * \param col1 color for the third vertex + * + */ +void nema_interpolate_rect_colors(int x0, int y0, int w, int h, color_var_t* col0, color_var_t* col1, color_var_t* col2); + + +/** \brief Interpolate color gradient for triangle + * + * \details The upper left vertex of the triangle to be drawn + * must be in the vertex arguments as well. In addition, if + * clipping is applied for rendering a triangle with gradient, + * the upper left vertex must be within the clipping area. + * \param x0 x coordinate at the first vertex of the triangle + * \param y0 y coordinate at the first vertex of the triangle + * \param x1 x coordinate at the second vertex of the triangle + * \param y1 y coordinate at the second vertex of the triangle + * \param x2 x coordinate at the third vertex of the triangle + * \param y2 y coordinate at the third vertex of the triangle + * \param col0 color for the first vertex + * \param col1 color for the second vertex + * \param col1 color for the third vertex + * + */ +void nema_interpolate_tri_colors(float x0, float y0, float x1, float y1, float x2, float y2, color_var_t* col0, color_var_t* col1, color_var_t* col2); + +/** \brief Interpolate depth buffer values for triangle + * + * \param x0 x coordinate at the first vertex of the triangle + * \param y0 y coordinate at the first vertex of the triangle + * \param z0 z coordinate at the first vertex of the triangle + * \param x1 x coordinate at the second vertex of the triangle + * \param y1 y coordinate at the second vertex of the triangle + * \param z1 z coordinate at the second vertex of the triangle + * \param x2 x coordinate at the third vertex of the triangle + * \param y2 y coordinate at the third vertex of the triangle + * \param z2 z coordinate at the third vertex of the triangle + * + */ +void nema_interpolate_tri_depth(float x0, float y0, float z0, float x1, float y1, float z1, float x2, float y2, float z2); + +/** \brief Interpolate texture values for triangle + * + * \param x0 x coordinate at the first vertex of the triangle + * \param y0 y coordinate at the first vertex of the triangle + * \param w0 w coordinate at the first vertex of the triangle + * \param tx0 x texture coordinate at the first vertex of the triangle + * \param ty0 y texture coordinate at the first vertex of the triangle + * \param x1 x coordinate at the second vertex of the triangle + * \param y1 y coordinate at the second vertex of the triangle + * \param w1 w coordinate at the second vertex of the triangle + * \param tx1 x texture coordinate at the second vertex of the triangle + * \param ty1 y texture coordinate at the second vertex of the triangle + * \param x2 x coordinate at the third vertex of the triangle + * \param y2 y coordinate at the third vertex of the triangle + * \param w2 w coordinate at the third vertex of the triangle + * \param tx2 x texture coordinate at the third vertex of the triangle + * \param ty2 x texture coordinate at the third vertex of the triangle + * \param tex_width texture width + * \param tex_height texture height + * + */ +void nema_interpolate_tx_ty(float x0, float y0, float w0, float tx0, float ty0, + float x1, float y1, float w1, float tx1, float ty1, + float x2, float y2, float w2, float tx2, float ty2, + int tex_width, int tex_height ); +#ifdef __cplusplus +} +#endif + +#endif // _NEMA_INTERPOLATORS_H_ diff --git a/src/drivers/nema/include/nema_math.h b/src/drivers/nema/include/nema_math.h new file mode 100644 index 000000000..3bc3862a6 --- /dev/null +++ b/src/drivers/nema/include/nema_math.h @@ -0,0 +1,278 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_MATH_H__ +#define NEMA_MATH_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEMA_E 2.71828182845904523536f /**< e */ +#define NEMA_LOG2E 1.44269504088896340736f /**< log2(e) */ +#define NEMA_LOG10E 0.434294481903251827651f /**< log10(e) */ +#define NEMA_LN2 0.693147180559945309417f /**< ln(2) */ +#define NEMA_LN10 2.30258509299404568402f /**< ln(10) */ +#define NEMA_PI 3.14159265358979323846f /**< pi */ +#define NEMA_PI_2 1.57079632679489661923f /**< pi/2 */ +#define NEMA_PI_4 0.785398163397448309616f /**< pi/4 */ +#define NEMA_1_PI 0.318309886183790671538f /**< 1/pi */ +#define NEMA_2_PI 0.636619772367581343076f /**< 2/pi */ +#define NEMA_2_SQRTPI 1.12837916709551257390f /**< 2/sqrt(pi) */ +#define NEMA_SQRT2 1.41421356237309504880f /**< sqrt(2) */ +#define NEMA_SQRT1_2 0.707106781186547524401f /**< 1/sqrt(2) */ + +/** \brief Fast sine approximation of a given angle + * + * \param angle_degrees Angle in degrees + * \return Sine of the given angle + * + */ +float nema_sin(float angle_degrees); + + +/** \brief Fast cosine approximation of a given angle + * + * \param angle_degrees Angle in degrees + * \return Cosine of the given angle + * + */ +float nema_cos(float angle_degrees); + +/** \brief Fast tangent approximation of a given angle + * + * \param angle_degrees Angle in degrees + * \return Tangent of the given angle + * + */ +float nema_tan(float angle_degrees); + + +/** \brief Fast sine approximation of a given angle + * + * \param angle_radians Angle in radians + * \return Sine of the given angle + * + */ +float nema_sin_r(float angle_radians); + + +/** \brief Fast cosine approximation of a given angle + * + * \param angle_radians Angle in radians + * \return Cosine of the given angle + * + */ +float nema_cos_r(float angle_radians); + +/** \brief Fast tangent approximation of a given angle + * + * \param angle_radians Angle in radians + * \return Tangent of the given angle + * + */ +float nema_tan_r(float angle_radians); + +/** \brief Fast arc tangent approximation of a y/x + * + * \param y value + * \param x value + * \return Arc tangent of the given y/x in degrees + * + */ +float nema_atan2(float y, float x); + +/** \brief Fast arc tangent approximation of a y/x + * + * \param y value + * \param x value + * \return Arc tangent of the given y/x in radians + * + */ +float nema_atan2_r(float y, float x); + +/** \brief A rough approximation of x raised to the power of y. USE WITH CAUTION! + * + * \param x base value. Must be non negative. + * \param y power value + * \return the result of raising x to the power y + * + */ +float nema_pow(float x, float y); + +/** \brief A rough approximation of the square root of x. USE WITH CAUTION! + * + * \param x X value. Must be non negative + * \param + * \return The square root of x + * + */ +float nema_sqrt(float x); + + +/** \brief A floating-point approximation of the inverse tangent of x + * + * \param x X value + * \return Inverse tangent (angle) of x in degrees + * + */ +float nema_atan(float x); + +/** \brief Find the minimum of two values + * + * \param a First value + * \param b Second value + * \return The minimum of a and b + * + */ +#define nema_min2(a,b) (((a)<(b))?( a):(b)) + +/** \brief Find the maximum of two values + * + * \param a First value + * \param b Second value + * \return The maximum of a and b + * + */ +#define nema_max2(a,b) (((a)>(b))?( a):(b)) + +/** \brief Clamp value + * + * \param val Value to clamp + * \param min Minimum value + * \param max Minimum value + * \return Clamped value + * + */ +#define nema_clamp(val, min, max) nema_min2((max), nema_max2((min), (val))) + +/** \brief Calculate the absolute value of int + * + * \param a Value + * \return The absolute value of a + * + */ +#define nema_abs(a) (((a)< 0 )?(-(a)):(a)) + +/** \brief Calculate the absolute value of float + * + * \param a Value + * \return The absolute value of a + * + */ +#define nema_absf(a) (((a)< 0.f )?(-(a)):(a)) + + +/** \brief Compare two floats + * + * \param x First float + * \param y Second float + * \return 1 if x == y, 0 if x != y + * + */ +#define nema_floats_equal(x, y) (nema_absf((x) - (y)) <= 0.00001f * nema_min2(nema_absf(x), nema_absf(y))) + +/** \brief Checks if value x is zero + * + * \param x X value + * \return 1 if x == 0, 0 if x != 0 + * + */ +#define nema_float_is_zero(x) (nema_absf(x) <= 0.00001f) + +/** \brief Convert degrees to radians + * + * \param d Angle in degrees + * \return Angle in radians + * + */ +#define nema_deg_to_rad(d) (0.0174532925199f * (d)) //rad = deg * pi / 180 + +/** \brief Convert radians to degries + * + * \param r Angle in radians + * \return Angle in degrees + * + */ +#define nema_rad_to_deg(r) (57.295779513f * (r)) //deg = rad * 180 / pi + +/** \brief Convert integer to 16.16 fixed point + * + * \param a Value to be converted + * \return 16.16 fixed point value + * + */ +#define nema_i2fx(a) ((a)*0x10000) + +/** \brief Convert float to 16.16 fixed point + * + * \param a Value to be converted + * \return 16.16 fixed point value + * + */ +// #define nema_f2fx(a) ((int)(((a)*((float)0x10000)+0.5f))) +int nema_f2fx(float f); // ((int)(((a)*((float)0x10000)+0.5f))) + +/** \brief Floor function + * + * \param a Value to be floored + * \return floored value + * + */ +#define nema_floor(f) ((int)(f) - ( (int)(f) > (f) )) + +/** \brief Ceiling function + * + * \param a Value to be ceiled + * \return ceiled value + * + */ +#define nema_ceil(f) ((int)(f) + ( (int)(f) < (f) )) + +/** \brief Truncate function + * + * \param x Value to be truncated + * \return truncated value + * + */ +#define nema_truncf(x) (x < 0.0f ? nema_ceil(x) : nema_floor(x)) + +/** \brief Float Modulo function + * + * \param x Dividend + * \param y Divisor + * \return Remainder + * + */ +#define nema_fmod(x, y) ( (x) - nema_truncf( ( (x) / (y) ) ) * (y) ) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/include/nema_matrix3x3.h b/src/drivers/nema/include/nema_matrix3x3.h new file mode 100644 index 000000000..ba6d4d6b6 --- /dev/null +++ b/src/drivers/nema/include/nema_matrix3x3.h @@ -0,0 +1,230 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_MATRIX3X3_H__ +#define NEMA_MATRIX3X3_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef float nema_matrix3x3_t[3][3]; + + +/** \brief Load Identity Matrix + * + * \param m Matrix to be loaded + * + */ +void nema_mat3x3_load_identity(nema_matrix3x3_t m); + + +/** \brief Copy matrix _m to matrix m + * + * \param m Destination matrix + * \param m Source matrix + * + */ +void +nema_mat3x3_copy(nema_matrix3x3_t m, nema_matrix3x3_t _m); + +/** \brief Apply translate transformation + * + * \param m Matrix to apply transformation + * \param tx X translation factor + * \param ty Y translation factor + * + */ +void nema_mat3x3_translate (nema_matrix3x3_t m, float tx, float ty); + +/** \brief Apply scale transformation + * + * \param m Matrix to apply transformation + * \param sx X scaling factor + * \param sy Y scaling factor + * + */ +void nema_mat3x3_scale (nema_matrix3x3_t m, float sx, float sy); + +/** \brief Apply shear transformation + * + * \param m Matrix to apply transformation + * \param shx X shearing factor + * \param shy Y shearing factor + * + */ +void nema_mat3x3_shear (nema_matrix3x3_t m, float shx, float shy); + +/** \brief Apply mirror transformation + * + * \param m Matrix to apply transformation + * \param mx if non-zero, mirror horizontally + * \param my if non-zero, mirror vertically + * + */ +void nema_mat3x3_mirror (nema_matrix3x3_t m, int mx, int my); + +/** \brief Apply rotation transformation + * + * \param m Matrix to apply transformation + * \param angle_degrees Angle to rotate in degrees + * + */ +void nema_mat3x3_rotate (nema_matrix3x3_t m, float angle_degrees); + +/** \brief Apply rotation transformation + * + * \param m Matrix to apply transformation + * \param cosa Cos of angle to rotate + * \param sina Sin of angle to rotate + * + */ +void +nema_mat3x3_rotate2(nema_matrix3x3_t m, float cosa, float sina); + + +/** \brief Multiply two 3x3 matrices ( m = m*_m) + * + * \param m left matrix, will be overwritten by the result + * \param _m right matrix + * + */ +void nema_mat3x3_mul(nema_matrix3x3_t m, nema_matrix3x3_t _m); + +/** \brief Multiply vector with matrix + * + * \param m Matrix to multiply with + * \param x Vector x coefficient + * \param y Vector y coefficient + * + */ +void nema_mat3x3_mul_vec(nema_matrix3x3_t m, float *x, float *y); + +/** \brief Multiply vector with affine matrix + * + * \param m Matrix to multiply with + * \param x Vector x coefficient + * \param y Vector y coefficient + * + */ +void nema_mat3x3_mul_vec_affine(nema_matrix3x3_t m, float *x, float *y); + +/** \brief Calculate adjoint + * + * \param m Matrix + * + */ +void nema_mat3x3_adj(nema_matrix3x3_t m); + + +/** \brief Divide matrix with scalar value + * + * \param m Matrix to divide + * \param s scalar value + * + */ +void nema_mat3x3_div_scalar(nema_matrix3x3_t m, float s); + +/** \brief Invert matrix + * + * \param m Matrix to invert + * + */ +int nema_mat3x3_invert(nema_matrix3x3_t m); + +/** \private */ +int nema_mat3x3_square_to_quad(float dx0, float dy0, + float dx1, float dy1, + float dx2, float dy2, + float dx3, float dy3, + nema_matrix3x3_t m); + +/** \brief Map rectangle to quadrilateral + * + * \param width Rectangle width + * \param height Rectangle height + * \param sx0 x coordinate at the first vertex of the quadrilateral + * \param sy0 y coordinate at the first vertex of the quadrilateral + * \param sx1 x coordinate at the second vertex of the quadrilateral + * \param sy1 y coordinate at the second vertex of the quadrilateral + * \param sx2 x coordinate at the third vertex of the quadrilateral + * \param sy2 y coordinate at the third vertex of the quadrilateral + * \param sx3 x coordinate at the fourth vertex of the quadrilateral + * \param sy3 y coordinate at the fourth vertex of the quadrilateral + * \param m Mapping matrix + * + */ +int nema_mat3x3_quad_to_rect(int width, int height, + float sx0, float sy0, + float sx1, float sy1, + float sx2, float sy2, + float sx3, float sy3, + nema_matrix3x3_t m); + +/** \brief Apply rotation around a pivot point + * + * \param m Matrix to apply transformation + * \param angle_degrees Angle to rotate in degrees + * \param x X coordinate of the pivot point + * \param y Y coordinate of the pivot point + * + */ +void nema_mat3x3_rotate_pivot(nema_matrix3x3_t m, float angle_degrees, + float x, float y); + +/** \brief Apply scale and then rotation around a pivot point + * + * \param m Matrix to apply transformation +* \param sx X scaling factor + * \param sy Y scaling factor + * \param angle_degrees Angle to rotate in degrees + * \param x X coordinate of the pivot point + * \param y Y coordinate of the pivot point + * + */ +void nema_mat3x3_scale_rotate_pivot(nema_matrix3x3_t m, + float sx, float sy, + float angle_degrees, float x, float y); + + +/** \brief Copy matrix _m to matrix m + * + * \param m Destination matrix + * \param m Source matrix + * + */ + +void +nema_mat3x3_copy(nema_matrix3x3_t m, nema_matrix3x3_t _m); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/include/nema_matrix4x4.h b/src/drivers/nema/include/nema_matrix4x4.h new file mode 100644 index 000000000..2a03b0510 --- /dev/null +++ b/src/drivers/nema/include/nema_matrix4x4.h @@ -0,0 +1,232 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_MATRIX4X4_H__ +#define NEMA_MATRIX4X4_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef float nema_matrix4x4_t[4][4]; + + +/** \brief Load a 4x4 Identity Matrix + * + * \param m Matrix to be loaded + * + */ +void nema_mat4x4_load_identity(nema_matrix4x4_t m); + +/** \brief Multiply two 4x4 matrices + * + * \param m Result Matrix + * \param m_l Left operand + * \param m_r Right operand + * + */ +void nema_mat4x4_mul(nema_matrix4x4_t m, + nema_matrix4x4_t m_l, + nema_matrix4x4_t m_r); + + +void nema_mat4x4_copy(nema_matrix4x4_t m_l, + nema_matrix4x4_t m_r); + +/** \brief Multiply a 4x1 vector with a 4x4 matrix + * + * \param m Matrix to be multiplied + * \param x Vector first element + * \param y Vector second element + * \param z Vector third element + * \param w Vector forth element + * + */ +void nema_mat4x4_mul_vec(nema_matrix4x4_t m, float *x, float *y, float *z, float *w); + +// ------------------------------------------------------------------------------------ +// Object Transformation - ModelView Matrix +// Object Coordinates to Eye Coordinates +// ------------------------------------------------------------------------------------ + +/** \brief Apply translate transformation + * + * \param m Matrix to apply transformation + * \param tx X translation factor + * \param ty Y translation factor + * \param tz Z translation factor + * + */ +void nema_mat4x4_translate(nema_matrix4x4_t m, float tx, float ty, float tz); + +/** \brief Apply scale transformation + * + * \param m Matrix to apply transformation + * \param sx X scaling factor + * \param sy Y scaling factor + * \param sz Z scaling factor + * + */ +void nema_mat4x4_scale(nema_matrix4x4_t m, float sx, float sy, float sz); + +/** \brief Apply rotate transformation around X axis + * + * \param m Matrix to apply transformation + * \param angle_degrees Angle to rotate in degrees + * + */ +void nema_mat4x4_rotate_X (nema_matrix4x4_t m, float angle_degrees); + +/** \brief Apply rotate transformation around Y axis + * + * \param m Matrix to apply transformation + * \param angle_degrees Angle to rotate in degrees + * + */ +void nema_mat4x4_rotate_Y (nema_matrix4x4_t m, float angle_degrees); + +/** \brief Apply rotate transformation around Z axis + * + * \param m Matrix to apply transformation + * \param angle_degrees Angle to rotate in degrees + * + */ +void nema_mat4x4_rotate_Z (nema_matrix4x4_t m, float angle_degrees); + +// ------------------------------------------------------------------------------------ +// Scene Transformation/Frustum - Projection Matrix +// Eye Coordinates to Clip Coordinates +// ------------------------------------------------------------------------------------ + +/** \brief Set up a perspective projection matrix + * + * \param m A 4x4 Matrix + * \param fovy_degrees Field of View in degrees + * \param aspect Aspect ratio that determines the field of view in the x direction. + * \param nearVal Distance from the viewer to the near clipping plane (always positive) + * \param farVal Distance from the viewer to the far clipping plane (always positive) + * + */ +void nema_mat4x4_load_perspective(nema_matrix4x4_t m, float fovy_degrees, float aspect, + float nearVal, float farVal); + + +/** \brief Set up a Right Hand perspective projection matrix + * + * \param m A 4x4 Matrix + * \param fovy_degrees Field of View in degrees + * \param aspect Aspect ratio that determines the field of view in the x direction. + * \param nearVal Distance from the viewer to the near clipping plane (always positive) + * \param farVal Distance from the viewer to the far clipping plane (always positive) + * + */ +void nema_mat4x4_load_perspective_rh(nema_matrix4x4_t m, float fovy_degrees, float aspect, + float nearVal, float farVal); + +/** \brief Set up an orthographic projection matrix + * + * \param m A 4x4 Matrix + * \param left Left vertical clipping plane + * \param right Right vertical clipping plane + * \param bottom bottom horizontal clipping plane + * \param top Top horizontal clipping plane + * \param nearVal Distance from the viewer to the near clipping plane (always positive) + * \param farVal Distance from the viewer to the far clipping plane (always positive) + * + */ +void nema_mat4x4_load_ortho(nema_matrix4x4_t m, + float left, float right, + float bottom, float top, + float nearVal, float farVal); + +/** \brief Set up a 2D orthographic projection matrix + * + * \param m A 4x4 Matrix + * \param left Left vertical clipping plane + * \param right Right vertical clipping plane + * \param bottom bottom horizontal clipping plane + * \param top Top horizontal clipping plane + * + */ +void nema_mat4x4_load_ortho_2d(nema_matrix4x4_t m, + float left, float right, + float bottom, float top); + +/** \brief Set up a Right Hand view matrix. + * + * \param m A 4x4 Matrix + * \param eye_x Eye position x. + * \param eye_y Eye position y. + * \param eye_z Eye position z. + * \param center_x Center x to look at + * \param center_y Center y to look at + * \param center_z Center z to look at + * \param up_x Up vector x. (Usually 0) + * \param up_y Up vector y. (Usually 1) + * \param up_z Up vector z. (Usually 0) + * + */ +void nema_mat4x4_look_at_rh(nema_matrix4x4_t m, + float eye_x, float eye_y, float eye_z, + float center_x, float center_y, float center_z, + float up_x, float up_y, float up_z); + +// ------------------------------------------------------------------------------------ +// Clip Coordinates to Window Coordinates +// ------------------------------------------------------------------------------------ + +/** \brief Convenience Function to calculate window coordinates from object coordinates + * + * \param mvp Model, View and Projection Matrix + * \param x_orig Window top left X coordinate + * \param y_orig Window top left Y coordinate + * \param width Window width + * \param height Window height + * \param nearVal Distance from the viewer to the near clipping plane (always positive) + * \param farVal Distance from the viewer to the far clipping plane (always positive) + * \param x X object coordinate + * \param y Y object coordinate + * \param z Z object coordinate + * \param w W object coordinate + * \return 1 if vertex is outside frustum (should be clipped) + * + */ +int nema_mat4x4_obj_to_win_coords(nema_matrix4x4_t mvp, + float x_orig, float y_orig, + int width, int height, + float nearVal, float farVal, + float *x, + float *y, + float *z, + float *w); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/include/nema_provisional.h b/src/drivers/nema/include/nema_provisional.h new file mode 100644 index 000000000..44a56588e --- /dev/null +++ b/src/drivers/nema/include/nema_provisional.h @@ -0,0 +1,124 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_PROVISIONAL_H__ +#define NEMA_PROVISIONAL_H__ + +#include "nema_sys_defs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief Fill a triangle strip with color (float coordinates) + * + * \param vertices pointer to vertices coordinated (first x coordinate of vertex, + * then y coordinate of vertex) + * \param num_vertices number of vertices + * \param stride Distance between two vertices + * \param rgba8888 Color to be used + * + */ +void nema_fill_triangle_strip_f(float* vertices, int num_vertices, int stride, uint32_t rgba8888); + +/** \brief Fill a traingle fan with color (float coordinates) + * + * \param vertices pointer to vertices coordinated (first x coordinate of vertex, + * then y coordinate of vertex) + * \param num_vertices number of vertices + * \param stride Distance between two vertices + * \param rgba8888 Color to be used + * + */ +void nema_fill_triangle_fan_f(float* vertices, int num_vertices, int stride, uint32_t rgba8888); + +/** \brief Draws a triangle with specific border width. Apply AA if available. + * Degenerated triangles have undefined behavior. + * + * \param x0 x coordinate at the first vertex of the triangle + * \param y0 y coordinate at the first vertex of the triangle + * \param x1 x coordinate at the second vertex of the triangle + * \param y1 y coordinate at the second vertex of the triangle + * \param x2 x coordinate at the third vertex of the triangle + * \param y2 y coordinate at the third vertex of the triangle + * \param border_width triangle's border width + * \param color color of the triangle + * + */ +void nema_draw_triangle_aa(float x0, float y0, float x1, float y1, float x2, float y2, + float border_width, uint32_t color); + + +/** \brief Draw a colored rectangle with rounded edges and specific border width. Apply AA if available. + * + * \param x x coordinate of the upper left vertex of the rectangle + * \param y y coordinate at the upper left vertex of the rectangle + * \param w width of the rectangle + * \param h height of the rectangle + * \param r corner radius + * \param border_width border width + * \param rgba8888 rgba color of the rounded rectangle + * + */ +void nema_draw_rounded_rect_aa(float x, float y, float w, float h, float r, float border_width, uint32_t rgba8888); + + +/** \brief Draw a filled colored rectangle with rounded edges and specific border width. Apply AA if available. + * + * \param x x coordinate of the upper left vertex of the rectangle + * \param y y coordinate at the upper left vertex of the rectangle + * \param w width of the rectangle + * \param h height of the rectangle + * \param r corner radius + * \param rgba8888 rgba color of the rounded rectangle + * + */ +void nema_fill_rounded_rect_aa(float x, float y, float w, float h, float r, uint32_t rgba8888); + +/** \brief Draws a quadrilateral with specific border width. Apply AA if available. + * Only Convex quadrilaterals are supported. + * + * \param x0 x coordinate at the first vertex of the quadrilateral + * \param y0 y coordinate at the first vertex of the quadrilateral + * \param x1 x coordinate at the second vertex of the quadrilateral + * \param y1 y coordinate at the second vertex of the quadrilateral + * \param x2 x coordinate at the third vertex of the quadrilateral + * \param y2 y coordinate at the third vertex of the quadrilateral + * \param x3 x coordinate at the fourth vertex of the quadrilateral + * \param y3 y coordinate at the fourth vertex of the quadrilateral + * \param border_width trianquadrilateralgle's border width + * \param color color of the quadrilateral + * + */ +void nema_draw_quad_aa(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, + float border_width, uint32_t color); +#ifdef __cplusplus +} +#endif + +#endif // NEMA_PROVISIONAL_H__ diff --git a/src/drivers/nema/include/nema_raster.h b/src/drivers/nema/include/nema_raster.h new file mode 100644 index 000000000..770fbcd32 --- /dev/null +++ b/src/drivers/nema/include/nema_raster.h @@ -0,0 +1,117 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_RASTER_H__ +#define NEMA_RASTER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** \private */ +void nema_set_raster_color(uint32_t rgba8888); + +/** \private */ +void nema_raster_pixel(int x, int y); + +/** \private */ +void nema_raster_line(int x0, int y0, int x1, int y1); + +/** \private */ +void nema_raster_triangle_fx(int x0fx, int y0fx, int x1fx, int y1fx, int x2fx, int y2fx); + + +/** \private */ +void nema_raster_rect(int x, int y, int w, int h); + +/** \private */ +void nema_raster_rounded_rect(int x0, int y0, int w, int h, int r); + + +/** \private */ +void nema_raster_quad_fx(int x0fx, int y0fx, + int x1fx, int y1fx, int x2fx, int y2fx, int x3fx, int y3fx); + +/** \private */ +void nema_raster_triangle (int x0, int y0, int x1, int y1, int x2, int y2); + +/** \private */ +void nema_raster_quad (int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3); + +/** \private */ +void nema_raster_circle(float x, float y, float r); + +/** \private */ +void nema_raster_circle_aa(float x, float y, float r); + +/** \private */ +void nema_raster_stroked_circle_aa(float x, float y, float r, float w); + +/** \private */ +void nema_raster_rect_fx(int xfx, int yfx, int wfx, int hfx); + +/** \private */ +void nema_raster_rect_f(float x, float y, float w, float h); + +/** \private */ +void +nema_raster_triangle_f(float x0, float y0, float x1, float y1, float x2, float y2); + +/** \private */ +void +nema_raster_triangle_p0_f(float x0, float y0); + +/** \private */ +void +nema_raster_triangle_p1_f(float x1, float y1); + +/** \private */ +void +nema_raster_triangle_p2_f(float x2, float y2); + +/** \private */ +void +nema_raster_quad_f(float x0, float y0, float x1, float y1, + float x2, float y2, float x3, float y3); + +/** \private */ +void +nema_raster_stroked_arc_aa( float x0, float y0, float r, float w, float start_angle, float end_angle); + +/** \private */ +// aa_mask: +// RAST_AA_E0: AA on first ending +// RAST_AA_E2: AA on last ending +void +nema_raster_stroked_arc_aa_mask( float x0, float y0, float r, float w, float start_angle, float end_angle, uint32_t aa_mask); + +#ifdef __cplusplus +} +#endif + +#endif //NEMA_RASTER_H__ diff --git a/src/drivers/nema/include/nema_sys_defs.h b/src/drivers/nema/include/nema_sys_defs.h new file mode 100644 index 000000000..0e48e528a --- /dev/null +++ b/src/drivers/nema/include/nema_sys_defs.h @@ -0,0 +1,58 @@ +/** + ****************************************************************************** + * @file nema_sys_defs.h + * @author MCD Application Team + * @brief Header file of NemaGFX System Definitions for STM32 Platforms. + * This file provides definition of types being used by the NemaGFX + * library. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef NEMA_SYS_DEFS_H__ +#define NEMA_SYS_DEFS_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Includes ------------------------------------------------------------------*/ +#include +#include +#include +#include + +/* Temporarily added by ST */ +#ifdef __ICCARM__ +#define FORCE_INLINE _Pragma("inline = forced") +#else +#define FORCE_INLINE +#endif + +/* No Multi-Thread support */ +#define TLS_VAR + +#ifdef NEMA_VG_INVALIDATE_CACHE +void platform_disable_cache(void); +void platform_invalidate_cache(void); + +#define NEMA_VG_DISABLE_CACHE platform_disable_cache() +#define NEMA_VG_ENABLE_INVALIDATE_CACHE platform_invalidate_cache() +#endif + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* NEMA_SYS_DEFS_H__ */ diff --git a/src/drivers/nema/include/nema_transitions.h b/src/drivers/nema/include/nema_transitions.h new file mode 100644 index 000000000..3a92646a5 --- /dev/null +++ b/src/drivers/nema/include/nema_transitions.h @@ -0,0 +1,210 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_TRANSITIONS_H__ +#define NEMA_TRANSITIONS_H__ + +#include "nema_blender.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + NEMA_TRANS_LINEAR_H, + NEMA_TRANS_CUBE_H, + NEMA_TRANS_INNERCUBE_H, + NEMA_TRANS_STACK_H, + NEMA_TRANS_LINEAR_V, + NEMA_TRANS_CUBE_V, + NEMA_TRANS_INNERCUBE_V, + NEMA_TRANS_STACK_V, + NEMA_TRANS_FADE, + NEMA_TRANS_FADE_ZOOM, + NEMA_TRANS_MAX, + NEMA_TRANS_NONE, +} nema_transition_t; + +/** \brief Transition from 'initial' texture to 'final' texture. The transition is complete when 'step' is 0 or 1 + * + * \param effect Transition effect + * \param initial Initial texture + * \param final Final texture + * \param blending_mode Blending mode + * \param step Transition step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition(nema_transition_t effect, nema_tex_t initial, nema_tex_t final, + uint32_t blending_mode, float step, int width, int height); + + +/** \brief Linear transition horizontally. When 'step' changes from zero to one, textures move from right to left, +otherwise textures move from left to right. The transition is complete when 'step' is 0 or 1. + * + * \param left Texture on the left side + * \param right Texture on the right side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * + */ +void nema_transition_linear_hor(nema_tex_t left, nema_tex_t right, + uint32_t blending_mode, float step, int width); + +/** \brief Linear transition vertically. When 'step' changes from zero to one, textures move from top to bottom, +otherwise textures move from bottom to top. The transition is complete when 'step' is 0 or 1. + * + * \param up Texture on the top side + * \param down Texture on the bottom side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param height Texture height + * + */ +void nema_transition_linear_ver(nema_tex_t up, nema_tex_t down, + uint32_t blending_mode, float step, int height); + +/** \brief Cubic (textures are mapped on the external faces of a cube) transition horizontally. When 'step' changes from zero to one, textures move from left to right, +otherwise textures move from right to left. The transition is complete when 'step' is 0 or 1. + * + * \param left Texture on the left side + * \param right Texture on the right side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_cube_hor(nema_tex_t left, nema_tex_t right, + uint32_t blending_mode, float step, int width, int height); + +/** \brief Cube (textures are mapped on the external faces of a cube) transition vertically. When 'step' changes from zero to one, textures move from top to bottom, +otherwise textures move from bottom to top. The transition is complete when 'step' is 0 or 1. + * + * \param up Texture on the top side + * \param down Texture on the bottom side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_cube_ver(nema_tex_t up, nema_tex_t down, + uint32_t blending_mode, float step, int width, int height); + +/** \brief Inner Cube (textures are mapped on the internal faces of a cube) transition horizontally. When 'step' changes from zero to one, textures move from left to right, +otherwise textures move from right to left. The transition is complete when 'step' is 0 or 1. + * + * \param left Texture on the left side + * \param right Texture on the right side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_innercube_hor(nema_tex_t left, nema_tex_t right, + uint32_t blending_mode, float step, int width, int height); + +/** \brief Inner Cube (textures are mapped on the internal faces of a cube) transition vertically. When 'step' changes from zero to one, textures move from top to bottom, +otherwise textures move from bottom to top. The transition The transition is complete when 'step' is 0 or 1. + * + * \param up Texture on the top side + * \param down Texture on the bottom side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_innercube_ver(nema_tex_t up, nema_tex_t down, + uint32_t blending_mode, float step, int width, int height); + +/** \brief Stack transition horizontally. When 'step' changes from zero to one, textures move from left to right, +otherwise textures move from right to left. The transition is complete when 'step' is 0 or 1. + * + * \param up Texture on the top side + * \param down Texture on the bottom side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_stack_hor(nema_tex_t left, nema_tex_t right, float step, + int width, int height); + +/** \brief Stack transition vertically. When 'step' moves from zero to one, textures move from top to bottom, +otherwise textures move from bottom to top. The transition is complete when 'step' is 0 or 1. + * + * \param up Texture on the top side + * \param down Texture on the bottom side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_stack_ver(nema_tex_t up, nema_tex_t down, float step, + int width, int height); + +/** \brief Fade transition. Initial texture is being faded out, while final texture is being faded in. +The transition is complete when 'step' is 0 or 1. + * + * \param left Texture on the left side + * \param right Texture on the right side + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_fade(nema_tex_t initial, nema_tex_t final, + uint32_t blending_mode, float step, int width, int height); + +/** \brief Fade-zoom transition. Initial texture is being zoomed and faded out, while final texture is being zoomed and faded in. +The transition is complete when 'step' is 0 or 1. + * + * \param initial Initial texture + * \param final Final texture + * \param blending_mode Blending mode + * \param step Current step within [0.f , 1.f] range + * \param width Texture width + * \param height Texture height + * + */ +void nema_transition_fade_zoom(nema_tex_t initial, nema_tex_t final, + uint32_t blending_mode, float step, int width, int height); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/include/nema_utils.h b/src/drivers/nema/include/nema_utils.h new file mode 100644 index 000000000..03caff051 --- /dev/null +++ b/src/drivers/nema/include/nema_utils.h @@ -0,0 +1,50 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + + +#ifndef NEMA_UTILS_H_ +#define NEMA_UTILS_H_ + +#include "nema_hal.h" + +#ifdef __cplusplus +extern "C" { +#endif + +float nema_get_time(void); +float nema_get_wall_time(void); +nema_buffer_t nema_load_file(const char *filename, int length, void *buffer); +int nema_save_file(const char *filename, int length, void *buffer); +unsigned int nema_rand(void); +void nema_calculate_fps(void); +void * nema_memcpy ( void * destination, const void * source, size_t num ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/include/nema_version.h b/src/drivers/nema/include/nema_version.h new file mode 100644 index 000000000..8bd7af1b1 --- /dev/null +++ b/src/drivers/nema/include/nema_version.h @@ -0,0 +1,55 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief Contains version numbers for NemaGFX API and the currently supported font version. + * + */ + +#ifndef NEMA_VERSION_H__ +#define NEMA_VERSION_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEMA_MAJOR_VERSION 0x01U /**< NemaGFX API version, major number */ +#define NEMA_MINOR_VERSION 0x04U /**< NemaGFX API version, minor number */ +#define NEMA_REVISION_VERSION 0x0BU /**< NemaGFX API version, revision number */ +#define NEMA_IMP_VERSION 0x00240600U /**< NemaGFX API version, implementation in format 0x00YYMM00 (Y: year, M: month) */ + +#define NEMA_API_VERSION ((NEMA_MAJOR_VERSION << 16) + (NEMA_MINOR_VERSION << 8) + (NEMA_REVISION_VERSION)) /**< NemaGFX API version in format 0x00MMmmrr (M:major, m:minor, r:revision if any) */ + +#define NEMA_FONT_VERSION 0x01U /**< Current font version */ + + +#ifdef __cplusplus +} +#endif + +#endif //NEMA_VERSION_H__ diff --git a/src/drivers/nema/include/nema_vg.h b/src/drivers/nema/include/nema_vg.h new file mode 100644 index 000000000..af5f95522 --- /dev/null +++ b/src/drivers/nema/include/nema_vg.h @@ -0,0 +1,254 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief Core NemaVG API drawing and initialization functions. + * + */ + +#ifndef __NEMA_VG_H__ +#define __NEMA_VG_H__ + +#include "nema_core.h" +#include "nema_sys_defs.h" +#include "nema_vg_path.h" +#include "nema_vg_paint.h" +#include "nema_vg_context.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// ------------------------------------------------------------------------------- +// SETUP +// ------------------------------------------------------------------------------- + +/** \brief Initializes NemaVG library and allocates the stencil buffer to the default memory pool (NEMA_MEM_POOL_FB) + * Call either this or nema_vg_init_stencil_pool to allocate the stencil buffer to a different memory pool + * or nema_vg_init_stencil_prealloc to provide the stencil buffer + * \param width Framebuffer width + * \param height Framebuffer height + */ +void nema_vg_init(int width, int height); + +/** \brief Initializes NemaVG library and allocate the stencil buffer in a specific memory pool. + * Call either this or nema_vg_init to allocate the stencil buffer to the default memory pool (NEMA_MEM_POOL_FB) + * or nema_vg_init_stencil_prealloc to provide the stencil buffer + * \param width Stencil buffer width - Must be the first multiple of 4 of the framebuffer width + * \param height Stencil buffer height - Must be the first multiple of 4 of the framebuffer height + * \param pool Memory pool for allocating the stencil buffer (memory pools are platform specific and defined in nema_sys_defs.h file) + */ +void nema_vg_init_stencil_pool(int width, int height, int pool); + +/** \brief Initializes NemaVG library without allocating the stencil buffer which is provided by the user. + * Call either this or nema_vg_init to allocate the stencil buffer to the default memory pool (NEMA_MEM_POOL_FB) + * or nema_vg_init_stencil_pool to allocate the stencil buffer to a different memory pool + * \param width Stencil buffer width - Must be the first multiple of 4 of the framebuffer width + * \param height Stencil buffer height - Must be the first multiple of 4 of the framebuffer height + * \param stencil_bo stencil buffer + */ +void nema_vg_init_stencil_prealloc(int width, int height, nema_buffer_t stencil_bo); + + +/** \brief Reinitialize NemaVG library after a gpu powerofff + * + */ +void nema_vg_reinit(void); + +/** \brief Deinitialize NemaVG library. Free memory from implicitly allocated objects (stencil buffer + * if created inside the library, lut buffer and tsvgs' path, paint and gradient buffers) + * + * + */ +void nema_vg_deinit(void); + +/** \brief Initialize NemaVG library for a new thread. + * Must be called for every new thread that is used. + * + * + */ +void nema_vg_thread_init(void); + + +// ------------------------------------------------------------------------------- +// PATH DRAW +// ------------------------------------------------------------------------------- + +/** \brief Draw a path using a specified paint object + * + * \param path Pointer (handle) to the path that will be drawn + * \param paint Pointer (handle) to the paint object that wil be used for drawing + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_path(NEMA_VG_PATH_HANDLE path, NEMA_VG_PAINT_HANDLE paint); + +/** \brief Draw a line shape + * + * \param x1 Upper left x coordinate + * \param y1 Upper left y coordinate + * \param x2 The width + * \param y2 The height + * \param m 3x3 affine transformation matrix + * \param paint The paint to draw + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_line(float x1, float y1, float x2, float y2, + nema_matrix3x3_t m, + NEMA_VG_PAINT_HANDLE paint); + +/** \brief Draw a rectangle shape + * + * \param x Upper left x coordinate + * \param y Upper left y coordinate + * \param width The width + * \param height The height + * \param m 3x3 affine transformation matrix + * \param paint The paint to draw + + * \return Error code + * + */ +uint32_t nema_vg_draw_rect(float x, float y, float width, float height, + nema_matrix3x3_t m, + NEMA_VG_PAINT_HANDLE paint); + +/** \brief Draw a rounded rectangle shape + * + * \param x Upper left x coordinate + * \param y Upper left y coordinate + * \param width The width + * \param height The height + * \param rx Horizontal cornel radius + * \param ry Vertical cornel radius + * \param m 3x3 affine transformation matrix + * \param paint The paint to draw + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_rounded_rect(float x, float y, float width, float height, + float rx, float ry, + nema_matrix3x3_t m, + NEMA_VG_PAINT_HANDLE paint); + +/** \brief Draw a ellipse shape + * + * \param cx The x position of the ellipse + * \param cy The y position of the ellipse + * \param rx Radius on the x axis + * \param ry Radius on the y axis + * \param m 3x3 affine transformation matrix + * \param paint The paint to draw + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_ellipse(float cx, float cy, float rx, float ry, + nema_matrix3x3_t m, + NEMA_VG_PAINT_HANDLE paint); + +/** \brief Draw a circle shape + * + * \param cx The x center of the circle + * \param cy The y center of the circle + * \param r Radius of the circle + * \param m 3x3 affine transformation matrix + * \param paint The paint to draw + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_circle(float cx, float cy, float r, + nema_matrix3x3_t m, + NEMA_VG_PAINT_HANDLE paint); + + +/** \brief Draw a filled ring with rounded caps shape. In case of a conical gradient paint type, + * the conical gradient center should be at the center of the ring(cx, cy). In other case, where the two centers do not match, + * the ring should be drawn with NEMA_VG_QUALITY_MAXIMUM. The ring width can be set with the paint's stroke_width. + * + * \param cx The center x coordinate of the ring + * \param cy The center y coordinate of the ring + * \param ring_radius The radius of the ring + * \param angle_start The angle in degrees of the ring + * \param angle_end The angle in degrees that ends this ring + * \param paint The paint to draw + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_ring(float cx, float cy, float ring_radius, float angle_start, float angle_end, + NEMA_VG_PAINT_HANDLE paint); + +/** \private + * \brief Draw a filled ring with flat ending or rounded ending caps. In case of a conical gradient paint type, + * the conical gradient center should be at the center of the ring(cx, cy). In other case, where the two centers do not match, + * the ring should be drawn with NEMA_VG_QUALITY_MAXIMUM. The ring width can be set with the paint's stroke_width. + * + * \param cx The center x coordinate of the ring + * \param cy The center y coordinate of the ring + * \param ring_radius The radius of the ring + * \param angle_start The angle in degrees of the ring + * \param angle_end The angle in degrees that ends this ring + * \param paint The paint to draw + * \param has_caps 1 For caps 0 for flat ending + + * \return Error code. See NEMA_VG_ERR_* defines in "nema_vg_context.h" header file for the error codes. + * + */ +uint32_t nema_vg_draw_ring_generic(float cx, float cy, float ring_radius, float angle_start, float angle_end, + NEMA_VG_PAINT_HANDLE paint, uint8_t has_caps); + + +/** \brief Returns the minimum and maximum values for the coordinates that + * can be handled by the underlying hardware + * + * \param min_coord Minimum coordinate (x or y) value (pointer) + * \param max_coord Maximum coordinate (x or y) value (pointer) + * + */ +void nema_vg_get_coord_limits(float *min_coord, float *max_coord); + + +/** \brief Disables tsvg features from rendering. Should be set before + * nema_vg_draw_tsvg() + * + * \param feature feature to be disabled + * + */ +void nema_vg_tsvg_disable_feature(uint32_t feature); + +#ifdef __cplusplus +} +#endif + +#endif //__NEMA_VG_H__ diff --git a/src/drivers/nema/include/nema_vg_context.h b/src/drivers/nema/include/nema_vg_context.h new file mode 100644 index 000000000..5cc237610 --- /dev/null +++ b/src/drivers/nema/include/nema_vg_context.h @@ -0,0 +1,233 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief NemaVG Context interface. + * + * Contains NemaVG error codes, fill rules, rendering quality defines and functions for updating various rendering parameters. + * The functions defined here can be used to access the context parameters. The Context is an internal (opaque) struct of NemaVG. + */ + +#ifndef __NEMA_VG_CONTEXT_H__ +#define __NEMA_VG_CONTEXT_H__ + +#include "nema_graphics.h" +#include "nema_matrix3x3.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifndef NEMA_VG_HANDLE +#define NEMA_VG_HANDLE void* /**< NemaVG handle object (void pointer)*/ +#endif + +#define NEMA_VG_PATH_HANDLE NEMA_VG_HANDLE /**< NemaVG path handle (pointer to path object)*/ +#define NEMA_VG_PAINT_HANDLE NEMA_VG_HANDLE /**< NemaVG paint handle (pointer to paint object)*/ +#define NEMA_VG_GRAD_HANDLE NEMA_VG_HANDLE /**< NemaVG gradient handle (pointer to gradient object)*/ + +typedef float nema_vg_float_t; /**< Floating point data type (default is 'float') */ + +#define NEMA_VG_ERR_NO_ERROR (0x00000000U) /**< No Error */ +#define NEMA_VG_ERR_BAD_HANDLE (0x00000001U) /**< Bad handle */ +#define NEMA_VG_ERR_BAD_BUFFER (0x00000002U) /**< Bad buffer */ +#define NEMA_VG_ERR_INVALID_FILL_RULE (0x00000004U) /**< Invalid fill rule*/ +#define NEMA_VG_ERR_INVALID_PAINT_TYPE (0x00000008U) /**< Invalid paint type*/ +#define NEMA_VG_ERR_INVALID_VERTEX_DATA (0x00000010U) /**< Invalid vertex data*/ +#define NEMA_VG_ERR_NO_RADIAL_ENABLED (0x00000020U) /**< Radial not present in HW*/ +#define NEMA_VG_ERR_NO_BOUND_CL (0x00000040U) /**< No bound CL*/ +#define NEMA_VG_ERR_INVALID_ARGUMENTS (0x00000080U) /**< Invalid arguments*/ +#define NEMA_VG_ERR_INVALID_ARC_DATA (0x00000100U) /**< reserved */ +#define NEMA_VG_ERR_CL_FULL (0x00000200U) /**< reserved */ +#define NEMA_VG_ERR_DRAW_OUT_OF_BOUNDS (0x00000400U) /**< Path is out of the drawing area */ +#define NEMA_VG_ERR_INVALID_MASKING_OBJ (0x00000800U) /**< Masking object was not set */ +#define NEMA_VG_ERR_INVALID_MASKING_FORMAT (0x00001000U) /**< Invalid Masking object Format */ +#define NEMA_VG_ERR_INVALID_LUT_IDX_FORMAT (0x00002000U) /**< Invalid LUT indices object Format */ +#define NEMA_VG_ERR_COORDS_OUT_OF_RANGE (0x00004000U) /**< Path coordinates out of supported range */ +#define NEMA_VG_ERR_EMPTY_TSVG (0x00008000U) /**< Tsvg has no geometries */ +#define NEMA_VG_ERR_NO_BOUND_FONT (0x00010000U) /**< There is no bound font */ +#define NEMA_VG_ERR_UNSUPPORTED_FONT (0x00020000U) /**< The font is not supported (eg. older version) by NemaVG API */ +#define NEMA_VG_ERR_NON_INVERTIBLE_MATRIX (0x00040000U) /**< A matrix that needs to be inverted, is not invertible */ +#define NEMA_VG_ERR_INVALID_GRAD_STOPS (0x00080000U) /**< Gradient stops exceed maximum available stops */ +#define NEMA_VG_ERR_NO_INIT (0x00100000U) /**< VG uninitialized */ +#define NEMA_VG_ERR_INVALID_STROKE_WIDTH (0x00200000U) /**< Invalid stroke width */ +#define NEMA_VG_ERR_INVALID_OPACITY (0x00400000U) /**< Invalid opacity */ +#define NEMA_VG_ERR_INVALID_CAP_STYLE (0x00800000U) /**< Invalid cap style */ +#define NEMA_VG_ERR_INVALID_JOIN_STYLE (0x01000000U) /**< Invalid join style */ +#define NEMA_VG_ERR_INVALID_STENCIL_SIZE (0x02000000U) /**< Invalid stencil buffer size */ + +#define NEMA_VG_FILL_DRAW (0x00U) /**< DEPRECATED Stroke fill rule */ +#define NEMA_VG_STROKE (0x00U) /**< Stroke fill rule */ +#define NEMA_VG_FILL_EVEN_ODD (0x01U) /**< Evenodd fill rule */ +#define NEMA_VG_FILL_NON_ZERO (0x02U) /**< Non zero fill rule */ + +#define NEMA_VG_QUALITY_BETTER (0x00U) /**< Better rendering quality (default option, balances rendering quality and performance)*/ +#define NEMA_VG_QUALITY_FASTER (0x01U) /**< Faster rendering quality (favors performance over rendering quality)*/ +#define NEMA_VG_QUALITY_MAXIMUM (0x02U) /**< Maximum rendering quality (favors rendering quality over performance)*/ +#define NEMA_VG_QUALITY_NON_AA (0x10U) /**< Rendering quality without AA*/ + +#define NEMA_VG_CAP_BUTT (0x00U) /**< Butt cap*/ +#define NEMA_VG_CAP_ROUND (0x01U) /**< Round cap*/ +#define NEMA_VG_CAP_SQUARE (0x02U) /**< Square cap*/ +#define NEMA_VG_CAP_MAX (0x03U) /**< Max value for cap*/ + +#define NEMA_VG_JOIN_BEVEL (0x00U) /**< Bevel join*/ +#define NEMA_VG_JOIN_MITER (0x01U) /**< Mitter join*/ +#define NEMA_VG_JOIN_ROUND (0x02U) /**< Round join*/ +#define NEMA_VG_JOIN_MAX (0x03U) /**< Max for join*/ + +#define NEMA_VG_TSVG_DISABLE_NONE (0x00000000U) /**< Disable none*/ +#define NEMA_VG_TSVG_DISABLE_CAPS (0x00000001U) /**< Disable caps*/ +#define NEMA_VG_TSVG_DISABLE_JOINS (0x00000002U) /**< Disable joins*/ + +/** \brief Set the global transformation matrix. Global matrix will be applied in all NemaVG rendering operations that will follow. + * + * \param m transformation matrix + * + * \return Error code + */ +uint32_t nema_vg_set_global_matrix(nema_matrix3x3_t m); + + +/** \brief Disable the global transformation matrix. + * + */ +void nema_vg_reset_global_matrix(void); + +/** \brief Set the fill rule that will be applied when rendering a path. + * + * \param fill_rule fill rule (NEMA_VG_STROKE, NEMA_VG_FILL_EVEN_ODD, NEMA_VG_FILL_NON_ZERO) + * + */ +void nema_vg_set_fill_rule(uint8_t fill_rule); + +/** \brief Set the stroke width that will be applied when stroking a path. + * + * \param width Stroke width to be set + * + */ +void nema_vg_stroke_set_width(float width); + + /** \brief Set stroke cap style + * + * \param cap_style Cap style (NEMA_VG_CAP_BUTT | NEMA_VG_CAP_SQUARE | NEMA_VG_CAP_ROUND) + * + */ +void nema_vg_stroke_set_cap_style(uint8_t start_cap_style, uint8_t end_cap_style); + + /** \brief Set stroke join style + * + * \param join_style Join style (NEMA_VG_JOIN_BEVEL | NEMA_VG_JOIN_MITER | NEMA_VG_JOIN_ROUND) + * + */ +void nema_vg_stroke_set_join_style(uint8_t join_style); + + /** \brief Set stroke miter limit + * If miter join is chosen and miter length is bigger than the product + * of miter limit and stroke width a bevel join will be added instead + * + * \param miter_limit miter join limit to be set + * + */ +void nema_vg_stroke_set_miter_limit(float miter_limit); + +/** \brief Enable/Disable Masking. + * + * \param masking 1 to enable, 0 to disable + * + */ +void nema_vg_masking(uint8_t masking); + +/** \brief Set the mask object (texture) + * + * \param mask_obj Texture to be used as mask. Its format must be NEMA_A1, NEMA_A2, NEMA_A4 or Nema_A8, otherwise it will return an error. + * \return Error code. If no error occurs, NEMA_VG_ERR_NO_ERROR otherwise NEMA_VG_ERR_INVALID_MASKING_FORMAT. + * + */ +uint32_t nema_vg_set_mask(nema_img_obj_t *mask_obj); + +/** \brief Translate the mask object (texture) with respect to origin point (0, 0). Sets the position of the mask object. + * + * \param x Horizontal position to place the mask object + * \param y Horizontal position to place the mask object + * + */ +void nema_vg_set_mask_translation(float x, float y); + +/** \brief Set the rendering quality + * + * \param quality level (NEMA_VG_QUALITY_BETTER, NEMA_VG_QUALITY_FASTER, NEMA_VG_QUALITY_MAXIMUM, NEMA_VG_QUALITY_NON_AA) + * + */ +void nema_vg_set_quality(uint8_t quality); + +/** \brief Set the blending mode for VG operations (see nema_blender.h documentation in NemaGFX API Manual) + * Additional Blending Operations: only NEMA_BLOP_SRC_PREMULT is supported + * + * \param blend Blending mode + * \see nema_blending_mode() + * + */ +void nema_vg_set_blend(uint32_t blend); + +/** \brief Get the current error code. Clears the error afterwards. + * + * \return Error code. See NEMA_VG_ERR_* defines for all the possible error codes. + */ +uint32_t nema_vg_get_error(void); + +/** \brief Enable/disable large coordinates handling when rendering a TSVG, a path or a predefined shape + * + * \param enable 0 to disable, 1 to enable + * \param allow_internal_alloc 0 to not allow internal allocation, 1 to allow + * + */ +void nema_vg_handle_large_coords(uint8_t enable, uint8_t allow_internal_alloc); + +/** \brief Bind segment and data buffers to be used for handling large coordinates + * + * \param segs Pointer to segment buffer for large coordinates + * \param segs_size_bytes Segment buffer size in bytes + * \param data Pointer to data buffer for large coordinates + * \param data_size_bytes Data buffer size in bytes + * + */ +uint32_t nema_vg_bind_clip_coords_buf(void *segs, uint32_t segs_size_bytes, void *data, uint32_t data_size_bytes); + +/** \brief Unbind segment and data buffers to be used for handling large coordinates + * + * + */ +void nema_vg_unbind_clip_coords_buf(void); + +#ifdef __cplusplus +} +#endif + +#endif //__NEMA_VG_CONTEXT_H__ diff --git a/src/drivers/nema/include/nema_vg_font.h b/src/drivers/nema/include/nema_vg_font.h new file mode 100644 index 000000000..01e01af50 --- /dev/null +++ b/src/drivers/nema/include/nema_vg_font.h @@ -0,0 +1,210 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief Vector font rendering + * + * This file includes the necessary structs and functions that are used for rendering text (strings and single characters), + * using vector fonts. The accompanying vector font converter utility, converts truetype fonts (ttf files) to instances + * of the structs defined here. A use case of this module is included in the respective examples (examples/NemaVG/render_vg_font). + */ + +#ifndef NEMA_VG_FONT_H_ +#define NEMA_VG_FONT_H_ + +#include "nema_matrix3x3.h" +#include "nema_vg.h" +#include "nema_vg_context.h" +#include "nema_font.h" //vector to raster conversion + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEMA_VG_ALIGNX_LEFT (0x00U) /**< Align horizontally to the left */ +#define NEMA_VG_ALIGNX_RIGHT (0x01U) /**< Align horizontally to the right */ +#define NEMA_VG_ALIGNX_CENTER (0x02U) /**< Align horizontally centered */ +#define NEMA_VG_ALIGNX_JUSTIFY (0x03U) /**< Justify horizontally */ +#define NEMA_VG_ALIGNX_MASK (0x03U) /**< Horizontal alignment mask */ +#define NEMA_VG_ALIGNY_TOP (0x00U) /**< Align vertically to the top */ +#define NEMA_VG_ALIGNY_BOTTOM (0x04U) /**< Align vertically to the bottom */ +#define NEMA_VG_ALIGNY_CENTER (0x08U) /**< Align vertically centered */ +#define NEMA_VG_ALIGNY_JUSTIFY (0x0cU) /**< Justify vertically */ +#define NEMA_VG_ALIGNY_MASK (0x0cU) /**< Vertical alignment mask */ +#define NEMA_VG_TEXT_WRAP (0x10U) /**< Use text wrapping */ + +#define NEMA_VG_CHAR_LTR (0x00U) /**< Character follows left to right orientation */ +#define NEMA_VG_CHAR_RTL (0x01U) /**< Character follows right to left orientation */ +#define NEMA_VG_CHAR_TTB (0x00U) /**< Character follows top to bottom orientation */ +#define NEMA_VG_CHAR_BTT (0x02U) /**< Character follows bottom to top orientation */ + + +/** NemaVG Kerning pair information data struct */ +typedef struct { + const uint32_t left; /**< Neighbor character to the left of the current one (Unicode value) */ + const float x_offset; /**< Kerning offset value (horizontally) */ +} nema_vg_kern_pair_t; + +/** NemaVG data struct of a glyph in vector format*/ +typedef struct { + const uint32_t data_offset; /**< Offset value for the data of the glyph in the respective data array */ + const size_t data_length; /**< Length of the data in the respective data array */ + const uint32_t segment_offset; /**< Offset value for the segments of the glyph in the respective segment array */ + const size_t segment_length; /**< Length of the segments in the respective segment array */ + const float xAdvance; /**< Advance width*/ + const uint32_t kern_offset; /**< Kerning offset of the glyph in the respective kerning array */ + const uint8_t kern_length; /**< Length of the kerning information of the glyph */ + const int16_t bbox_xmin; /**< Minimum x of the glyph's bounding box */ + const int16_t bbox_ymin; /**< Minimum y of the glyph's bounding box */ + const int16_t bbox_xmax; /**< Maximum x of the glyph's bounding box */ + const int16_t bbox_ymax; /**< Maximum y of the glyph's bounding box */ +} nema_vg_glyph_t; + +/** NemaVG vector font range data struct */ +typedef struct { + const uint32_t first; /**< Unicode value of the first value of the range */ + const uint32_t last; /**< Unicode value of the last value of the range */ + const nema_vg_glyph_t *glyphs; /**< Pointer to the array of glyphs */ +} nema_vg_font_range_t; + +/** NemaVG vector font data struct*/ +typedef struct { + const uint32_t version; /**< Font version */ + const nema_vg_font_range_t *ranges; /**< Pointer to the array of ranges */ + const nema_vg_float_t *data; /**< Pointer to the data of the vector font */ + const size_t data_length; /**< Length of the vector font data*/ + const uint8_t *segment; /**< Pointer to the segments of the vector font */ + const size_t segment_length; /**< Length of the vector font segments */ + const float size; /**< Default font size (height) */ + const float xAdvance; /**< Default advance width. If the space character is included in the ranges, then its advance width is set */ + const float ascender; /**< Vertical distance from the baseline to the highest point of the font */ + const float descender; /**< Vertical distance from the baseline to the lowest point of the font */ + const nema_vg_kern_pair_t *kern_pairs; /**< Pointer to the array of the font's kerning pairs */ + uint32_t flags; /**< Bit field, reserved for future use */ +} nema_vg_font_t; + +/** \brief Bind the font to use in future nema_vg_print() calls. Sets error code if font is not supported. + * + * \param font Pointer to the vector font + * + */ +void nema_vg_bind_font(nema_vg_font_t *font); + +/** \brief Sets the size of the bound font. Future nema_vg_print() and nema_vg_print_char() calls will print using the last set size. + * + * \param font Pointer to the vector font + * + */ +void nema_vg_set_font_size(float size); + + +/** \brief Print pre-formatted text + * + * \param paint Pointer to the current paint object (contains the text color) + * \param str Pointer to string + * \param x X coordinate of text-area's top-left corner + * \param y Y coordinate of text-area's top-left corner + * \param w Max allowed width + * \param h Max allowed height + * \param align Alignment and wrapping mode + * \param m Transformation matrix + * + */ +void nema_vg_print(NEMA_VG_PAINT_HANDLE paint, const char *str, float x, float y, float w, float h, uint32_t align, nema_matrix3x3_t m); + + +/** \brief Get the bounding box's width and height of a vector string. Prior to calling this function, "nema_vg_set_font_size" must be called first. + * + * \param str Pointer to string + * \param w Pointer to variable where width should be written + * \param h Pointer to variable where height should be written + * \param max_w Max allowed width + * \param size font size + * \param wrap enable text wraping + * \return Number of carriage returns + * + */ +int nema_vg_string_get_bbox(const char *str, float *w, float *h, float max_w, uint32_t wrap); + + +/** \brief Get the text ascender value in point units. Font size must be set pror to calling this function. + * + * \return Ascender pt + * + */ +int nema_vg_get_ascender_pt(void); + +/** \brief Print a single character + * + * \details The position of the character is determined by the 'orientation' argument. + * x and y arguments define a point on the baseline. If the orientation is left to right (LTR), + * the character will be placed to the right of the (x, y) point. Right to left (RTL) will place + * the character to the left of the (x, y) point. Top to bottom (TTB) will have the same effect as + * RTL and bottom to top (BTT) will place the character higher than the (x, y) point by an offset + * equal to the font height. + * + * \param paint Pointer to the current paint object (contains the text color) + * \param ch Character to be printed + * \param x X coordinate of character's top-left or top-right corner (controlled by the 'orientation' parameter) + * \param y Y coordinate of character's top-left or bottom-left corner (controlled by the 'orientation' parameter) + * \param m Transformation matrix + * \param orientation Character orientation (see NEMA_VG_CHAR_* defines) + * \return Character width in pixels + * + */ +float nema_vg_print_char(NEMA_VG_PAINT_HANDLE paint, char ch, float x, float y, nema_matrix3x3_t m, uint32_t orientation); + +/** \brief Generates a raster font from a vector font + * + * \details Creates an 8-bpp raster version of the bound vector font. Performs dynamic memory allocation in + * the graphics memory (for the font bitmaps) and in the heap (for the data structs accessed by the CPU). + * When the font is no longer needed, function "nema_vg_destroy_raster_font()" can be used to free the allocated + * memory. The font generation may fail when there is not enough memory to generate the font or when the font + * size is greater than the height of the framebuffer. + * + * \param size The size of the font that will be generated + * \param pool Memory pool to store the font bitmaps + * \return Pointer to the data struct of generated raster font. If the font was not generated (due to insufficient memory) it returns NULL. + * + */ +nema_font_t* nema_vg_generate_raster_font(int size, int pool); + +/** \brief Frees the memory that was allocated for a font data struct + * + * \details This function frees memory that was allocated at runtime. Input must be + * a font data struct that was generated by the "nema_vg_generate_raster_font" function. + * + * \param font Pointer to the raster font data struct that will be erased from the memory + * + */ +void nema_vg_destroy_raster_font(nema_font_t *font); + +#ifdef __cplusplus +} +#endif +#endif // NEMA_VG_FONT_H_ diff --git a/src/drivers/nema/include/nema_vg_paint.h b/src/drivers/nema/include/nema_vg_paint.h new file mode 100644 index 000000000..b6677ebf9 --- /dev/null +++ b/src/drivers/nema/include/nema_vg_paint.h @@ -0,0 +1,241 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief Paint operation related fuctions. Paint is an internal (opaque) struct of NemaVG. + * The functions defined here can be used access its parameters. + * + */ + +#ifndef __NEMA_VG_PAINT_H__ +#define __NEMA_VG_PAINT_H__ + +#include "nema_interpolators.h" +#include "nema_matrix3x3.h" +#include "nema_vg_context.h" +#include "nema_graphics.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEMA_VG_PAINT_COLOR (0x00U) /**< Fill with color */ +#define NEMA_VG_PAINT_FILL (0x00U) /**< Deprecated - Fill with color (same as NEMA_VG_PAINT_COLOR) */ +#define NEMA_VG_PAINT_GRAD_LINEAR (0x01U) /**< Fill with linear gradient */ +#define NEMA_VG_PAINT_TEXTURE (0x02U) /**< Fill with texture */ +#define NEMA_VG_PAINT_GRAD_RADIAL (0x03U) /**< Fill with radial gradient */ +#define NEMA_VG_PAINT_GRAD_CONICAL (0x04U) /**< Fill with conical gradient */ + +#define NEMA_VG_PAINT_MAX_GRAD_STOPS (32) /**< Maximum gradient stops*/ + +/** \brief Create a paint object. + * + * \return Handle to the created paint object + * + */ +NEMA_VG_PAINT_HANDLE nema_vg_paint_create(); + +/** \brief Destroy a paint object. + * + * \param paint Handle to paint object that should be destroyed + * + */ +void nema_vg_paint_destroy(NEMA_VG_PAINT_HANDLE paint); + +/** \brief Clear the parameters of a paint object. + * + * \param paint Pointer (handle) to paint object + * + */ +void nema_vg_paint_clear(NEMA_VG_PAINT_HANDLE paint); + +/** \brief Set the paint type + * + * \param paint Pointer (handle) to paint + * \param type Paint type (NEMA_VG_PAINT_COLOR, NEMA_VG_PAINT_GRAD_LINEAR, NEMA_VG_PAINT_TEXTURE, NEMA_VG_PAINT_GRAD_RADIAL, NEMA_VG_PAINT_GRAD_CONICAL) + * + */ +void nema_vg_paint_set_type(NEMA_VG_PAINT_HANDLE paint, uint8_t type); + + +/** \brief Lock paint transformation to path. If locked, path and paint + * transformation will be in sync. + * + * \param paint Pointer to paint object + * \param locked 1 if locked (default), 0 if not locked + * + */ +void nema_vg_paint_lock_tran_to_path(NEMA_VG_PAINT_HANDLE paint, int locked); + +/** \brief Set linear gradient to a paint object + * + * \param paint Pointer to paint object + * \param grad Pointer to gradient object + * \param x0 Linear gradient start point x coordinate + * \param y0 Linear gradient start point y coordinate + * \param x1 Linear gradient end point x coordinate + * \param y1 Linear gradient end point y coordinate + * \param sampling_mode Sampling mode. NEMA_TEX_BORDER defaults to NEMA_TEX_CLAMP + * + */ +void nema_vg_paint_set_grad_linear(NEMA_VG_PAINT_HANDLE paint, + NEMA_VG_GRAD_HANDLE grad, + float x0, float y0, + float x1, float y1, + nema_tex_mode_t sampling_mode); + + /** \brief Set the paint color + * + * \param paint Pointer (handle) to paint object + * \param rgba Color to be set, in rgba (hex 0xAABBGGRR) format + * + */ +void nema_vg_paint_set_paint_color(NEMA_VG_PAINT_HANDLE paint, uint32_t rgba); + + /** \brief Set the paint opacity + * + * \param paint Pointer (pointer) to paint object + * \param opacity Opacity to be set, 1 is fully opaque and 0 is fully transparent + * + */ +void nema_vg_paint_set_opacity(NEMA_VG_PAINT_HANDLE paint, float opacity); + + /** \brief Set stroke width - DEPRECATED USE nema_vg_stroke_set_width + * + * \param paint Pointer (handle) to paint object + * \param stroke_width Stroke width to be set + * + */ +void nema_vg_paint_set_stroke_width(NEMA_VG_PAINT_HANDLE paint, float stroke_width); + + /** \brief Set transformation matrix for texture + * + * \param paint Pointer (handle) to paint object + * \param m 3x3 transformation matrix + * + */ +void nema_vg_paint_set_tex_matrix(NEMA_VG_PAINT_HANDLE paint, nema_matrix3x3_t m); + + /** \brief Set texture to paint object + * + * \param paint Pointer (handle) to paint + * \param text Pointer to texture image object + * + */ +void nema_vg_paint_set_tex(NEMA_VG_PAINT_HANDLE paint, nema_img_obj_t* tex); + + /** \brief Set Lut-based (look-up-table) texture to paint object. See Nema Pixpresso User Manual regarding Lut formats + * + * \param paint Pointer (handle) to paint object + * \param lut_palette Pointer to the Palette of the Lut image object + * \param lut_indices Pointer to the indices of the Lut image object + * + */ +void nema_vg_paint_set_lut_tex(NEMA_VG_PAINT_HANDLE paint, nema_img_obj_t* lut_palette, nema_img_obj_t* lut_indices); + +/** \brief Set Conical gradient to paint object + * + * \param paint Pointer (handle) to paint + * \param grad Pointer (handle) to gradient + * \param cx Conical gradient center point x coordinate + * \param cy Conical gradient center point y coordinate + * \param sampling_mode Sampling mode + * + */ +void nema_vg_paint_set_grad_conical(NEMA_VG_PAINT_HANDLE paint, + NEMA_VG_GRAD_HANDLE grad, + float cx, float cy, + nema_tex_mode_t sampling_mode); + +/** \brief Set radial gradient to paint object + * + * \param paint Pointer (handle) to paint + * \param grad Pointer (handle) to gradient + * \param x0 Radial gradient center point x coordinate + * \param y0 Radial gradient center point y coordinate + * \param r Radial gradient radius + * \param sampling_mode Sampling mode + * + */ +void +nema_vg_paint_set_grad_radial(NEMA_VG_PAINT_HANDLE paint, + NEMA_VG_GRAD_HANDLE grad, + float x0, float y0, + float r, + nema_tex_mode_t sampling_mode); + + +/** \brief Set radial gradient to paint object, with different horizontal and vertical radius + * + * \param paint Pointer (handle) to paint + * \param grad Pointer (handle) to gradient + * \param x0 Radial gradient center point x coordinate + * \param y0 Radial gradient center point y coordinate + * \param rx Radial gradient radius on x axis + * \param ry Radial gradient radius on y axis + * \param sampling_mode Sampling mode + * + */ +void +nema_vg_paint_set_grad_radial2(NEMA_VG_PAINT_HANDLE paint, + NEMA_VG_GRAD_HANDLE grad, + float x0, float y0, + float rx, float ry, + nema_tex_mode_t sampling_mode); + +/** \brief Create gradient object + * + * \return Handle (pointer) to the created gradient object + */ +NEMA_VG_GRAD_HANDLE +nema_vg_grad_create(void); + +/** \brief Destroy gradient object + * + * \param grad Pointer to the gradient object + * + */ +void +nema_vg_grad_destroy(NEMA_VG_GRAD_HANDLE grad); + +/** \brief Set gradient parameters to a gradient object + * + * \param grad Pointer (handle) to gradient object + * \param stops_count Number of stop colors + * \param stops Pointer to stop colors coordinates + * \param colors Pointer to stop color values + * + */ +void +nema_vg_grad_set(NEMA_VG_GRAD_HANDLE grad, int stops_count, float *stops, color_var_t* colors); + +#ifdef __cplusplus +} +#endif + +#endif //__NEMA_VG_PAINT_H__ diff --git a/src/drivers/nema/include/nema_vg_path.h b/src/drivers/nema/include/nema_vg_path.h new file mode 100644 index 000000000..4280d4ed8 --- /dev/null +++ b/src/drivers/nema/include/nema_vg_path.h @@ -0,0 +1,143 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief Path operation related fuctions + * + */ + +#ifndef __NEMA_VG_PATH_H__ +#define __NEMA_VG_PATH_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include "nema_interpolators.h" +#include "nema_matrix3x3.h" +#include "nema_sys_defs.h" +#include "nema_vg_context.h" + +#define NEMA_VG_PRIM_CLOSE (0x00U) /**< Close segment */ +#define NEMA_VG_PRIM_MOVE (0x01U) /**< Move segment */ +#define NEMA_VG_PRIM_LINE (0x02U) /**< Line segment */ +#define NEMA_VG_PRIM_HLINE (0x03U) /**< Horizontal line segment */ +#define NEMA_VG_PRIM_VLINE (0x04U) /**< Vertical line segment */ +#define NEMA_VG_PRIM_BEZIER_QUAD (0x05U) /**< Quadratic bezier segment */ +#define NEMA_VG_PRIM_BEZIER_CUBIC (0x06U) /**< Cubic bezier segment */ +#define NEMA_VG_PRIM_BEZIER_SQUAD (0x07U) /**< Smooth quadratic bezier segment */ +#define NEMA_VG_PRIM_BEZIER_SCUBIC (0x08U) /**< Smooth cubic bezier segment */ +#define NEMA_VG_PRIM_ARC (0x09U) /**< Arc segment */ +#define NEMA_VG_PRIM_POLYGON (0x0AU) /**< Polygon segment */ +#define NEMA_VG_PRIM_POLYLINE (0x0BU) /**< Polyline segment */ +#define NEMA_VG_PRIM_MASK (0x0FU) /**< Mask for all segments */ +#define NEMA_VG_REL (0x10U) /**< Rel segment*/ +#define NEMA_VG_ARC_LARGE (0x20U) /**< Large arc segment */ +#define NEMA_VG_ARC_CW (0x40U) /**< Clockwise arc segment */ +#define NEMA_VG_PRIM_SCCWARC (NEMA_VG_PRIM_ARC ) /**< Small counterclockwise arc segment */ +#define NEMA_VG_PRIM_SCWARC (NEMA_VG_PRIM_ARC | NEMA_VG_ARC_CW ) /**< Small clockwise arc segment */ +#define NEMA_VG_PRIM_LCCWARC (NEMA_VG_PRIM_ARC | NEMA_VG_ARC_LARGE) /**< Large counterclockwise arc segment */ +#define NEMA_VG_PRIM_LCWARC (NEMA_VG_PRIM_ARC | NEMA_VG_ARC_CW |NEMA_VG_ARC_LARGE) /**< Large clockwise arc segment */ +#define NEMA_VG_PRIM_MOVE_REL (NEMA_VG_PRIM_MOVE | NEMA_VG_REL) /**< Relative move segment */ +#define NEMA_VG_PRIM_LINE_REL (NEMA_VG_PRIM_LINE | NEMA_VG_REL) /**< Relative line segment */ +#define NEMA_VG_PRIM_HLINE_REL (NEMA_VG_PRIM_HLINE | NEMA_VG_REL) /**< Relative horizontal line segment */ +#define NEMA_VG_PRIM_VLINE_REL (NEMA_VG_PRIM_VLINE | NEMA_VG_REL) /**< Relative vertical line segment */ +#define NEMA_VG_PRIM_BEZIER_QUAD_REL (NEMA_VG_PRIM_BEZIER_QUAD | NEMA_VG_REL) /**< Relative quadratic bezier segment */ +#define NEMA_VG_PRIM_BEZIER_CUBIC_REL (NEMA_VG_PRIM_BEZIER_CUBIC | NEMA_VG_REL) /**< Relative cubic bezier segment */ +#define NEMA_VG_PRIM_BEZIER_SQUAD_REL (NEMA_VG_PRIM_BEZIER_SQUAD | NEMA_VG_REL) /**< Relative smooth quadratic bezier segment */ +#define NEMA_VG_PRIM_BEZIER_SCUBIC_REL (NEMA_VG_PRIM_BEZIER_SCUBIC | NEMA_VG_REL) /**< Relative smooth cubic bezier segment */ +#define NEMA_VG_PRIM_SCCWARC_REL (NEMA_VG_PRIM_SCCWARC | NEMA_VG_REL) /**< Relative small counterclockwise arc segment */ +#define NEMA_VG_PRIM_SCWARC_REL (NEMA_VG_PRIM_SCWARC | NEMA_VG_REL) /**< Relative small clockwise arc segment */ +#define NEMA_VG_PRIM_LCCWARC_REL (NEMA_VG_PRIM_LCCWARC | NEMA_VG_REL) /**< Relative lareg counterclockwise arc segment */ +#define NEMA_VG_PRIM_LCWARC_REL (NEMA_VG_PRIM_LCWARC | NEMA_VG_REL) /**< Relative lareg rclockwise arc segment */ +#define NEMA_VG_PRIM_POLYGON_REL (NEMA_VG_PRIM_POLYGON | NEMA_VG_REL) /**< Relative polygon segment */ +#define NEMA_VG_PRIM_POLYLINE_REL (NEMA_VG_PRIM_POLYLINE | NEMA_VG_REL) /**< Relative polyline segment */ + + +/** \brief Create path + * + * \return Created path + * + */ +NEMA_VG_PATH_HANDLE nema_vg_path_create(); + +/** \brief Destroy path + * + * \param path Pointer to Path + * \return void + * + */ +void nema_vg_path_destroy(NEMA_VG_PATH_HANDLE path); + +/** \brief Clear path + * + * \param path Pointer to Path + * \return void + * + */ +void nema_vg_path_clear(NEMA_VG_PATH_HANDLE path); + +/** \brief Set path shape (vertex buffer) + * + * \param path Pointer to path + * \param seg_size Number of segments to be added + * \param seg Pointer to segments + * \param data_size Number of data to be added + * \param data Pointer to coordinates + * + */ +void nema_vg_path_set_shape(NEMA_VG_PATH_HANDLE path, const size_t seg_size , const uint8_t* seg, const size_t data_size, const nema_vg_float_t* data); + +/** \brief Set path shape (vertex buffer) and bounding box. Same functionality as nema_vg_path_set_shape() + * but bbox is given by user (reduces CPU utilization) + * + * \param path Pointer to path + * \param seg_size Number of segments to be added + * \param seg Pointer to segments + * \param data_size Number of data to be added + * \param data Pointer to coordinates + * \param bbox Pointer to shape bound box coordinates {min_x, min_y, max_x, max_y} + * + */ +void +nema_vg_path_set_shape_and_bbox(NEMA_VG_PATH_HANDLE path, const size_t seg_size, const uint8_t* seg, const size_t data_size, const nema_vg_float_t* data, const nema_vg_float_t *bbox); + +/** \brief Set affine transformation matrix + * + * \param path Pointer to path + * \param m 3x3 affine transformation matrix + * + */ +void nema_vg_path_set_matrix(NEMA_VG_PATH_HANDLE path, nema_matrix3x3_t m); + +#ifdef __cplusplus +} +#endif + +#endif //__NEMA_VG_PATH_H__ diff --git a/src/drivers/nema/include/nema_vg_tsvg.h b/src/drivers/nema/include/nema_vg_tsvg.h new file mode 100644 index 000000000..7c6eb9585 --- /dev/null +++ b/src/drivers/nema/include/nema_vg_tsvg.h @@ -0,0 +1,56 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief API for rendering .tsvg images + * + */ + +#ifndef NEMA_VG_TSVG_H_ +#define NEMA_VG_TSVG_H_ + +#include "nema_vg_context.h" + +/** \brief Draws a TSVG buffer + * + * \param buffer Pointer to the TSVG buffer that will be drawn + * + */ +void +nema_vg_draw_tsvg(const void* buffer); + +/** \brief Get the width and height of tsvg + * + * \param buffer Tsvg buffer + * \param width return Tsvg width + * \param height return Tsvg height + * + */ +void nema_vg_get_tsvg_resolution(const void *buffer, uint32_t *width, uint32_t *height); + +#endif // NEMA_VG_TSVG_H_ diff --git a/src/drivers/nema/include/nema_vg_version.h b/src/drivers/nema/include/nema_vg_version.h new file mode 100644 index 000000000..7e7581285 --- /dev/null +++ b/src/drivers/nema/include/nema_vg_version.h @@ -0,0 +1,55 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +/** + * @file + * @brief Contains version numbers for NemaVG API and the currently supported font version. + * + */ + +#ifndef NEMA_VG_VERSION_H__ +#define NEMA_VG_VERSION_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEMA_VG_MAJOR_VERSION 0x01U /**< NemaVG API version, major number */ +#define NEMA_VG_MINOR_VERSION 0x01U /**< NemaVG API version, minor number */ +#define NEMA_VG_REVISION_VERSION 0x07U /**< NemaVG API version, revision number */ +#define NEMA_VG_IMP_VERSION 0x00240600U /**< NemaVG API version, implementation in format 0x00YYMM00 (Y: year, M: month) */ + +#define NEMA_VG_API_VERSION ((NEMA_VG_MAJOR_VERSION << 16) + (NEMA_VG_MINOR_VERSION << 8) + (NEMA_VG_REVISION_VERSION)) /**< NemaVG API version in format 0x00MMmmrr (M:major, m:minor, r:revision if any) */ + +#define NEMA_VG_FONT_VERSION 0x01U /**< Current font version */ + + +#ifdef __cplusplus +} +#endif + +#endif //NEMA_VG_VERSION_H__ diff --git a/src/drivers/nema/include/tsi_malloc.h b/src/drivers/nema/include/tsi_malloc.h new file mode 100644 index 000000000..cf39538fe --- /dev/null +++ b/src/drivers/nema/include/tsi_malloc.h @@ -0,0 +1,64 @@ +/* TSI 2023.xmo */ +/******************************************************************************* + * Copyright (c) 2023 Think Silicon Single Member PC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this header file and/or associated documentation files to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Materials, and to permit persons to whom the Materials are furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Materials. + * + * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS + * NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX + * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT: + * https://think-silicon.com/products/software/nemagfx-api + * + * The software is provided 'as is', without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall + * Think Silicon Single Member PC be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the software. + ******************************************************************************/ + +#ifndef TSI_MALLOC_H__ +#define TSI_MALLOC_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#define tsi_malloc_init(base_virt, base_phys, size, reset) \ + tsi_malloc_init_pool(0, base_virt, base_phys, size, reset) + +#define tsi_malloc(size) tsi_malloc_pool(0, size) + +int tsi_malloc_init_pool( int pool, + void *base_virt, + uintptr_t base_phys, + int size, + int reset); + +int tsi_malloc_init_pool_aligned( int pool, + void *base_virt, + uintptr_t base_phys, + int size, + int reset, + int alignment); /*alignment must be multiple of 4, otherwise it will be overwritten internaly to be multiple of 4*/ + +void *tsi_malloc_pool(int pool, int size); +void tsi_free(void *ptr); +uintptr_t tsi_virt2phys(void *addr); +void *tsi_phys2virt(uintptr_t addr); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/drivers/nema/lib/libnemagfx-cortex-m55+fp.a b/src/drivers/nema/lib/libnemagfx-cortex-m55+fp.a new file mode 100644 index 0000000000000000000000000000000000000000..d755869d0fa62eb9af05e78c2e3bc27e2ec8906d GIT binary patch literal 317756 zcmeFa3wTsTnm1m3NxIVsp-H%e5JD#nBoHnkL5YZCl1>hna1$@%bvm63bYmcG5;QRG zM+X>1bY>$#g#?uu*d1?+iNXwCm_)_VnUUErr%#`R z(cPWr`}Udr*VCu#yq9|G_SRcx%=mxlGOf6snKo7oy?(`*>3`aF9_joGmw7y6fA#Cyx0(4bT}yW{^X0CeB0a-h zzX5*ewZ3wl$6a3KF0ZNd)K$9u@T#h+%b5;e>)TXWp+l-*MP+SWP4z|bRh`dYRY|P1Dn*v4g7w1*t7zZ)D&KmZ z8x^&>x~9C+y}D{ct&(a@=qk5QDWS5e%JmhMHJYR#6>g4|B@tMG+>}>WRoA%htW>I$ z(6u$?!=cNo*9-ozh?+`S0RNZK6_sTh*0`(huB@r3@!X@-Lggkm}jzCe{(B_H5+As=3M4-xgzcvhk+8{DH5>@3v#c9g2k|QEQDJ&7;$~@(FYJ+iD z8%kk_41~4}{fuCfQJMr$g9lS&3CUGW#=*V1dc9Jyur|K+YuwyQlvUTuJbvKn+;!D% ze|4>|&R4By2}f%=AgZ!n*fKd#xtFVz2Cu}R@akfsgm6^7+f#8jEQMljG%dU`d|&RZ zEWdN%${SZwn^$?MNmbU=R4XQs+XF3v@}{Bl0;sE0vPyvg$n8U3SW~%1Mxl_< zeuP=#3{^hGjtNMyHMJZ3{_2{#T66?Hzrc}1fQU(0KM@K=tjMWc?}7Pnuc`4=_$o#9 zD9DORf1P5DC^r?pn!1fJd~4LIDX&7)9|jL&w$1~KgDywO9I{eTsX-v~Fv40)&6+Zg zsO3t<;3GB_%L|Zfm|BPelcPhC{flJc8F80wSiQPZsV*M2YJ-N6iYBrY2%{+io>@7C zO1{IzLne`1LYc0DZjX{Dj;Wyzv9bb1Sgy1KjwW+Zr4*C~p$n^qS?#N;a-%#w>(_`- z95qxrM{A{P5UO-JY@~ED;&M(@s(ZBtLG%cONRB|3RiUd7XOn~IBO@`gK$%r887&4W za<3L0u2z5!TT@-fhdrK}I-f`B!4;WA(27(zeRo$Y#n1Vul|@EGm<@MpLdy9aHZhST zUR-KnkPY&SB8eoe_N*5Ko(L{xog5_}1Kk7FyW0nAy56%+wN7=FHU8=<$}W|pY(12o z7^YJtQu=w%eHofYsUw2byX(Xdu)5Z*v=r*#l-oKaI*gSQTVAb10-}uZSKlMw)ZSI2 zl(R=A(p`=a!U36gbJ(l%dE3GzE4Oy(Fnjgb=PnAcR|4M4sIKu;L40R7P&mf+EOs>*rpk z4v3=7KEV-nqA*Z-sOclz(0U?lWIYi^Nzcs@ffeK}!y#{tKyuCTSJu?}(MEiChbx0* z>xu3frGrC>sC0Cs-s+(;Ioh2QE_69S^__0?bvilKWoxO9@Dzozsjd-EE!E`}?t5x{ zLRAUGXpW!aEeY(1@T#0&Yx=1{% zpxWDV9a>%ES>vwtdhj$Bj+Z0-bqYq$=T<2syQbPNKe)NqRaYoVD)5(if}D^Q082g zl5;tVNTVXl@2js=YFNR9&743C8D0qjA4^2!h4-JjD7gKM%$tm=XJ`&I-GPo5h2^hx zudbh&001B{4HI|x$}C8N|~n1ZEgm^(2<)KRIT3=55sj@Na2IejS+)gKy$K{3Zr3sS=9!`pmFBP3ZXX~yvI|cJV|nJU8NWX za&V1jgRtEkhQX}ySFU$o4qxT*SE-YKJOq^l6;#ALlR}{>uJY;{YRl>)DJS8nk$T^a zn~5c6yl)}Lc| zd=xR_*Tllv+)ML_vT9+Wh60F?xl8jjNI(&syuae}AxasbjVQU&kTAnld3geck#Y>0 z5We;6D=~?CnP6e+aA9lfXcB3-bjXz9!mLJLIV2HeJTZlEIez!1>T0C}3#Xic8?D1l zj||EXgDW;H@9Hvv*-%^QE~~t|vdX;{*0`2Y>!b!&jwcEf27!F4#0?$d^CR*EP9%=z zfaEC@Ztz8`RM8@`ifYVjV=jRnL}>1V@p)WcUA1neGwr;;;0Y+J+~h;o%k>WrIg}=0 zWI5A4z6#90$O+>!d2+@%qasx9YIuuBRr<=Ang%!QIEyd^R>3Te6Wo``VX~5;LY7Rf)nepz61hk;c&5}d z(u*olQ!l4aw#%X< zC5#x@X~`l@d>KfQ0$xVaWVP6UPFiU{wMZe%GGBR-b&y8?O81Fz^l(%mn9>{;sABm* z#!W<7jfWvX4-wf$F;+k#W%cKwsM%hg3I%~Wa79roh(;{xLkkH*+~HA-2BAKQs=bC% zKAQPjg?%VSv)H2Wi1w@I5b>_5sxI?XMLev4TW-pcG%8wo3U=5aUeEdpJfmY~U=0?G zG>?)H$0spKqZI;ahFTi(f}Cu<HB}=9VIZ5ssFGofF_+aoZN2X^JPgTxeCJ#eZN`h7ohoM$uWmcVzizp(c z;YK#~aE7S6);_pLgjMJ2Bd}s}p6eZ0=D0oO80=M$%5lNG8x&9fIufau96PT&U#&Wo zI5ZjPKJ-l;tcxJS8O?fKlAteGlr946i@195( z)bJb=e)>g3GDb7vkL0baf{m!v3D7>0sv@-JQx+<>aI`>-EkwRKrLOkwHM|PwhSpoi z*kaB_UGo8!GQ-I*eATE>vbP-OV+($#8wAKW`3cg!8toB_Lq<^;jCz5LIU0{}bVEtYhW)y&G#e8{Om(im}=H?SgzK;N|~va`O~osg0Kn*+aQ^ zo>e_tM)4$X-n#Vl14ucs*72~g|h8{0lz|yw__^2t+SG@j$Yn zzw55WcH^|fGf3$Ima!|<++SdRIAtf>?adDvJ9c~RMGH%B@fhbkRA{_lHGbBWvX;$Q z+4){?R9bNAV8(85LC|d2?Imx*kP&-H&TON@;FqmiN}RY`V2QSt=_dNpZ%Xc((W0 zoLVCa5V4{Im23m$%)>xucfObIC{)9Om3rX*-IWkrz1&y&n8$9t2ZEwZj8aa|er z$k-<9KWX*lcqp&i`W)#Duy4`z2<}$|jd7HtZ0VPwq>hPH7ws&wpmSz#u)wv}EIHe@ z_!5GSk=FJUiA_c6XQV94^6oF3(7E4tI@*kyWHUbRI{HblLC&B2f1=mAHMh+n74hVVcPGRRr-FlO8lfyC$rS1;>S+qL;E? z^)F18Oj3_3C9`x;DQlLQ-T8($F=#QRbR{jed4JLtJoIj_`G(ag2MfoYZsMtG@@)0p z4oziiw?bpTI$J{0mS3**OU^s z)%dY49{b{0?|UdKw0q+XDccGyYRhBJ*itGLq<0FNOl>}WCF|c}yrEQXNBup-fjsi^ zHk2fJ#XZZsr89K6$T!%w)fXi_5k29g(Z{Bv#pdj^-^30T7JcxRH_5W{<~J)xs!sXCZ1C3ZU`r|&x7PrSKBsBybo-}`y1+wXIs z^!9ruuie|W-*<~8eQoqfHvL=|mFa%i*-v{WSfWqJS|)gXzDyq1Cy3#l&bPb=CRqAk zw;WbWhFg!!7d|-DBlA7W<9OEdkI)Cw^DCBHq`BVh((Nyv=#82(1u=~YI@o@X(>J!0 zWg(xrEwH{#uuP+*uH@U2Og42 zIe2=mx6JoRkDT5-seq@`A%VAmH2b=gJ%t~fCWzaPc9x!4vNd$UQReGI?pvZQC!Ic# zf*1N-Bj4zhC3X8qesyrOtJ}A`@SQF>wgc@{_P_TW>oKG~FLWKYC3HA<`CKoXaa-q4 zQGXfGnsGsgq z$2*tjQp?xZ!_vnoIbqY!z*Y>+%e%wo<$WbDCr`_Hq4GPbSW|}-I+}-z>?OIGy&>1x zP@usgoeHu12Vh@V@Ug&;ed)e5)ZwV0BYr=g9=_WtbafSLE_}OvqO>Ath(Fc-c=DY-ssXchTMrO?YvG^@+`nITO?W zmgW7B*?vpN8cX%MqWBB&(4E|u$^2}}eVTsmOpja>cylE^bog4HdzR_yEb_4#*LKR* zqEKfoa;b&3%WX8tauc^2w+&-8o+v!Ut;UG%ztrL>ebf#8Y!91p96C$ZrvujKW7Ycf>nzB=9*Uo3KKa3qmG)*o>~Awm9k7IEo~Pe? zn8SWl=KA~tx>tI&OVs<@kLJJV^5wqhD4F1$@S^{4lq9Dz;ajEhRoIC1wYOMoItwZK z&7tLHT~y#|}xp=g7!!xuF+*m}6Lt+Ush)8Km`+InJl zGVAa3=i3uA-)UzKgTs1MSoxb-BlJEYIiPTy7rode&ed)|JQ}+4M%y0Wj%dS4(kJxv z&iA-gZiT)6mz{-jy?RgTDeZSkoNyX64SB z;~;GIl{q<%%$iC}g4Kd>TfwSjvnv%DGw02ex5+zdu+@y7D;+sk&bcak-W{yqYNWwa z=_&K!4JO=1xv=@AvVP{W+*}qt%CaoRWV0riM;pc%#+i}~;|LI9dl=!6Ap~fFvWcGQ6F^UR9-9b^JCR9LM<^DPr#8bo6*mUnIyZUPrfc zx?iQ+b@T*IuTbd;I{Ii%FH-5Fb@Z{EZdK`Hb@U`1oXq(@RQZ#2^b}6-ROu-?dMc-H zQ_C+^M|W_#S*1I4^mH9One%T~gbuAeoPG?`RvcwbRGW;&VPf-KSRBv z8xxzw>0#t7W>)}Nk7k8QoL|i-$D5#GT4#bptut|L3}Z|zIt<{>1pU-H6T@qx8fRj0 z8i@Ggb+AaSj5e_Z9euP89;<_sba1i`mM2pL(!^55E%!~#p@Y+P@MIl4RR?G4;ORP8 zUthCz^lU~cq*_^oD*@##&-=)1R61megd=zfF5>s%N1$@DosfKU3gc9FAkZgfAS)J0$@41b>Q)(z6s-0_yiG1+L?;omoK)r#FG6DzKd2 z(QKvylcprFvFus}{(!?t>_!T#IErtb4&JPTAJxG>1x%=qa3!#0_H!NmEgk%U4*paJ z8#GOZ(i0DuSg2eQP@4_~eh5h9md#gSDu)E-V2c$voAal$n-sW_!;@L12+!fEtVV&~ z;czBvP+*C})7c{md^3ka1nMhy>Wa6rG`kKf?R-MmOK+CRQ`Z^NxXj-ep61YV~S{KDdKL)ogpG=4I|bW`s_^3xUhdE_r+>^tNymu(n@ zqqa!=55Z4`e6m#p6Cc5T1twce@LI*MQ1F89dkP*|+RF5`vpxfb7{9xtbzAfKs3XlBmA|K_!%Mt11^#Ng2 zek7O5hth>2;PSsi{74^97s6*N@B+nOr1%iY!?Rhn8`sr&%HY@4$i7$H(b6NEg$ExG zn^lJ0hO_XrGmDV3MBA5_ZNnRDF3TZXcpX{ajp)c>6F!t6%=A!-Vz7r2Xt{fsEXZ3u z#7oyhgDJ0H4<+#RWLg;>MyO&nl~=Ndh83oHC?#x7htepN^8TLk!uC)eIp$%K#J2|z zuXqn7XkYdoN{x8!o0Mr5e}|n053|av*R7)$Bxm6fdX}dSdtb`X zS=B;8zonZ1J~U7D31Y4;9ELI6rQx6W#FL1gk7(pFa9MGE6CbrLeZ17ZghTV=4kITP zgDamyjKz(U$G7zSPds!{e5-J2<=qR|i%U2m58X+GycCVRXwZbbyKt|S_YvR@kx7LQ z9$SY?o4y&4w-Pu?AEiskYs9@)-T@RW^<%<`^bt-g?_N#%Y@i8wPvc%IFB=8EO9)f= z2>b_JT6qsaUM6sqzBpV$-W#~r$~y*mOMw$kq>mZ#eRfY66u?vlQ%a?E?=;4C*)=71AM&V7g%k3Mbn?t7 zygV>b`luX*Jg-h(3Y7gLAxz;Tkj4bs{4RhHq0h+*ALW0GP9C#FK7)$%{U4pYhcxL+ z(a57QB7UkJIt6+3tR|e0*Q}Fw4DxOU6XiD*m&otyI(Zeylyw++ztG7`!Ni`(uR|m6 zv`$_X8e=x-!in_#t4>}OExNAbfj-2Z#pg^?-rfBcOZ}SKsX`qMxDGk$P?u^1I$8R9r!37(Qi#2 zA=C8owkYw6x+lJXV1iF|K-YudgDk%w9RS|~0Vq5K5-(U)*G=-!HgkY+;iB}B{!pEX zwBeSO!uUL+2}p9tjl!knn~VIm48u2DK4MPYM)pm6rRL_&RYH98Ua4KE3pjPJR0^Ab zb=Y7*l-Id}&Ag^`!I`t6#*Sz0=Bv+!9_qf&o4WL!5X(Lr+7{>x#dZ8Pgb{e@+acC5 z?L{{EY{=g|ZZUT96iFdxcXa<&(;L0UF>i#-9khOthJ7#x{B(zPPWz{hf?%{kKtaBa zb(MFJ`)QJuR@58J9KveHoX>lBD)BeS*d=jKeh_fzFq<-F$=H&yi^naE@!Gu;ykl3S zd&e$EN^Zn@k>AwcV7j$5adD0p=}DkCr>SX4^M+HB=9SYi2k8*2jM}(FeB|?VOsnJj zYR-m2fvZZ8E5}4{qVFMT-qP_CpDvv2wVlRZk2ytHwN3OHavv{D^xX0xb0&HSy8=6X zV!E}o58IjZ^^moB8es zmgba3d4Ai&vi5cz=%H07>>yDbtt|@I;f0KL)*d>XwmhvQ$4jN)Sn5uB9%V3@%3vPy z=@(@%?n9R0l*0LV52+JrPE+zhDYgeUuSoP*y0AYW>)*PZ(zzbW|L=S3e9uL$H)hEM z-ze0c$cI{EH0+6Rp~F`$zp^CTJKk&ZU9lu(;zNZAa^1|uZk2o!>Sj-&$#Wg*#zb{< z1+7Z{7zeGZR|lhKanq z_ZAjImk5_sYWKNPWZ0MuOw_i**bh-A*##jdqZ-@~EuM0kIY&SrL(VK7et+S!NH^&m z)rA4Oj$}?~60rVPNjs=qA!8*`_Ckh*w}e>f6=+vy*9hqp{DH1m>BS!Z!dMCI8G0_K z<)shV)DcpyWN?i2{9LsIl+VBAHBRbFcJWNo-_SKrqTjC4hhGDQ9w_dc*E~tycEOIP z4bex*sCeGDeW=ohu6a`U6Dpm0!LXw>DWZp60u4dABfNpnDk=zgCYGqeiU3ocx8kDOx=ur<+AP<>H9EKfFomzjMQdt*ufQ~pPrzvHrwWYW5?~wqg#z#9 za2)GWU<@cgk7pk%a5smM0<6hk`Gxk!^FMbPwj;Rt9(?`|5eNAud=B!L2-G{g`A!op zd^QhD5aIU{hgo;1T%$c-L${QJz?xV3F1MO71h0uXaw!6w-*{}FJYQnNfSTI7ElZv& zC%;aC?^XOA$dR7b^E>%Z$a4YIKJTa4jdK ziS$ugs2m`MyAMGSG6*5=jfnKy@QwYJeAB-r-&Nm|kJg0oQ|HPk9|6jM;)q7qckze3 z`UU=W%y%vjfWku{@uKQgw;Oyk_YITGrs1M;p>m`$7G;N9_BIOXOS(}U$sq@m9>GWR zW@`iyG;z!OdH$9)f2Zvm-z~f1%G@jE$(3)OFS&sdp_wm9WfPhI@O^mKCuwrxa=cme zCcTwJZ{--$((%4hToFBAPnz*XSGr_KGd@KST`U+_$udW`8`4>NbV;&53cJmtN(_$V zQldt;Vh3-;b1dd$R=l*#EM?a3Z{02#cCyU;pmEDY$vI+_G$Cq4lT$L|kvw*%c`#s% z+i7?bP=alz`^$!}KY76%92tA;Gt*RakZnBnS-$7kXKa=G%k6*u#Rc=oOuS>jtgk9} zm*$x>4Uf%jpDh_Po?MjKUM#Wtk&m&=tFS}2<6_bl@YXWNOV}N6>`am-2U*?dU|^%M ztGJj2H*CqrUR0hpyl2-~Vwhomcz6AjE=uXEfg=c$A3PE;v>0+(@cUcx`BVJ%lI@EP zyOX`!ORft!n5)m|N^+3|XDjA^{+?w$*B&bwoaUy#gS6fC?{}Jm0hhh$l?zcLk9`)X zH8lagJ^$h(0fW=p)GV2t_pC5BMLl*lH2Aw$5no+NQhTj5s%dn4l+)ro6N>AOX=2mz zgTD-zTUb^co=#T`vc&i%Ha$Q1df>;5U3j7a`KgX;pXf9@M+ZCHaqaOLaTzS_Z0O$C zq940GG{v9rum$D8f?a{{EyB#$YlbI}_a=1Ir?BAJ21vX8mPI?H{JyvB$9qS|8PiM- z%!xg0n3aEVFhHqh7t`7~TaLA`fjRd|rY1Y+EGs{l-oR#U9;|qNHbT8184<3c$BbDw zHtXLyP2ga`#~WD2w8hhxTo=m9UKPsfxXs||d+6$@mb0M)9j?Ck@0Ik$#ic)M>hEC7 z``#S0w9jJ7@3mjgX0zb64J&!wrb#S4f$MvG$*~I#bCTE6Vsa%(4%gy7mLINV%na~4 zxOVV6&yRDubaNWKwc&44VA5#pg|u2=lB~O+>2~TN;;cqof(Pa$u*HB;-`C7;aWI=< zPuqn{*RtUFhAq4S=jg5D3)QEwKSBUvUt$3 z*dQ$pEx0#!_qCtLJwF1WHxF8$H#}*Ww|UU~d~xySLBsQG))=bo)wpiLH5!+BYst1H z*URPWpz__4>k8Uju3)rj^O9Uw`a!2F8ueX>@-<7S?dwPf6lrAC53$rIf<@Wi>VcL zu=wVyT?Kt_kIHh5azS$w51#;AvXch1^K zJPp!^=Supbr%oP`?V22A+*uSfn5q1i(|bs<#^%7sR8C4Jut8tHtr(Hbza<(y{{n>3nq z++1RiCe$asWTKjHr%UcL?1#;g(UHbmp`qlB&|p5^3VJsD+}r zj)X_!Fmi%KKK0vZyQ!l2{!!*1I)50+KXkrO%s^7U4YKyB zK}^^+NBFQC%O)uR<;=i$)rF}hHcrPsj_=JOj%?14$qJ35`MOB?Nqh~GSY-Yr4L6lf zWNrM)ml~ zf!|^_RN_z4=;AnZ4JLwk80F^ z8AN~ltTK%`f&QB)yw9^?L%|Hx zEBV>v=Q7^&+vduB0L^XQ4!jY|4yELy`8-8@pubE0mCC-}d6<($pFr>t@*%I2eBi0C zFv5rh$%mXl^7AmSLO$euO+E~E3i=QujF*G_bo9wEJhrQ#ZsgC$K4J7J6z|*QBc6XD zAM!tfPvJfxAK|QMha{K!5Q>lHi&8OZK;wZ_Gp*Db?bFC3yCUTE;9e`w0eO@U;e@>31EH071oEidD8IxnDs_Ah zU52k-;S(}m1z$i2gAX#l8gPR=_yuVJ3JE4$b;L)Ge31u&>%o_gM3L>EgNxEf^+I(f z$^^IU2$V_tPNI-U&xu;T4%F|%f(V+p<@3jQ-5qPqbTrvF&L8Jpk(={v=Z|;EilXkf z%VYBxoy+4GU^eng2iT^Jfq;6yW*{&G*5bYZfA+u{8-<@Y(80s~960~LLWKJ%@ENx3 z0n4y>qRkt~zbs7~_H)QQG|*$aFkt`Ec0$CO%~LC4_H#&1yOuwm_}5+lHG5z+Qk8*J zS@@MbFcq;ArF0-;lQv)4@OB>G3p_mK)B+h)O8ioCeNiLha&i)QIzHoaBGVC>9^w$` zAz4~^*26Q;8y`do?|AaO75Q0YJA2-;Ne-W3qj{k00jurkr^W}ZM^BIZ)wREyRatoU zym`};xTrjdlV)4Ov>4E0IL&%kpUdY;UXy9#Ld!wlocA(~L!2v7uWDRoRwPheCIrW){QRG0>422+xc?uW# zVXni7o%Dir`4^&OHeDPr+erUf5yzT=eVTNDigYaE+`)nTO);IsOMIo!EsDP$SjtH& zbQ-5RL|BqVi0OCawPE^o|6|{QK?u3*>s6 zdEWdWmE)7=N21g-Q9Aj}YXW^?_FQDQoKeiTBF zM4o@DhDQ2%?NSVsPOX&8ftVeckQkXx%0HE3oTeOY5#{I|ulvn0LbW=ffFV0-gb zNEu0{nhn>++4Hd|qsa7R4p^I~;X=qABsEj5JCUBV=clQ*boPm}=QC7j9H7Z6Gy_mN zV*572akn667rhMF3ZDEDsPR3ci= z2}-_`dA^B4c^7iVAjUDe7!!tx@xNXU&^R@Z(6~)!&$~DM94%zt3G})|*+f=z5^{g5 z3Y7u6S%uhzt%0-WZ$wIOL@TBqlC8}cxF3DaDx`EZ*MXSsC(o~d1!2H0=Q*T)hTpsL<_zu0m{A@z_WvVne#GMCs>~tW7c9XV1??Ix>LG=W_ZibXcp`T78y#9)g!(_N9b*wDI`t<~hj;>!%h|$sY>j|+sx_&)jgpRIXPZ+7A>(5{s z#h)GMd0uv-bo}!EW15SSU80UIuLoobGUopy%V(Sp9E8|S+ zYL|f1!pyicF{cimqJuMZ@H8EqrGsbc;MqD@%t**+6Q4Z@vzXM?GeO6MyT+NY+n;Kf z)Q#pNXgvy3(j3NA7vLy<4h7L^UX0e8u2ASS4@GY~6f1B7hph}pbnx&p9K%*CFv+F; z@pmgQ&3h-XSbhc-$)`2(1k85tR_L=hJc2!^z~A9;Jl_aF{1S&pviB7Fat_;Bj{;L0 zPk?@W4qrH$Q@MnT!qZ$!0`!I6ttOaCG6DLMPJrTwKTDxIaG!wn%&T?uVuen;bOPQ@ z3S7bA3H)3W3No3)6WK;x_$>d`t{z0KH<*<|eOo3N&cnW)4fvKDl zFf)8cfyss?U`x<>1ty!CfDKT8R^Ubs&twUxc%WD}hi9`X3M{|hkj>~_SfW!r3DB=) z3Otqb!yd`&bMn;E|E_P|V;)UjIjr1-k2|c7_yjz`T9o=RVDQrSB|wzJhCc-?DB3T{ zE36Ts z4khxAMAIoEVA2*VBW z|yvufJw_oW1Re9_@?Uk76GRI zKsXU^zK)Nc+g1uD_=4|yI=*heTHO+SbS7R5!sRP6{HP4l0~&MFlMe9_e2-4vXejV- zfG(WK?=w1i+com& zNlnP3u_u0N`T~$=7s3=i0*~qBHEQJ1lb(?Gd!4*S$g3a$iWBKOtCP1I@+e-a4_Z4H z@(c*CO&{$!nyknoPssZZoxG7)I?LSC{?UJ?vV-Z1jUf={b2tr~f>FH^{ytCP19 z^6ni*9@V>6-VsfH(=_s~)5&`W^2o*rC-O_r3R-z@Yveh>EYe5s(P_&s354O=kyj`0 zlt$hZjlAtTd0xnSP9#p@BXFBe-Y1af0G{fXY`jR{Pj&J}M@6pd6Cb(#I(b$!3ekS2 zfiC2|rjxf4@`|_w`A^6@s*`8e$fKD8A@4(-yj_sjIE=hgI(bQuC-j+S8ic&hb@C>| z@OKX*ZzSqnTW@9y@=FNCiF{<}_~Hho4`N?!_d=0s$yI1QIW@thyuMD@9)DnVg<0C|)Wj(q+g~T@oHj=xit9M3(gX zF)~rkYc&A{AAe}3k9P9i7~f()Ms9ZAx8091TJ8|k{TOuqk*Pj8+IYel3}9!5DcEi7 zm_DJ?6bu@>r)M9s;4WkgPEYR4epTiut{=T*%+iK>bDt^K*!Kgw$(0uDFydV{Mqg*j zuOGR@5$s^bzO9K#F8{*f`naWWOI`!_R+q6aDrZ}L)S_exVM=zfzHNzxefV}4!gc)f zCA=dTywvd)e3tSx3x0M9Z(XS0bE5YF_bh#&^+bs6JKh_eU~Zx}R#?!{(17ozvEVqo z@fBNY-qRdPb69roDKwV8({97pnl=~i39*&tooptyel|E}nwp}Tj`tdJWBN_8f7fXP zb|AnqQl%r(&HVilv*d02AY^wmc}vZID><@acZ)43Py{{rv2|``>e%zb~d8n-DF((Yp)S~gB=#?@3(WZ$n zI%fJ1yIW$xra+6-(bMGhBq#P8M*X(4WaDppqJrI~j;xiPQNf_8J8L=oP*iXx-k!vJ zdSNMS=IJhD%kH8CynnNy(};i58FP!PxZ~pXfNf?~C!4vpvo>XX$h6YX#AX(C8d@AP zkB6)Q%6mgss&oeTncWY1Kbnx(ZyxM=PV?%DMxGs5Yv zTxQ{vyxe8NTal;k%X**-<(SQ~P9t}QCd!{)9-Dcx6K`Buf6zmDOqKq<$IwD|-%I^nkLi)9M}A4C zJ0S&0QYYTr3h-091m>+CYPY0sGtWmqxJ5d+XiqEi;{C>iGriLn&Uk{fZO=AY`-&QD z1NQm!hFwuZq7>sbwN1dcb?L%Y586&}d5@u-meV5{nE)F$0bBtpoPt z=%C#+vT1BEE-E@`GKB_un~w~a#(Tf*0 zuSnQQsl{vB*u zQJ19!XIuo&1fp7Eo0|$*@KoSG2HxH@4*5v{9Ju(%7E6l*9KYH6_@7ezY<9=Rf8J_o z$qfb!iJf5|>Mz0h>(dhdgUf#8lUa@!j08ZS|(w*xp)soA-spXq^ z%g?{KDnIV6ba?^gY}HB*OyOU;)S;-5+q^|EUJs%r{^Mjx_9+UhZLOV|a~@Zl2$!6ksY0N2aQ+`1%lcY=39@=oYkOLA=K_|~JJMn6bz5hqG4YxCeM2VXu%dTfpo zkBo*(BCH+t_3IBd4m{ILm={Zq4E%b>1aDI)Jv*@oaZPV7eB}eG!^AyocKhdf&s$oY z!AZtdG`DAQEhVsLU-KGU-$12yXT$MOQe$mOGTMCJ@H-Uc`G3K`W?N$iMhtKxjo) zvsVF&QfmT?c6)QVQCr-kCe-AqG5&DLsJ!R5f=|S&-{x~!2bmFyx?;lM0KE6*j zc=BM2u+?$f$yP78{>yEH9@y$*+*UsnVXKdxGdh29&g6Xc++Nt~Jw=Dli9Y8^^f^x| zwRNx3=WL4TbF?Wu*cFXFX9Q|zeWzSU(|DhA7UfonKBv4B^%MBMrhZmEKdQxqI!$jF z)nd%Lt!r9KG_2jPceEs1pxIvz`~iCww(t1u$H*h~M95+7^KuTWpMNi8?N}9BkZtUL zCwh0`oX+yp+rQlU*&O8Y4W7q%-+#I7N8TGlS7t}`|B{vC9D}qihWR&rx#glk zit2wo%8WkVD(wY+%$6VWUjFm0)&cLPyaCG&Hv1?nucc+y2Vr}#uOVy?9&C{90Sn&M zkRA*em$W&(O@+o&9`D123*U{KyPuDRf?Qh04wh#5m?TrGwbDCJBTvR|j4ZzTD5{0@ z1T8(=k!9?PX)#WnG&F=T|S7 zrajueZPALLHEv}nt%GHt|II!XinAZbiI#U2VYF&7@ORzMU{5XbXFG%avqzNuqxY2D zhEiq0KLtvpTctUY{5?c#%Y=GMllz4`H&O{9%%@;wDzIo93oVBHF=|t&Nz2%A9>Pr`!`|c~EQN6=u=rhfEuKtb^gUf`` z`*;_dwt3M0T<{~3I7#~9xg^Qja?|45>J5E?QBI8VWsXbFp8ZISv%)=4 z7u7FbWax{Uqwx1_vm3bFkDfgS4KQ3C)fE4+i}#9`zWCuQBU{Ej!QEK-}UA#PQ+OYMw829Z83QC`fV=VxoM}+TPlfbk4fRvimpn6PHttqWc2U;`&^C z=hWYAeImZkko~jzaf?mRqx(jUcTs7Q1|9e(l1JtG-pAHGXG4p+x7S-*me-G19FM0= z(mWC3;~r~^75Zh_P0~rr#=B07Gc<4<3zb#4oIc~vlyqJV+sV?;^x7)p_8OXukH$*J zdrdct;=Qzd_6&{p?{Bp~ZjqvboAX;S*4{4dPeD+ARIst*3F;??d>e^i7@fy{2y2=B+%v-`iXm>YBQd&05s?FszHyJNB!%KX!X9 zSM*umOg{Y8#Xqu{SCchZ@Ng)-(f#E^U;oPc>IKut?KrK*8aEziN-+9*d+zS`nM-#4 z$MeN|{iM^y8pMe+SHM)S^He~NC*k&KOGF$_%xM;6Z+*^90s)Ta$?qxpzpF;ZbM z?rh7Fa$unralZ16%|+&UM~e4#S@@HdtXC{^uoGH!FSP6b;F;BEeqz#>4}7-s1y^6R z>xv>*X<=VfacoHkVtli-BV_IVz#Hm-HN8%MD={>c((L_e^wD7pyaYWA+zQZ$O}?*f!-w^N!f$#xi}$?Y)wwP!|wxQhaqVlU5zw?C`UszC7*k>+s^;s4!L}{^(W2FtHWaBB!h$XSS zW#as1r&m8&;K^~ac_`^_=$6kAUl z=Dk$d)Af3YHR9as0MfPfchVR9c^UU~ZV{cO6f?lbTy~tJk>VZQwkzbo_c>Q6&(sb{ ze4jH8^-c3~H19bV*WdEqQBrQ2%iE312vx^)AlrsZcKWj{qBxz(MRxkVrWQ`8xp3L( z_nO9V`Z1L*?=?N4fhqnYnERETOn+4a6Fq>rO)Z_yrV}vHTh%Rl`n|0By{jX5dgzQk z*^N+l+tFMpoduziIKxQJKUYQS_p*-S^zgdG(7mgaK6zS`1ST>Ed2k{=8Iu2L?;r7p z-53m?WGB}fCS^5_&bEl;AFH9#ysw&Yj{nb}HKA6765gVdPqWKmXTsh%tuyhHVZs;_ zCPlUGoA*NM_dX`^`EAM-wOQKhR}7zEKXi)r_T7qm;i!y#xQPA^l9qtk@Br?GBl_P9 z06xJ7bnwr0@LM|gqz?Xr4%Suy$*1*P;RvSpO$n8bi}n`MIf4Y&;V%K@cZ~usKXAq6@>I(~mG$ClkTR;=%XcPe@Je|oyt;CsQsk(5WZ`ZP_J^T9$Zi_3 z=vo2a2K{VS{O{r3mW};g@QMBm;d7L;baNU1W+|QHfFt~Pxaq`?>t6D&z?!iVj=t4K z_Gf;@F^bp zb`Ht)laKhP5{36?SUY<+3-^lKiO%L zUjsiCiB6#K@X02X(tf2f(d--C3N`Y7Q9Up^3MZj5|# z!6eyEjK@9ow!}wv;|^R}d8F&q#|bCo-2#MGUI_9Wz>z%at%W?&eXYDjSlgvOQ8*#5 z9tf?xBnWB+j^q(u$a@_3T6v?H~!n z@(u!_mDdSDHv>oV=*RS33*6@D(`|$UI+{30pNra z={paER$c(|5H(L9t+9*rB_S=^^wq-{IY1Xq$QunNt-MB!JoNUeyeq*+npFto`rAv zUQ^DzIoWghhJ|lFf4KE}9$OTDX2jC#kJt}c-eH#Z37-*VXIdv4i|MNNLv6t*F9Nk4&OeLg^;7{~R z+t_4!CblhcNKHOh&|qrv*!jtmpY=p7!5qX~!Wx0?r#UUhmG_Zs>tP`?4l?6ZnK4`@ z#XuKxSdVfU*+K??M{|e_3uMrmFzfnD{Kh3sz9d(phtBArG~fl8l4gSVy|HAsk3*b> zd7Opj)H5MR8|_UD^$7W0fxJ5!e>OZW7=4%(K9>7X6z39vUNCY(5JC;AUN*Yp^& zS%0VBK?74I)RxZMd-B2c=}C4W-qfo~JJr?DW4?Mx){olF&X^_d-DLWTeMVAf{ngcD zaGEsfxkk*9qW%n03TbzHAUnWX|7hCG-uEvg*nY^egaz|gp737pz0T)!#kx$c#?nO3 z9U*gx(1Xz7ILRV8`nvCmTQ<4xBmV<06!fuze;L1GaJ&D_UQ6AZy)n)deg=3ODCU9{ zgFF1{x112S|L_PNdP?8NcR%pL=%j+aXz)DepUA`f7-6CSA4C{`KBb9t{~#|@#!q4; zogQAscAX50SC)}?c*HVF-^pG}j+iRHXM7hMeUhg#}DkTHPyu(p^F4bi+pZH^&A>Cfm?9V%T$4fIL z*^~S z7wEG0Iu?}5FpJAA%`9bUXd?x?Nh+Ofo2J|aH#2kIlFa6IV@c9YW{0T9-$a{Fz6ULA zn&=Fgj0{`}nNgklE{ru9vJCGp&op<1srxQ01vcaTeHUU)uB`8%-I#*2XJ13^3S1c( z{5JeId-^>508gKO%{BArW*C=|kzvR&_P<+`j@>NA{zB|MTghIZ7p!~3}j6uaF@f!qq%!V0rk%t`QXDRM)e*ag< zZ5ML;@WeFa7Wpu^rrnKv7=mloY#_G|S8*}F4gakvtHuv-S=ojS)pRqAD=sdUTl)Ku zzlYkp5pgg|8OuDrlpYVI~dbS#l_3WmEf8;kKcy>isxU8AK>}(mo2-N zZiaF5=FR&L)alWQ3Dc(pO;Nw>>IL*PX;73L-&>~)S48!n+%P3*h>Gejj`~s0T6S`x z`NVnq13k~+?#q+V;ixZq`k>8GsDqRCzw24YzTab>zhpXUBHgrj$4$nsqW)N;vCZG6 z+&*3XW^WS8&5LqNQOeDcHaR_0DYw4${~OCKcLST0(SoHL;}EmKdAHh28l1F(8dG6%d>S5?TqWxzOEafiseF^Rl=j_8 zV-nI!8kdB&CQP>|v6!HZhR!(2+&u_gIW%!{&}4?LApZP|djrr;*iUxxnSkNP*M*!x zIrGtRdu@24( zzrjcd-viWyP0yp69=E0RL};6%xG%bx>bls2FLNs6-O!3=Dfa5=Sq&0dH`^1Bhi0ri6Pnwx z^i<}OoKRxxt%xgQ>59I%a@SzM`TNyzEr_i*Dd$+IuH(n6)7Fqq`P&@nD}s~bGSlK( zuzuQs7@fagUosfTL2PphJ+&#(UGt@Bk_|l@@kis!AT!OyeYVPNxgFy zF<8%Iy<_L=tmpVGrDYM;GxYaZldEZxUWl|c*y9?9)4obS_+e{spy1c71D;<82MS+q z9VmM_IN*Awb)fv2;6PDx>p(?waG)6H!Bp;`m|6#x+01-2(mGIOlSe+S150hu3hqvu zMY$`n#WuUF@EiX6y=l*wPq{Z#$S@ zJl<<;J{~d$uErYnG-b!j2<(51>(0m-0?rJJP@(wLHb zX|V(kD2nb zm9<~GR9%1>qI_DT_T!rd$rASQ@X@0M@xRwQqL{~?mL;X*xzwL;rI?iO8&DYf4nneI zQo_iq==2o?mS$RFmEP^0M16?DPyG+&VyrYtir!6fMJdzhQsx5>^v3q!4_aFX3ZWDE z(2WAM3(`8U_Sa9IpN|vL9(Z|0Fvv%`c>^|RWQnSIOK=w5)6dA-mp3pS zVU{QwxN+bUq-T+;g+4|1HsTZ`($lc62~E6H(L}8Dw?e=6LBAR^C6_cGd#Wf$4k-#X zVxt;aL8UN%;McYQ&T}FfPD*;2{8F5N);e$}$03I=JNRj6u{*p25AK*h@b<4a4J>;3 z(Vkyu^8OCbdq8QERIU%SPQ>2EckfPUsk86L4l^fq<(;gnuU|ENY>ngiyy|?IY4GX%>gU z@v93a)6>OC?fBLXzNmC8aIAmZUG#nG)v2ZnHrtra6DVKQ|Ajc?p2E0xyOflDYclO! zi0j{C?6}w*`2Waz7r>~iD}Veu@5v-U2&i$OI1nIVco-h?h^Qe615Bu(rLE1nGBZga z8Bs#Q%PG}?AYjlo0^8~Y1rY?JTcgD;rDcf_0jcbQ#r`eILR%|Bocjwl)vVjDzt6ef zduP6L6O^|5`tR?;tC=brn1d`(m6YsKcvu8fb)5N|E7fh4t-zFtqFVVv5C&S+0taeem!eb(*VF(~))3{A8Zbv5DkxKmvWA(O{p6m!~^?`aXR}tgi?$KdFb@;nQ~% z4HmnO_h8oz?GsFcF23@v=~m}ulhZdHx=8!{6DMR$$d_)A&-KcMjQ08r)A)@=8JF!D z4}E&aOQ8#C?HergcFT0jWqaB)XFvSljmv4S;lA50kj-h{M_RVGo1M?Jn^7kfr4|1E z@#s%3oBKR?*6z#p^@qJtN+>VW(#^ha`Eq>7uZ+#euK@CEN4q6M8)0gHG^6$7=c1;Y zP2*yS*=73Zte#)X-gUO8Sq2Pvz6AQm&XTmtpO3R`{%y8p^RwC3%_He6GOoY%{gmpP zP4*_+6JINtTQYC@bM3CQ7usEB^JY_H*2yWpnF)Pbp3wDaezK6uWqnfDE9p}YnIiNm z_cxurXwD>An%k{rZL|&AEPK~9)pgnAnn&8S4SmJeirSl6vt&s%wXZRma4yDl*={=c$@G`LalzK!VA179KH3g`vhbxNs5|JsHY>lg zvjg|FwV*CWJ&gT(R5Mk(Ti7f&cJaBWKGfS3XCZK?@2RfukDihJiQZyv!92=_TA|N- z(9(OT=~io_{+0XGvW$h@$~HjO8XvtowZt^_CZuyb$5WiBGbUmeGU^Q7sz(A-ka#9O z^bHF2v@IjCtBT&Sv~(Qkt~A%f7(MlN`C#9i zTkJ}7&(%EKd zTTbB})G8ddw#Yqh+N%#!-y!F0+(P>U>2!k^ag*=vQ;NHFy}yX}FW4OKM?11N(L^F(v~6@jb-o_y`92aa-;Z()7iK^0^fTUH#GwX-$`%*?HdPN zK(UaVx~{v$bg<*qIUNt)t>tcP$=Z62&op(A&+!B24^DIqZKXZbl$ze7w2${k&wXg^ zm@s?(ibtPyKI>fZ=I_)oc*xl2IuD@rag~AZzmwTE?1^$yeOyXD5q!Rnc==$GkwEKv>b3RBW{rL z&grvs?r5E{Ti5)!b<<_GAbj#d=95}ZHOb-b`{Y#r5|YE6j9HiFz=gB%zTr%8op8OD zvrp%E2Ppmd{+oOh1IAo9FKT}LW#+?auU(*r6i;Y5`Pl|)*HFLdaY_+U**4L8jhr*l z@Hf!LJ@_?k2w`sW5mj#=Nh#%dK$io2^Rg*TL`NFzJqxYh^1(!hQ+n1+b z%OPsXiFgy|xfuIKk&oJN@cU*}>BbgQf#dtm@2CC1it$3fg}r>ez1qhu$U$>Q{*1d8 z*TSqcl|J5tGS+XdGhsRePp59kXw;^dQSE6eKV1JxTQ5b31=+2=bWsCDHkc{ zz{Q{M8-siUUoJD{ddV!EuW2)OT#I~L82QD8TT8Lh1f7r1CQDxlJzt2B9Og|{X!b(n z&;@WQ%lF-i978zqyMyG*_uq;f18pM5W<;!;UI2BYew9>&3%~#(Y_Zp zP`m$hO9o1i)%{r9X2CUll<0YR5XMy0!gQ>^hD#(zPsUMRI5EE!k zEpIaBAmv>{3s!?NP6(Z1oExTE3wn=avCM|P*k|9DWj1HR(tBOb>)jiD&ED;6t-agp zEjW4IdZMd8e%bg9Y`rt?4EK*a{a=ea-C1~lUfk;M7q>!Bp)wnISy*PQgZa=t``lUB zac*Xf;M-V6IfS+^Ec`Nk9tI&|B#ft+J`aPZ27P>sC(L8e8>Kk;phc7OCNAo4te5jz z9niiVCP?IOVbhV5C1FSk=_&yimmyd2qg*a-fQ2DE z!1EXuz{kThHkUI-)rlOPm6$QAO62HFk&ibklA2*F{DkXjY6mHosEmv({ca1%WoxEU zIAYz8xrk=WV*xHg3PMN$NmSlIsrS6xJ7ICQ|3ZsP#%h$k5xoVgDbsho&vBK~XC|aS z8@Ewy;G#1gjyXfl0sDLS6YcT2z4E@`-2YXlEGThCXGPleur2UO6SUo_ zF+rl9v#@jgyae8^@N;r}a$l8thqsI4^Ahi?cX(%Td~!dcdWUy!j;H-&x>N7)&Q#u4 z@9?HuX*KO<@^$R2<@!h{MaSN$*T&fk;ZpRLflIXg!ttXL_!0&0Q{b7L zeqJI`GZnmFfoCi5?Fu|sf$vn{c?$du1-?sx%M|!-1-?gt0}32c;0gs^pukm%eybFG znBylT^cz<2i#Y!71b&f%zh8lCIDIm|bU0~$H41$#r>Aofy3^qo6Zu!G&@bim$?w=M zRq)F>-kNxSxq@HG@q1)++DZi<;rM+Cd_=*oQs4&_II6&F6nL#JUxI(KW}_gBwvOWy zXu#JBpcK9du+dp?V>{I!Nw;3}2;dv=O~4zSMcbgz>+sD9B0YbS?Twy)v=2gedVVBp zp<0RH{$GDC&#v%Gw%mm1{!N1ng}%1}XDTo@dmEf3<%U(_FSV@`(KoP-j=mXfbQZ%2 zND8;`o3fJ>mPBsoVHSQG&WKO8v=nOLCxndnWY0&(dy_~`pDbxQevE=o)~q^yoPr;( zz{#3Gr%&dz4i_l&NlVf3w<`ET1ujzHWXnnj3;&WplEjj7(<|ZqNhGJAt-!Y{@LUDH zQ-S9xFqN95v+xrWMz|~q;K{7!;I`AAPff&H@rlIQmA%3;}0wxVLs!3O-X?DBu?OS@^dMzI4Q6 zy#hZi=&9z-LjCx%fc5yU<@fs1D?>RxTYF333pwo8&I?$VccAuv1f0e3gZQ2{dSAzT zG`csJV5&*7P(S7gm}1^%W22NgK1 zz;%F$|5C1hzt*7Ow<++;g8mSfXSQ}oz`8x%uKiM>?-ckoh$9QRYQbSfifcm*Ke7&N5DQ#f4BAz0@mff zM?0px|E|D)gVP7Jj}-jp0viTR1-?yzzplX53cLm|>4WO+EPO#}i-Lba;He$S!uW!|Pfhec<8Va#X91t& z@G9++fc5-+P_t1*CLHNw2w-|&$49lB75p~@{%O!;VJ2arfQc-N+E?70PW^Ylk(-g36sZ)D+ekU&Rqe!Ww2uAisHrhFQ{H9Stmng>OsUF*EuY$GO(_^KM3ygmsaB&EaJ_SYY&o9 z);&;X5CBP=Pm$`JaXG@W`{|&%c3(KpvhLohuAGdN`G8W~=2#Q$0Spvz@sc=EW{PJasLxqhwc9 z*Diek8eEvT9HV>@KAF=)_=3f?xZVOEh>1w8A}JM>h5#gf>9Sg5NbSN

-vow(`DZ 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 LC_NJK`r&^A%&rQP literal 0 HcmV?d00001 diff --git a/src/drivers/nema/lib/libnemagfx-cortex-m55.a b/src/drivers/nema/lib/libnemagfx-cortex-m55.a new file mode 100644 index 0000000000000000000000000000000000000000..b664d6b6a733b38c3c9324a191a7aeb68964421b GIT binary patch literal 319516 zcmeFa3tW`fnLmE!0yA915xgKG4h#y47X%W~Bn>j~dI2vnCXKlb!$oHd$^+$iI8=H}+iz9!dh&*miU zzui7NJ16H_jxUR5%yV~V?m9eW`8~()D|IKSp0b_sZdfCd@|Kpdz zv7Looxn^eguUt|dGyF9!cP2CZcdz@qnc**852iE2|9{D4(0hs*G?y`EH~Xt!^YWPS zn_jCPX2$7WYl{%yfR#w&3*Vb%O;o7Q=-t{5w zay{Ux@YYsrsCL(?AvUZJV_H*H?<%j^ppj9xp?saU-nG8Q<*mI}4d$+_bXBYi#YExi zeC~>>FphN_s_VVJ>MCNbQz^1U72N3d)~i5yt$TfiM+MhzSm#rL+N$~uwd+;TUA?ZR zuHLnJLv^)^t6E>PVU0(dlG<{YcfE)JKy6iBl@c8wC38q#wYRQ5N0u`LucE!{tG(-a zZdBCjn%asg*XrsGbxNu=p{re9rG(0>tJYUm)oPN0RJb@+mPBABa#K-LT~q72r%I_( zLf6$+42Q0$SuglQB5JE-0sLP^S5}p8SmUa>ud24P*1b`wg{sXi%8AeefcI{2S0Z_G z7{C=9sNhr(WJcSI9 zpf)y{9EPH{q0JMAwP6&7us~G}K5ZBRwLxTZII7x>iqn*36-R`HQdq*mmAfnM(FWtN zHk85;9tdq2`WeP1qcjPi1`nq25|XQ$jDu@+&3dI`VQswY*SNTqD6eUdd3?atyXtFP zzM493y|+fu5{}k#KvY$Ouw`s;nl@N3E`*)m%H*lSPI45Xj*tx=)S^J zRdLUP<+m)SHm~whld7t%tx-%Mw+C7TN`pY=VT84q+BM~F zQOi||!AEQ=mKPw|Ftrc`CP#-N`xnl{GvX@WuzGcsQe8Z3^#%h7&o z%Gs?F=`KeI;egD$I%luZ~JZ7Nub8 zD%_%Z2#iM^s3@3q-jD%TP_jCONs>`HVK^8lJ?y%#s>0=7y&B`8;YeXPcjekJxYB!{ zixMmbQc7aH>oMF?%1~qingY9tUXoNMObFK@5JIgiEKe?9Nb!X*DkGO@L1E;)hPA5W|u!3AQ9P;)sB-b2YRc)OQZNz(Ds4_^l zp6IGoIyjVwN=HZPsTnGhqg^?nLYD*7+~Y!Dr;}4tzLx3;Pf;kFnp*MHQd3ds+F0uq zs!AXp*A$5Ya(TRRtT$9H) zp`s%>GS0hB=~M_MhBq!@Yk7Qliog@4=1H$s#?XVEoHYfZ_G?NB>CwJy(WMQc%)Tlm z=V}y@Mn#s-+fb#{u!0GhIe{25yb=UHmI%uW?>}`>aQhjaHyPEy&>U#G10634%U9=G zU0buxMMLHdb&Sdh&par^Ix;vl>oK?n7#5v&5T+zbMybOv1xwQ~_h5*qqf$l54FUE- zX_kcJ(bjJ8L50JD!Uvz5!Uns5W@jrEM#K2>>J5rPy(E#E)!3T?pkHw$q|?kb8iyXpJRA@ z6fxr0#KPHJrTIizv7k^x0Yu2$(tHgPP#7ogulRh3QU+)vO0F~{%y3m*oq%Da9D^o= zcm4V*OyXW8Scp1Y*t&X}L>ev~GG(|htI<~uNdy^BOd(v2-?h1>M(MypDQDnD>u}K{ zgEGY6iVe%Vx?Es3)K$64tM03+cCCdqu4B|Xsex7Ci2{W|AfGC6L5KMKh&+K4j-xps zc?yLae9EA6KaDTG<(D=)GR(&%65J~56Sjw%FGnnMCrEFZ|Y zh$yS^Fa+o!BHJX!3P_}^{yY>l+pANdAW#RcC~5`Kh( Az_F+G>Xw6)F)B3*HFqw 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
BXX7pTX&$)K?-0V4bvH5e626vUa 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

m`$7G;N9_BIOXOS(}U$sq@m9>z!W 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 literal 0 HcmV?d00001 From ecaec5c0b27e448866edbbfbb43763e883a37ef5 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sun, 22 Dec 2024 15:03:00 +0100 Subject: [PATCH 2/2] ports/stm32: Add support for Nema GPUs. Signed-off-by: iabdalkader --- src/omv/ports/stm32/omv_gpu.c | 117 ++++++++++++++++-- src/omv/ports/stm32/omv_portconfig.mk | 7 ++ src/omv/ports/stm32/stm32_hal_msp.c | 28 +++++ src/omv/ports/stm32/stm32_nema.c | 167 ++++++++++++++++++++++++++ 4 files changed, 308 insertions(+), 11 deletions(-) create mode 100644 src/omv/ports/stm32/stm32_nema.c diff --git a/src/omv/ports/stm32/omv_gpu.c b/src/omv/ports/stm32/omv_gpu.c index ca0aa6af5..3729181c4 100644 --- a/src/omv/ports/stm32/omv_gpu.c +++ b/src/omv/ports/stm32/omv_gpu.c @@ -26,19 +26,114 @@ #include "omv_boardconfig.h" #if (OMV_GPU_ENABLE == 1) #include STM32_HAL_H + +#include "py/mphal.h" +#include "py/runtime.h" + #include "imlib.h" #include "dma.h" +#if OMV_GPU_NEMA +#include "nema_core.h" +#include "nema_vg.h" +#include "nema_error.h" +#endif + +#if OMV_GPU_NEMA_MM_STATIC +uint8_t OMV_ATTR_SECTION(OMV_ATTR_ALIGNED(NEMA_BUFFER[OMV_GPU_NEMA_BUFFER_SIZE], 32), ".dma_buffer"); +#endif + int omv_gpu_init() { - return 0; + int error = 0; + #if OMV_GPU_NEMA + nema_init(); + error = nema_get_error(); + #endif + return error; } void omv_gpu_deinit() { - DMA2D_HandleTypeDef dma2d = {}; - dma2d.Instance = DMA2D; - HAL_DMA2D_DeInit(&dma2d); + } +#if OMV_GPU_NEMA +static nema_tex_format_t omv_gpu_pixfmt(uint32_t omv_pixfmt) { + switch (omv_pixfmt) { + case PIXFORMAT_BINARY: + return NEMA_L1; // source only + case PIXFORMAT_BAYER_ANY: + case PIXFORMAT_GRAYSCALE: + return NEMA_L8; + case PIXFORMAT_RGB565: + return NEMA_RGB565; + } + mp_raise_msg(&mp_type_ValueError, MP_ERROR_TEXT("Pixel format is not supported")); +} + +int omv_gpu_draw_image(image_t *src_img, + rectangle_t *src_rect, + image_t *dst_img, + rectangle_t *dst_rect, + int alpha, + const uint16_t *color_palette, + const uint8_t *alpha_palette, + image_hint_t hint) { + OMV_PROFILE_START(); + + if ((dst_rect->w != src_rect->w) || (dst_rect->h != src_rect->h)) { + // Create command list. + #if OMV_GPU_NEMA_MM_STATIC + nema_buffer_t bo = { + .size = sizeof(NEMA_BUFFER), + .base_virt = NEMA_BUFFER, + .base_phys = (uint32_t) NEMA_BUFFER, + }; + nema_cmdlist_t cl = nema_cl_create_prealloc(&bo); + #else + nema_cmdlist_t cl = nema_cl_create_sized(OMV_GPU_NEMA_BUFFER_SIZE); + #endif + // Bind command list. + nema_cl_bind_circular(&cl); + + nema_tex_mode_t blit_mode; + if (hint & IMAGE_HINT_BILINEAR) { + blit_mode = NEMA_FILTER_BL; + } else { + blit_mode = NEMA_FILTER_PS; + } + // Set up destination texture. + nema_tex_format_t dst_pixfmt = omv_gpu_pixfmt(dst_img->pixfmt); + nema_bind_dst_tex((uintptr_t) dst_img->data, dst_rect->w, dst_rect->h, dst_pixfmt, -1); + + // Set up source texture. + nema_tex_format_t src_pixfmt = omv_gpu_pixfmt(src_img->pixfmt); + nema_bind_src_tex((uintptr_t) src_img->data, src_rect->w, src_rect->h, src_pixfmt, -1, blit_mode); + + // Configure operations. + nema_set_blend_blit(NEMA_BL_SRC); + nema_set_clip(0, 0, dst_rect->w, dst_rect->h); + nema_blit_rect_fit(0, 0, dst_rect->w, dst_rect->h); + + // Flush source image + SCB_CleanDCache_by_Addr(src_img->data, image_size(src_img)); + + nema_cl_submit(&cl); + nema_cl_wait(&cl); + #if !OMV_GPU_NEMA_MM_STATIC + nema_cl_destroy(&cl); + #endif + + // Invalidate the destination image. + SCB_InvalidateDCache_by_Addr(dst_img->data, image_size(dst_img)); + + } else { + return -1; + } + + OMV_PROFILE_PRINT(); + return 0; +} +#else int omv_gpu_draw_image(image_t *src_img, rectangle_t *src_rect, image_t *dst_img, @@ -79,9 +174,11 @@ int omv_gpu_draw_image(image_t *src_img, } #endif - DMA2D_HandleTypeDef dma2d = {}; - - dma2d.Instance = DMA2D; + DMA2D_HandleTypeDef dma2d = { + .Instance = DMA2D, + .Init.ColorMode = DMA2D_OUTPUT_RGB565, + .Init.OutputOffset = dst_img->w - dst_rect->w, + }; if (dst_img->pixfmt != src_img->pixfmt) { dma2d.Init.Mode = DMA2D_M2M_PFC; @@ -97,9 +194,6 @@ int omv_gpu_draw_image(image_t *src_img, } #endif - dma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565; - dma2d.Init.OutputOffset = dst_img->w - dst_rect->w; - HAL_DMA2D_Init(&dma2d); dma2d.LayerCfg[0].InputOffset = dst_img->w - dst_rect->w; @@ -245,4 +339,5 @@ int omv_gpu_draw_image(image_t *src_img, OMV_PROFILE_PRINT(); return 0; } -#endif // (OMV_GPU_ENABLE == 1) +#endif // OMV_GPU_NEMA +#endif // OMV_GPU_ENABLE diff --git a/src/omv/ports/stm32/omv_portconfig.mk b/src/omv/ports/stm32/omv_portconfig.mk index 8b4d7ce30..e19e5af15 100644 --- a/src/omv/ports/stm32/omv_portconfig.mk +++ b/src/omv/ports/stm32/omv_portconfig.mk @@ -58,6 +58,7 @@ CFLAGS += -D$(MCU) \ -DHSE_VALUE=$(OMV_HSE_VALUE)\ -DOMV_VTOR_BASE=$(OMV_FIRM_ADDR) \ -DCMSIS_MCU_H='<$(MCU_LOWER).h>' \ + -DOMV_NOSYS_STUBS_ENABLE=1 \ -DSTM32_HAL_H='' \ $(OMV_BOARD_CFLAGS) @@ -125,6 +126,7 @@ OMV_CFLAGS += -I$(TOP_DIR)/$(MLX90641_DIR)/include/ OMV_CFLAGS += -I$(TOP_DIR)/$(PIXART_DIR)/include/ OMV_CFLAGS += -I$(TOP_DIR)/$(DISPLAY_DIR)/include/ OMV_CFLAGS += -I$(TOP_DIR)/$(LIBPDM_DIR)/ +OMV_CFLAGS += -I$(TOP_DIR)/$(NEMA_DIR)/include ifeq ($(OMV_ENABLE_UVC), 1) UVC_CFLAGS := $(CFLAGS) $(HAL_CFLAGS) @@ -189,6 +191,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/common/, \ file_utils.o \ mp_utils.o \ omv_csi.o \ + nosys_stubs.o \ ) FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \ @@ -652,6 +655,10 @@ ifeq ($(MICROPY_PY_AUDIO), 1) LIBS += $(TOP_DIR)/$(LIBPDM_DIR)/libPDMFilter_CM7_GCC_wc32.a endif +ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),n6)) +LIBS += $(TOP_DIR)/$(NEMA_DIR)/lib/libnemagfx-$(CPU)+fp.a +endif + #------------- ML libraries ----------------# ifeq ($(MICROPY_PY_ML_TFLM), 1) OMV_CFLAGS += -I$(BUILD)/$(TENSORFLOW_DIR)/ diff --git a/src/omv/ports/stm32/stm32_hal_msp.c b/src/omv/ports/stm32/stm32_hal_msp.c index ddd91fbf3..a1791d6cf 100644 --- a/src/omv/ports/stm32/stm32_hal_msp.c +++ b/src/omv/ports/stm32/stm32_hal_msp.c @@ -640,8 +640,36 @@ void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef *hdma2d) { __HAL_RCC_DMA2D_FORCE_RESET(); __HAL_RCC_DMA2D_RELEASE_RESET(); __HAL_RCC_DMA2D_CLK_DISABLE(); + __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE(); } +#if defined(GPU2D) +void HAL_GPU2D_MspInit(GPU2D_HandleTypeDef *hgpu2d) { + __HAL_RCC_GPU2D_FORCE_RESET(); + __HAL_RCC_GPU2D_RELEASE_RESET(); + + __HAL_RCC_GPU2D_CLK_ENABLE(); + __HAL_RCC_GPU2D_CLK_SLEEP_ENABLE(); +} + +void HAL_GPU2D_MspDeInit(GPU2D_HandleTypeDef *hgpu2d) { + __HAL_RCC_GPU2D_CLK_DISABLE(); + __HAL_RCC_GPU2D_CLK_SLEEP_DISABLE(); +} +#endif + +#if defined(GFXMMU) +void HAL_GFXMMU_MspInit(GFXMMU_HandleTypeDef *hgfxmmu) { + __HAL_RCC_GFXMMU_CLK_ENABLE(); + __HAL_RCC_GFXMMU_CLK_SLEEP_ENABLE(); +} + +void HAL_GFXMMU_MspDeInit(GFXMMU_HandleTypeDef *hgfxmmu) { + __HAL_RCC_GFXMMU_CLK_DISABLE(); + __HAL_RCC_GFXMMU_CLK_SLEEP_DISABLE(); +} +#endif + #if (OMV_JPEG_CODEC_ENABLE == 1) void HAL_JPEG_MspInit(JPEG_HandleTypeDef *hjpeg) { __HAL_RCC_JPEG_CLK_ENABLE(); diff --git a/src/omv/ports/stm32/stm32_nema.c b/src/omv/ports/stm32/stm32_nema.c new file mode 100644 index 000000000..0123a8c4e --- /dev/null +++ b/src/omv/ports/stm32/stm32_nema.c @@ -0,0 +1,167 @@ +/* + * SPDX-License-Identifier: MIT + * + * Copyright (C) 2024 OpenMV, LLC. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * STM32 Nema HAL layer. + */ +#include +#include STM32_HAL_H + +#include "omv_boardconfig.h" + +#if (OMV_GPU_NEMA == 1) +#include "omv_common.h" +#include "nema_core.h" +#include "nema_sys_defs.h" + +#ifndef OMV_GPU_NEMA_RING_SIZE +#define OMV_GPU_NEMA_RING_SIZE 1024 +#endif + +volatile static int last_cl_id; +static GPU2D_HandleTypeDef gpu2d = { 0 }; +static nema_ringbuffer_t ring_buf = {{0}}; +#if OMV_GPU_NEMA_MM_STATIC +uint8_t OMV_ATTR_SECTION(OMV_ATTR_ALIGNED(RING_BUFFER[OMV_GPU_NEMA_RING_SIZE], 32), ".dma_buffer"); +#endif + +int32_t nema_sys_init(void) { + // Initialize GPU2D + gpu2d.Instance = GPU2D; + HAL_GPU2D_Init(&gpu2d); + + // Configure and enable texture cache + HAL_ICACHE_DeInit(); + HAL_ICACHE_Disable(); + HAL_ICACHE_ConfigAssociativityMode(ICACHE_4WAYS); + HAL_ICACHE_Enable(); + + // Allocate ring buffer. + #if OMV_GPU_NEMA_MM_STATIC + ring_buf.bo.fd = 0; + ring_buf.bo.size = sizeof(RING_BUFFER); + ring_buf.bo.base_virt = RING_BUFFER; + ring_buf.bo.base_phys = (uint32_t) RING_BUFFER; + #else + ring_buf.bo = nema_buffer_create(OMV_GPU_NEMA_RING_SIZE); + #endif + + // Initialize ring buffer. + if (nema_rb_init(&ring_buf, 1) != 0) { + return -1; + } + + NVIC_SetPriority(GPU2D_IRQn, IRQ_PRI_GPU); + NVIC_EnableIRQ(GPU2D_IRQn); + + NVIC_SetPriority(GPU2D_ER_IRQn, IRQ_PRI_GPU); + NVIC_EnableIRQ(GPU2D_ER_IRQn); + return 0; +} + +int nema_wait_irq_cl(int cl_id) { + while (last_cl_id < cl_id) { + __WFI(); + } + return 0; +} + +int nema_wait_irq_brk(int brk_id) { + while (nema_reg_read(GPU2D_BREAKPOINT) == 0U) { + __WFI(); + } + return 0; +} + +uint32_t nema_reg_read(uint32_t reg) { + return HAL_GPU2D_ReadRegister(&gpu2d, reg); +} + +void nema_reg_write(uint32_t reg, uint32_t value) { + HAL_GPU2D_WriteRegister(&gpu2d, reg, value); +} + +nema_buffer_t nema_buffer_create(int size) { + nema_buffer_t bo = { + .base_virt = nema_host_malloc(size), + .base_phys = (uint32_t) bo.base_virt, + .size = size, + }; + return bo; +} + +nema_buffer_t nema_buffer_create_pool(int pool, int size) { + return nema_buffer_create(size); +} + +void *nema_buffer_map(nema_buffer_t *bo) { + return bo->base_virt; +} + +void nema_buffer_unmap(nema_buffer_t *bo) { + UNUSED(bo); +} + +void nema_buffer_destroy(nema_buffer_t *bo) { + nema_host_free(bo->base_virt); +} + +uintptr_t nema_buffer_phys(nema_buffer_t *bo) { + return bo->base_phys; +} + +void nema_buffer_flush(nema_buffer_t *bo) { + #if !OMV_GPU_NEMA_MM_STATIC + SCB_CleanInvalidateDCache_by_Addr((uint32_t *) bo->base_virt, bo->size); + #endif +} + +void nema_host_free(void *ptr) { + if (ptr) { + free(ptr); + } +} + +void *nema_host_malloc(unsigned size) { + return malloc(size); +} + +int nema_mutex_lock(int mutex_id) { + return 0; +} + +int nema_mutex_unlock(int mutex_id) { + return 0; +} + +void GPU2D_IRQHandler(void) { + HAL_GPU2D_IRQHandler(&gpu2d); +} + +void GPU2D_ER_IRQHandler(void) { + HAL_GPU2D_ER_IRQHandler(&gpu2d); +} + +void HAL_GPU2D_CommandListCpltCallback(GPU2D_HandleTypeDef *gpu2d, uint32_t CmdListID) { + last_cl_id = CmdListID; +} +#endif // OMV_GPU_NEMA