summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* algo/scrolling: various scrolling view related bugfixes (#13974)erstarr2026-05-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix scrolling view move when a grouped window is closed - prevent redundant space assignment for a grouped window that's about to be unmapped, add a `FOCUS_REASON` for unmapping grouped windows * fix focus_fallback after unmapping a window floating moving view * fix view change when changing workspaces (special and normal). add an optional `RECALCULATE_REASON` parameter to `recalculate()` calls of all algorithms. add an optional `RECALCULATE_MONITOR_REASON` parameter to `recalculateMonitor()` calls. add 2 new `FOCUS_REASON`s, for workspace change and special workspace toggle * Fix hyprctl keyword causing scrolling view move. rename INPUT_MODE_KB to INPUT_MODE_HARD since it seems to have little to do with keybinds * fix fullscreen/maximise moving the scrolling view * fix opening of layer 3 programs moving scrolling view * refactor, clean up and clang-format * fix bad decisions * fix includes, clang-format. * remove TODO * `focuswindow` no longer moves scrolling view when `follow_focus = 0` * fix: changes in a group's current window no longer casues scrolling view shift when `follow_focus = 0` * fix: `moveintogroup`, `movewindoworgroup` no longer causes scrolling view change if `follow_focus = 0` * clang-format * add `RECALCULATE_REASON_UNKNOWN`, `RECALCULATE_MONITOR_REASON_UNKNOWN`, `REMOVE_FROM_GROUP_REASON_UNKNOWN` remove optional wrapper from their enums, refactor code to work with the change * dispatches that call `switchtoWindow()` in CKeybindManager no longer cause scrolling view to move if `follow_focus = 0`. They still cause the move if `follow_focus = 1` Dispatches effected by this: `movefocus`, `cyclenext`, `focuscurrentorlast`, `focuscurrentorurgent` * Fix for Lua: switchToWondow * Fix for Lua: focus({window}) * Fix for Lua: Move Window Into Group * clang-format * Drop `hyprctl keyword` change * test: `focus({window})` with `follow_focus = false` * test: `focus({window})` with `follow_focus = true` * test: test Focus Fallback * test: Focus Fallback with groups * test: workspace change * test: special workspace toggle * test: workspace change - special to special also minor refactoring * test: close window in a group * test: move window into group `follow_focus = false` minor fix in test: expect -> assert * test: move window into group `follow_focus = true` * test: new layer * test: maximise fix in test: expect to assert. * test: fullscreen * test: `dispatch window.focus({ direction })` when `follow_focus = false` * test: `dispatch window.focus({ direction })` when `follow_focus = true` test-fix: expect -> assert * test: move focus within group when `follow_focus = false` * test: move focus within group when `follow_focus = true` * test-fix: kill all layers before killing all windows in layers test. prevents internal post test cleanup function failing to kill all layers test-fix: maximized and fullscreen swapped between their tests test-fix: testScrollingViewBehaviourMoveFocusInGroupFollowFocusTrue missing layout initialization test-fix: testScrollingViewBehaviourWorkspaceChange, testScrollingViewBehaviourCloseWindowInGroup have stale window class in a comment clang-format * catch up with main: move to new test function * clean-up the clean-up part of the tests: redundant * clang-format * pain * suffering: fix rebase fail * test: manually kill all layers since the cleanup function fails * remove test: fullscreen and maximise. scrolling has its own behaviour now
* renderer: fix shadow CM calculations (#14364)Vaxry2026-05-081-1/+1
|
* renderer: more FP16 fixes (#14070)UjinT342026-05-071-20/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix fp16 blur with invalidation * restore tonemap code * fix fade outs * add sdr compat for unaware surfaces * use a better work space, not linear, only for sdr * fix hl tf -> wp tf * cache workbuffer descriptions * linear not normalised WIP * clear offload fb * CM math * fix includes * use precalculated cm for shadows * inner glow cm * quad cm * fix unmodified copy * codegen * cache color CM * mark blur dirty when CM/DS changes * avoid icc workbuffer * fp16 blur finish hack * fix output hdr luminances * use srgb for mirroring/sharing with fp16 * defaults people --------- Co-authored-by: Vaxry <vaxry@vaxry.net>
* render: scale background to monitor resolution (#14250)davc0n2026-05-041-5/+51
| | | | | | | | | | | | | * render: scale background to monitor resolution Currently the background is not scaled, e.g. 8k size image always uses ~128Mb of VRAM. We could reduce the consumption for low-end devices and monitors with lower resolution: - ~8Mb for 1080p - ~16Mb for 2k - ~32Mb for 4k * render: use gpu to scale bgtex and fix missing reset on size change
* renderer: only set presentationmode when required (#14252)Tom Englund2026-05-021-2/+3
| | | | if guard the setPresentationMode with the current state, shows up in profiling as minor waste on each frame.
* desktop/window: refactor over fullscreen stateVaxry2026-04-291-3/+6
|
* desktop/window: expand hidden into proper statesVaxry2026-04-291-0/+3
|
* desktop/window: add alpha container for alpha calculationsVaxry2026-04-291-11/+16
|
* config/lua: init lua config manager, use lua if available (#13817)Vaxry2026-04-261-53/+54
| | | Adds a new lua config manager, which will automatically be used if there is a lua config present.
* errorOverlay: modernize, refactor, use GPU rendering (#14122)Vaxry2026-04-191-3/+3
| | | | | | | Improves the overlay's rendering: - GPU accelerated - supports gradients - wraps - cleaner code a bit
* debug/overlay: optimize rendering, cleanup and nicetify (#14097)Vaxry2026-04-161-7/+18
| | | | optimizes the rendering, drops direct cairo, fixes up api. Also improves the visuals etc of the overlay
* renderer: Various CM fixes, part 8 of refactors (#13860)UjinT342026-04-161-36/+69
| | | Part 8 of Ujin's refactors.
* notifications: move and small refactor (#14094)Vaxry2026-04-161-7/+7
| | | moves to notification/, and adds a new style manager getter.
* renderer: extract window skip conditions into named booleans (#14005)Visal Vijay2026-04-081-5/+13
|
* config: move misc:vfr to debug: (#14021)Vaxry2026-04-071-1/+1
| | | this is a debug-only option and should never be turned off
* renderer: add a cm settings cacheVaxry2026-04-041-1/+20
|
* renderer: simplify renderWorkspaceWindowsFullscreenVaxry2026-04-041-10/+14
|
* renderer: don't damage decos individually in damageWindowVaxry2026-04-041-3/+0
|
* render: fix SIGFPE in `addWindowToRenderUnfocused` when ↵vyfor2026-04-041-0/+3
| | | | `misc:render_unfocused_fps` is 0 (#13973)
* renderer: skip redundant render-path workPppp11162026-04-041-6/+10
|
* monitor: centralize solitary and scanout eligibility checksPppp11162026-04-041-12/+15
|
* render: fix layer blur_popups ignoring ignore_alpha when blur is off (#13947)Mihai Fufezan2026-04-021-4/+13
|
* renderer: refactor part 7: api fixes (#13631)UjinT342026-03-281-527/+81
| | | | | | | Part 7 of ujin's refactors --------- Co-authored-by: Vaxry <vaxry@vaxry.net>
* renderer/deco: add glow decoration (#13862)Vaxry2026-03-271-0/+1
|
* renderer: guard against null monitor in renderMonitor (#13823)Visal Vijay2026-03-231-0/+2
|
* config: cleanup the entire config infrastructure (#13785)Vaxry2026-03-201-11/+10
| | | | Massively refactors the config infrastructure, sorely needed and will be req'd for the lua stuff
* source: c-f for new clang versionVaxry2026-03-151-17/+17
|
* renderer: fix blockBlurOptimization check (#13685)staz2026-03-131-1/+1
|
* internal: fix relative path header locations (#13650)ItsOhen2026-03-131-11/+11
| | | Or plugins can't build.
* renderer: fix share window projection (#13695)UjinT342026-03-111-1/+4
|
* renderer: fix crash on null blur framebuffer during monitor disconnectmatjam2026-03-101-1/+5
| | | | Guard all m_blurFB dereferences against null. The blur framebuffer is reset during monitor disconnect but layer surface snapshots use a simple render path that skips framebuffer allocation.
* renderer: refactor gl renderer (#13488)UjinT342026-03-071-512/+645
|
* renderer: refactor projection setting (#13485)UjinT342026-03-071-4/+45
|
* renderer: move m_renderData to renderer (#13474)UjinT342026-03-071-77/+79
|
* renderer: refactor resources and flags (#13471)UjinT342026-03-071-74/+337
|
* renderer: refactor render elements (#13438)UjinT342026-03-071-0/+304
| | | Part 2 of renderer refactors
* renderer: refactor Texture, Framebuffer and Renderbuffer (#13437)UjinT342026-03-061-14/+152
| | | Part 1 of the renderer refactors
* renderer: shader variants refactor (#13434)UjinT342026-03-061-5/+90
| | | Part 0 of renderer reworks.
* renderer: fix crash on mirrored outputs needing recalc (#13534)Vaxry2026-03-031-1/+2
| | | ref https://github.com/hyprwm/Hyprland/discussions/13517
* event: refactor HookSystem into a typed event bus (#13333)Vaxry2026-02-221-22/+21
| | | | | Refactors the old HookSystem into a typed event bus with clear separation, discovery and types.
* layout: rethonk layouts from the ground up (#12890)Vaxry2026-02-211-3/+4
| | | | | Rewrites layouts to be much smaller, and deal with much less annoying BS. Improves the overall architecture, unifies handling of pseudotiling, and various other improvements.
* monitor: fix DS deactivation (#13188)UjinT342026-02-041-1/+3
|
* renderer: fix mouse motion in VRR (#12665)Szwagi2026-01-311-26/+26
|
* renderer: fix frame sync (#13061)UjinT342026-01-221-37/+37
| | | | | | | | | * fix commit timing timer * fix surface state lock/unlock * debug state sync todos * debug solitary vrr
* renderer: fix non shader cm reset (#13027)UjinT342026-01-211-1/+1
|
* core: optimize some common branchesVaxry2026-01-161-9/+9
|
* protocols/cm: Fix image description info events (#12781)UjinT342026-01-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | * fix image description info events * always send some target primaries * set edid values as target primaries and luminances * init monitor image description * set default luminances for tf * fix BT1886 luminances * fix mastering values and overrides * set maxCLL & maxFALL * typo * add FALL & CLL to preferred HDR image description * fix ref luminances
* fix: handle fullscreen windows on special workspaces (#12851)John Mylchreest2026-01-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix: handle fullscreen windows on special workspaces inFullscreenMode() only checked m_activeWorkspace, missing fullscreen windows on special workspaces. This caused crashes and incorrect behavior when fullscreen windows were on special workspaces. Changes: - inFullscreenMode() now checks special workspace first since it renders on top of regular workspaces - Added getFullscreenWindow() helper to safely get fullscreen window from either active or special workspace - Updated callers (shouldSkipScheduleFrameOnMouseEvent, Renderer, getFSImageDescription) to use the new helper - Reset m_aboveFullscreen for layer surfaces when opening, closing, or stealing special workspaces between monitors * test: add special workspace fullscreen detection tests Add tests for the new special workspace fullscreen handling introduced in the previous commit. The tests cover: 1. Fullscreen detection on special workspace - verifies that a window made fullscreen on a special workspace is correctly detected 2. Special workspace fullscreen precedence - verifies that when both regular and special workspaces have fullscreen windows, the special workspace window can be focused when the special workspace is opened 3. Toggle special workspace behavior - verifies that toggling the special workspace off properly hides it and returns focus to the regular workspace's fullscreen window These tests exercise the key code paths modified in the fix: - inFullscreenMode() checking special workspace first - getFullscreenWindow() helper returning correct window - Layer surface m_aboveFullscreen reset on special workspace toggle
* render/cm: various updates, remove old protocols (#12693)UjinT342025-12-271-6/+10
| | | | | | | | | | | | | * fix named primaries * default to gamma22 * mark mastering primaries as supported * remove xx-cm and frog support * immutable primaries and image descriptions * clang-format
* rules/windowRuleApplicator: fix min/max size effects (#12491)Vaxry2025-12-271-3/+3
| | | fixes #12412