Commit Graph

12 Commits

Author SHA1 Message Date
Anurag Thakur b1f9f98e45 [dense] Add support for rendering prelines
* src/dense/ftdense.c: Add dense_render_line2 function, that takes
a PreLine as argument.

FT_Outline_Decompose call in dense_render_glyph replaced by a loop
that renders PreLines

* src/dense/ftdenserend.c: Add support for shifting PreLines as
per target bitmap
2023-10-10 03:41:29 +05:30
Anurag Thakur 3b3c46629e [dense] Add ARM NEON support and improve SSE perf
* src/dense/ftdense.c: Add FT_NEON flag, implement ARM NEON support
in dense_render_glyph, improve SSE performance

* src/dense/rules.mk: Replacse -msse4.1 with -march=native
2023-10-10 03:20:48 +05:30
Anurag Thakur 1bf65eff60 [dense] Add compilation fixes for meson
* builds/meson/parse_modules_cfg.py: Add dense module

* meson.build: Add SSE flags to ft2_defines, -lm to link_args

* src/dense/ftdense.c: Fixes for compilation errors
2023-10-10 03:17:34 +05:30
Anurag Thakur 724e81ef5b [dense] Add optimization for division
* src/dense/ftdense.c: FT_UDIV, FT_UDIVPREP macros taken from smooth
rasterizer, help optimize fixed-point division
2023-10-10 01:46:43 +05:30
Anurag Thakur 668bc29ff0 [dense] Add optimization for vertical lines
* src/dense/ftdense.c: Optimize line drawing when a vertical line is encountered
2023-10-10 01:46:43 +05:30
Anurag Thakur bca7bda1e7 [dense] Re-enable SIMD to work with fixed-point
* src/dense/ftdense.c: Use integer SIMD functions for accumulation

* src/dense/ftdense.h: Change types of FT26D6, FT20D12 to better fit
their usage
2023-10-10 01:46:43 +05:30
Anurag Thakur 3e56c9bf62 [dense] Migrate line drawing and accumulation to fixed-point
* src/dense/ftdense.h: (FT26D6, FT20D12): New typedefs

* src/dense/ftdense.c: dense_render_line, dense_render_glyph now
use fixed-point numbers for calculation

Disabled SIMD for now
2023-10-10 01:46:37 +05:30
Anurag Thakur 70d6a8ef1a [dense] Add SIMD support to rasterizer
* src/dense/ftdense: Use SSE4.1 for final accumulation step
(FT_SSE4_1): Macro which checks if SSE4.1 is available

* src/dense/rules.mk: Enable linking for SSE4.1
2023-08-09 01:32:15 +05:30
Anurag Thakur 2504e2de84 [dense] Enable module compilation
* src/dense/ftdense.c: Redefine FT_SWAP to fix compilation error

* src/include/freetype/config/ftmodule.h: Added ft_dense_renderer_class

* src/dense/dense.c: Build single object of module

* modules.cfg: Added 'dense' RASTER_MODULE

* src/dense/module.mk, src/dense/rules.mk: Added Makefile

* CMakeLists.txt: Added 'dense.c' to compilation files
2023-08-09 01:32:15 +05:30
Anurag Thakur 5e681678f6 [dense] Add drawing functions to rasterizer
* src/dense/ftdense.c: (dense_render_line, dense_render_quadratic,
dense_render_cubic, dense_render_glyph, dense_raster_render, Lerp):
New Functions
2023-08-09 01:32:15 +05:30
Anurag Thakur f2ff1dc37e [dense] Add rasterizer functions
* src/dense/ftdense.c: (ONE_PIXEL, TRUNC, UPSCALE, DOWNSCALE,
FT_SWAP, FT_MIN, FT_MAX, FT_ABS): New Macros

(dense_move_to, dense_line_to, dense_conic_to): Added outline
decomposing functions

(dense_raster_new, dense_raster_done, dense_raster_reset,
dense_raster_set_mode, dense_raster_render): Added interface
functions
2023-08-09 01:32:15 +05:30
Anurag Thakur a78906fb4e [dense] Add files for new 'dense' module
Breakdown of what the files will contain

* src/dense/ftdenserend.c, src/dense/ftdenserend.h: The 'dense' renderer.

* src/dense/ftdense.c, src/dense/ftdense.h: The rasterizer for the
'dense' renderer.

* src/dense/ftdenseerrs.h: Common error defines.

* src/dense/dense.c: For building a single object of the entire module.
2023-08-09 01:32:15 +05:30