Skip to content

Subpixel‐aware downscaling filters - #2024

Draft
dkoukola wants to merge 9 commits into
ValveSoftware:masterfrom
dkoukola:subpixel-downscale
Draft

dkoukola wants to merge 9 commits into
ValveSoftware:masterfrom
dkoukola:subpixel-downscale

Conversation

@dkoukola

@dkoukola dkoukola commented Nov 27, 2025 •

Copy link
Copy Markdown

I’ve been playing around with subpixel‐aware downscaling filters and, for testing purposes, I’ve tried implementing them into gamescope. There are currently four filters available:

subpixel_rgb – horizontal RGB subpixel layout (3:1 ratio)
subpixel_vbgr – vertical BGR subpixel layout (3:1 ratio)
subpixel_oled – RG/B subpixel layout (2:1 ratio)
subpixel_qdoled – G/RB subpixel layout (2:1 ratio)

As of now they only work with the fixed scaling ratios listed above, i.e. they can be used like this:

gamescope -F subpixel_rgb -w 5760 -h 3240 -W 1920 -H 1080 -- <command>
gamescope -F subpixel_oled -w 3840 -h 2160 -W 1920 -H 1080 -- <command>

The aim was the highest possible quality; performance has not yet been optimized at all.

They also still produce some artifacts, such as black halos around some sharp edges, which I haven’t managed to fix yet.

Use each layer transform to gate fixed-ratio kernels, and expose the custom filters through runtime selection and timing labels. Share active-filter resolution with compositor reporting and preserve the resolved filter in preemptively rendered textures while keeping the requested filter as the cache key.

Add regression coverage for SGSR-compatible filter IDs, parsing, focus settings, and supported downscale ratios.
@dkoukola
dkoukola force-pushed the subpixel-downscale branch from 0c8905a to 5c08d39 Compare October 3, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant