Commit graph

57 commits

Author SHA1 Message Date
3719dbccd5
treewide: fix various build warnings; ignore vendored headers in formatting job
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I7af033c8d3f437e5574b050223cbc16a6a6a6964
2026-04-16 21:06:21 +03:00
b311a0a969
build: add -Wconversion and -Wdouble-promotion to default flags
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I92e454f97d628a7b8ada8dc85ec458376a6a6964
2026-04-16 21:06:20 +03:00
237a013e03
build: harden default flags
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9a86a035c2e35a8ccbac9c7672d82dcb6a6a6964
2026-04-16 21:06:08 +03:00
c8d5637e25
meta: update sample config for prefix syntax & output maching
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4ef49c171e260fe8e1ea114a58af77166a6a6964
2026-04-16 16:03:34 +03:00
459989e896
config: add description-based output matching with desc: prefix
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Idbe0661f0c491512d61ace4337ebe8cd6a6a6964
2026-04-16 16:03:33 +03:00
e871307f6a
chore: add more Make tasks for tests & benchmarks
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I5cabfcf1815588ffec6c8b865cd163176a6a6964
2026-04-16 16:03:32 +03:00
000258df5c
chore: ignore valgrind artifacts
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I309e751b96e858f231e224d3b345670e6a6a6964
2026-04-16 16:03:31 +03:00
4a84ed7a21
scripts: visualise benchmark results via Python script
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If48e0a1c4b265946c009b3abd9a249a96a6a6964
2026-04-16 16:03:30 +03:00
9be9c8276a
lib: add test helpers
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iaefc0d503288b4ffe8e6922130acc2ec6a6a6964
2026-04-16 16:03:29 +03:00
4d10074181
nix: streamline packaging
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4643ed2c8e6f8ceb5e722612cc67a74e6a6a6964
2026-04-16 16:03:28 +03:00
5df01492ec
docs: simplify README
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I893d51c6a084a0ed56a27cf0bcfae14b6a6a6964
2026-04-16 16:03:27 +03:00
23527908c2
config: fix wording
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I41e3e89470fa8181d887de0584c965176a6a6964
2026-04-16 16:03:26 +03:00
3db813fcc2
tests: initial unit testing
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib67a52ddcdbb9d5378dc3dd2dd7b5d106a6a6964
2026-04-16 16:03:25 +03:00
1891725ff9
tests: add basic helpers
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6e5659a4a93d62c6ae60dd1f1a03425a6a6a6964
2026-04-16 16:03:24 +03:00
e177e32bfd
nix: add bear to devshell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib56e2256b279f69fccb00f32423a7d0d6a6a6964
2026-04-16 16:03:19 +03:00
987f4fcc99
treewide: unify signal handling, error reporting, and string utils
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I8351ecccb03281e438dba666390021306a6a6964
2026-04-15 13:08:10 +03:00
dab6b3b0ae
meta: add coordinate based anchor examples to sample config
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I56bcc8488e3d973cc9ff99d26f991aa06a6a6964
2026-04-15 12:44:47 +03:00
dadba853e8
render: implement coordinate-based anchor positioning
Not to be confused with Minecraft coordinates.

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ifdb90fc92a1565ba1d30b85c91d6e1ab6a6a6964
2026-04-15 12:44:46 +03:00
b6780cc180
meta: add anchor options to sample config
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I861aa8c86470ba1826860896b4e770e26a6a6964
2026-04-15 11:55:06 +03:00
a82b986ac6
{render,config}: allow specifying wallpaper anchor position
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iee73e9d149e85d2c00eaba4be25d42bd6a6a6964
2026-04-15 11:55:05 +03:00
dd0252fe7b
nix: bump nixpkgs
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I44418211df3db4841793f914a44b2d8f6a6a6964
2026-04-15 11:54:37 +03:00
55012e16f9
docs: update README with 'new' features
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic45f39e98b73a0ec2e2ec8cbdcc2f5d66a6a6964
2026-01-31 15:15:16 +03:00
d402e6e300
nix: add packaging; update devshell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9f1ddf6dbd141b5a85b4b5a36c2c9a586a6a6964
2026-01-31 15:15:15 +03:00
7ccb21af79
nix: bump inputs
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I1889ab776432fbbbaa228a09c8acf4286a6a6964
2026-01-31 15:15:14 +03:00
5a1332080d
meta: ignore test files w/o wildcard
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I90cfb63920a7a42817f5f6c106a731b86a6a6964
2026-01-31 15:15:13 +03:00
d145d88b7e
meta: add downsampling options to sample config
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ie0aac45e64dfe292b3cd8de330f6b2d86a6a6964
2026-01-31 15:15:12 +03:00
e5931e3910
config: configure downsampling; remove config generator
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I43c5821edc0e121962bee76e39cb32816a6a6964
2026-01-31 15:15:11 +03:00
3d4974a128
core: optimize VBO
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic29424c13a4b2fbf6d74e6ec4c2bedde6a6a6964
2026-01-31 15:15:10 +03:00
46ea940242
image: initial downsampling implementation
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Icec8c434ecf480c644a6f6e6a3b8cd5b6a6a6964
2026-01-31 15:15:09 +03:00
ec628eb1af
render: fix filtering; optimize VBO management
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2f30f77e0f29437cac57a1064ca1f6796a6a6964
2026-01-31 15:15:08 +03:00
5bfae35738
meta: vendor stb_image_write header
We'll need this for funny image generation stuff

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I36c962a1b994d0a6717ac568421716816a6a6964
2026-01-31 15:15:07 +03:00
746e83d3da
meta: make makefile work again...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Icaabb1719e4678d28439906c80ae54986a6a6964
2026-01-31 15:15:06 +03:00
c9d32e14ab
render: handle mipmaps properly
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I43de088ca17559648d67e728db1179cf6a6a6964
2026-01-31 15:14:55 +03:00
raf
d16a861e52 Merge pull request 'meta: fix the warning during compilation' (#7) from amr-patch-2 into main
Reviewed-on: #7
Reviewed-by: raf <raf@notashelf.dev>
2025-11-02 17:57:48 +00:00
amr
1f9050b69e fix: this solves the warning during compilation
This not only solves the warning/error brought up during compilation, it's also just a sort of belt'n'braces approach to make absolutely sure the timestamp length is correct and didn't get truncated or some other error. This was a new warning/error introduced back in gcc 7.1, and it's one of those "you *should* do it this way because it's technically the correct way" things that most developers roll their eyes at but, logically, they're technically correct.
2025-11-02 08:31:16 +00:00
raf
ecff681d37 Merge pull request 'Fix typo in systemd service' (#6) from amr-patch-1 into main
Reviewed-on: #6
Reviewed-by: raf <raf@notashelf.dev>
2025-11-02 08:07:21 +00:00
amr
9415b61953 Fix typo in systemd service
Should probably also consider switching this to a "forking" service, and using the --daemon option
2025-11-02 07:04:51 +00:00
74f46f45bf
chroma: add scaling modes to header
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I8935a2a5a8e5e33d38e937502b3b82456a6a6964
2025-11-02 01:19:59 +03:00
5fd2e5660f
config: handle transform opts; make implementation futureproof
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic67d4485d08114f605a6dc2535224b276a6a6964
2025-11-02 01:19:58 +03:00
1a366d2445
core: store old config values per-monitor
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ieb3a272935892c874339b13e63b998fd6a6a6964
2025-11-02 01:19:57 +03:00
e7f107a8fe
render: calculate texture coordinates based on scaling mode
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ie4e44a0cea68cbbee8122576c41aa4486a6a6964
2025-11-02 01:19:56 +03:00
9b42e70054
chore: bump version; add version management targets
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6e48eced0a604c9d3bd6f4f317f4d5236a6a6964
2025-11-02 01:19:55 +03:00
3d42f75052
meta: ignore more test stuff
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I1d79aa394ceac5746d13eba4f7dbb50c6a6a6964
2025-11-02 01:19:54 +03:00
74fed80a26
config: fix tilde expansion for wallpaper paths
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I45b7a520f1959886793ded62f1ed2cd96a6a6964
2025-11-02 01:19:53 +03:00
ca468ce677
meta: ignore test stuff
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a69643363882503b31ab1fd01af1664d0f8f5
2025-10-02 21:52:09 +03:00
bc77b887ad
various: log memory events
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a69643b6d00277bb9bcfeb4cd01dc78d7cd3d
2025-10-02 21:52:08 +03:00
0bc2decb7c
docs: add project README
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a696411e599829afb123a5f3c241768470163
2025-09-30 20:11:50 +03:00
edc7552b5c
add sample configuration
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a696450749c525482d2eab12de1a0e520e973
2025-09-30 20:11:49 +03:00
e72da82b32
meta: set vendored code manually
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a6964fbd3dbcc49825f381f980d3fd76e8766
2025-09-30 20:11:48 +03:00
d1116e7721
render: add OpenGL resource caching; optimize texture handling
Mildly improves rendering performance by caching OpenGL resources.
Namely:

- Cache shader program, VBO/EBO, and textures per output
- Automatically free image data after GPU upload
- Force RGBA format for consistent texture handling
- Track texture state across output changes
- Add texture invalidation on image changes

This reduces the memory usage by a solid 30MB, but it's still not quite
enough. I expect (or rather, hope) that we can cut it by half.

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a6964eebc783c5bc07b1fef7548a8d49f529c
2025-09-30 20:11:47 +03:00