1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-03-19 09:13:33 +01:00
Files
wmaker/wrlib
David Maciejak ef1a504898 wrlib: alpha combine speed improvement
This patch is improving the alpha combine function by using int
instead of float. That function is used for example in the
switch panel to merge the transparency mask.
The change is practically indistinguishable to the human eye
for a single-pass blend but the performance gained is huge.

I've been doing some benchmark of wrlib and even implemented AVX2 support.
But the gain compared to the complexity of AVX2 is not worth,
while having int usage in that specific function is a really good trade-off.

Here the result:

Alpha Blending Performance Test
Image size: 1024x768 (786432 pixels)
Iterations: 100

AVX2 support: YES

=== RGBA Source Test ===
Original (float):     2.540 ms/frame  (393.8 FPS)
Optimized (int):      1.983 ms/frame  (504.2 FPS)  [1.3x speedup]
AVX2 optimized:       1.843 ms/frame  (542.6 FPS)  [1.4x speedup]

By using int, the alpha blending in that use case is 28% faster.
2026-01-27 10:56:30 +00:00
..
2020-04-09 14:28:09 +01:00
1998-09-29 22:36:29 +00:00
2020-04-09 14:28:09 +01:00
2023-03-12 09:44:10 +00:00
1998-09-29 22:36:29 +00:00
2023-03-12 09:44:10 +00:00
2024-11-10 16:59:03 +00:00
2023-03-12 09:44:10 +00:00
2023-03-07 17:31:07 +00:00
2020-04-09 14:28:09 +01:00
2002-09-30 12:39:22 +00:00
2024-11-10 16:59:03 +00:00

WindowMaker raster graphics library

This library is used to manipulate images and convert them to
a format that can be displayed through the X window system.
Read the wraster.h header for an idea of what is available


This Library is LGPL and
Copyright (c) Alfredo K. Kojima <kojima@inf.ufrgs.br>


The following environment variables control some parameters:

RIMAGE_CACHE <integer>

Is the maximum number of images to store in the internal cache.
Default is 8

RIMAGE_CACHE_SIZE <integer>

Is the size of the biggest image to store in the cache.
Default is 4k (64x64)



Porting
=======

It should be fairly easy to port it to other environments
(svgalib, libggi etc), probably only requiring wraster.h,
context.c and convert.c to be changed. Note that the X specific
code should be disabled in that case, including support for libXpm.