Commit Graph

26 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 bd0c3e594e dense fixes 2023-10-04 00:37:16 +05:30
Anurag Thakur 2727d668bf silence 2023-09-30 01:38:06 +05:30
Anurag Thakur 5721ad0e38 Finally, it works 2023-09-30 00:47:07 +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 36f7c6bd34 Add structure to store preloaded lines 2023-08-25 00:35:30 +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 abce0cab72 [dense] Add 'dense' renderer
* src/dense/ftdenserend.c: Add 'dense' renderer along with its interface
functions.

(ft_dense_set_mode, ft_dense_transform, ft_dense_get_cbox, ft_dense_init,
ft_dense_done, ft_dense_render)
2023-08-09 01:32:15 +05:30
Anurag Thakur f681099918 [dense] Populate headers for 'dense' module
* src/dense/ftdenserend.h (ft_dense_renderer_class): New Structures

* src/dense/ftdense.h (dense_worker): New Structure
(dense_render_line, dense_render_quadratic, dense_render_cubic): New
function declarations
(ft_dense_raster): Export dense raster funcs

* src/dense/ftdenseerrs.h: Add module error setup
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