Commit Graph

21 Commits

Author SHA1 Message Date
Anurag Thakur 0e4a081e87 improve simd 2023-10-08 19:34:11 +05:30
Anurag Thakur 6e79a1ee28 Add ARM NEON support 2023-10-08 06:39:26 +05:30
Anurag Thakur f5bc9da6e8 Optimize SIMD, add new line drawing function 2023-10-07 01:20:03 +05:30
Anurag Thakur 55c2525701 Optimize SIMD even more 2023-10-06 03:10:27 +05:30
Anurag Thakur 66375b4408 Speed-up SIMD 2023-10-05 03:46:59 +05:30
Anurag Thakur 2727d668bf silence 2023-09-30 01:38:06 +05:30
Anurag Thakur 579d9385ef First correct render 2023-09-29 01:46:56 +05:30
Anurag Thakur 382949cdea Fix render 2023-09-29 01:09:09 +05:30
Anurag Thakur 168eace51c Close contour with line segment and render glyph 2023-09-28 21:52:04 +05:30
Anurag Thakur c41d05e8a2 Render prelines 2023-09-08 01:45:42 +05:30
Anurag Thakur 71f7fb7203 Connect prelines to renderer 2023-09-04 02:00:23 +05:30
Anurag Thakur 4769e58bbd [dense] Add compilation flags for meson 2023-08-09 01:32:15 +05:30
Anurag Thakur f7f7eb0843 [dense] Add optimization for division
* src/dense/ftdense.c: FT_UDIV, FT_UDIVPREP macros taken from smooth
rasterizer, help optimize fixed-point division
2023-08-09 01:32:15 +05:30
Anurag Thakur d2be765703 [dense] Add optimization for vertical lines
* src/dense/ftdense.c: Optimize line drawing when a vertical line is encountered
2023-08-09 01:32:15 +05:30
Anurag Thakur eaf09d951f [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-08-09 01:32:15 +05:30
Anurag Thakur 0aa7485b0d [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-08-09 01:32:15 +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