summaryrefslogtreecommitdiff
path: root/src/render/Renderer.hpp
Commit message (Collapse)AuthorAgeFilesLines
* renderer: add more uniforms to the screen shader (#11986)Mozzarella322025-10-201-2/+7
| | | | | | | | | | | | These are: pointer_shape from the cursor-shape-v1 protocol prepared for v2, along with left_ptr...bottom_right_corner and killing (Hyprland specific) pointer_shape_previous with pointer_switch_time to blend between shapes pointer_size scaled size as used by the normal cursor pointer_pressed_positions[32] with pointer_pressed_times[32] and pointer_pressed_killed(32 bits) for click/touch animations and if they killed something pointer_inactive_timeout with pointer_last_active to smoothly fade the pointer out pointer_hidden to hide it when the cursor is hidden (excluding by cursor:invisible as this config value can be used to turn off the normal cursor, which is useful when drawing it with the screen shader)
* renderer: asynchronously load background tex (#11749)Vaxry2025-09-181-0/+1
| | | | | | | Bumps required hyprgraphics to 0.1.6 --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* syncobj: use rendernode for timelines (#11087)Tom Englund2025-08-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * syncobj: use rendernode for timelines use rendernode for timelines instead of the drmfd, some devices dont support to use the drmfd for this. * opengl: use rendernode if available use rendernode if available for CHyprOpenglImpl * MesaDRM: use the m_drmRenderNodeFD if it exist try use the rendernode we got from AQ if it exist. * linuxdmabuf: use rendernode if available use the rendernode if available already from AQ * syncobj: prefer rendernode over displaynode prefer the rendernode over the displaynode, and log a error if attempting to use the protocol without explicit sync support on any of the nodes. * syncobj: check support on both nodes always check support on both nodes always so it can be used later for preferring rendernode if possible in syncobj protocol. * syncobj: remove old var in non linux if else case remove old m_bDrmSyncobjTimelineSupported from non linux if else case that will fail to compile on non linux. the nodes sets support by default to false, and if non linux it wont check for support and set it to true. * build: bump aq requirement bump to 0.9.3 where rendernode support got added. * flake.lock: update * renderer: glfinish on software renderer software renderers apparently bug out on implicit sync, use glfinish as with nvidia case on implicit paths. * flake.lock: update --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* disable buffer readability checks on intel (#11515)Tom Englund2025-08-241-0/+2
| | | | | | | | | | | | * dmabuf: disable buffer read check on intel readability checks directly on buffer fds on some intel laptops is broken, see https://gitlab.freedesktop.org/drm/intel/-/issues/9415 * sync: use rvalue ref in addwaiter doonreadable use rvalue reference in addwaiter and doonreadable, because we store the function in the SReadableWaiter a lot of the time, move it into place there when that happends or let it go out of scope after function call.
* internal: Solitary clients with single subsurface & verbose ↵UjinT342025-08-221-1/+0
| | | | | solitary/tearing/DS checks (#11228) Adds more verbose checks for various conditional rendering mechanisms
* renderer: improve zoom in anims (#11453)Vaxry2025-08-161-2/+0
| | | Removes `animations:first_launch_animation` as it's useless now
* renderer: add popup fade-in-out (#11313)Vaxry2025-08-031-0/+3
| | | Adds xdg popup fade-in and fade-out
* config: disable hw on mgpu nvidia by default (#11018)Vaxry2025-07-161-0/+2
|
* session-lock: don't render workspaces when locked (#10865)Maximilian Seidler2025-07-141-0/+1
| | | Avoid rendering the workspace behind if we are locked
* Renderer: Implement new render scheduling (#10936)Vaxry2025-07-081-1/+2
| | | | | | | | | Implements a new render scheduling method, where we triple buffer when necessary. Enabled by default, improves FPS on underpowered devices. --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* config: nuke explicit_sync settingsVaxry2025-06-191-5/+0
| | | | were not used anymore, explicit is on by default
* internal: clean up dead snapshot codeVaxry2025-06-151-3/+2
|
* renderer: render blur on fade out (#10356)Vaxry2025-05-101-2/+10
|
* render: refactor class member vars (#10292)davc0n2025-05-051-20/+20
| | | | | * render: refactor class member vars * render: fix clang format
* render: properly release rendered buffers (#9807)Ikalco2025-04-301-11/+11
| | | | | | | | | * cleanup eglSync * properly release buffers in renderer * add renderingDoneCallback and use it in screencopy * use static constructor for CEGLSync
* layerrules: add abovelock to render above lockscreen (#9793)Virt2025-04-251-1/+1
|
* time: move to stl's clocks and move timerVaxry2025-04-161-23/+24
|
* renderer: disable explicit if aquamarine output doesn't support it (#9396) ↵Anthony Ruhier2025-02-131-1/+1
| | | | | | | | | | (#9398) The explicit settings ignore the aquamarine output.supportsExplicit attribute, which creates glitches on drivers not supporting explicit sync (example: freedreno). If the output has been set as not supporting explicit, disable the explicit settings.
* renderer/internal: stop using box pointersVaxry2025-01-261-1/+1
| | | | in favor of const refs
* input: pass touch events to lock screens (#9129)Junxuan Liao2025-01-251-1/+1
| | | | | * refactor: use weak pointers for session lock surfaces * input: pass touch events to lock screens
* core: move all shared_ptrs from the STL to hyprutils (#9143)Vaxry2025-01-231-1/+1
|
* renderer: Auto enable wide color gamut in HDR mode (#9090)UjinT342025-01-171-1/+0
|
* core: cleanup header includes (#9088)user1111111111111111111111111111111112025-01-171-0/+1
| | | Cleanup some unneeded includes to speed up compilation
* protocols: allow hyprland-toplevel-export to capture hidden windows (#9041)outfoxxed2025-01-121-1/+1
|
* renderer: Do not set hdr metadata unless needed (#9014)UjinT342025-01-121-0/+1
|
* core: refactor/improve monitor mode selection (#8804)Ikalco2024-12-281-1/+0
|
* Renderer: rewrite render scheduling (#8683)Vaxry2024-12-221-7/+10
| | | This rewrites renderer scheduling. Occlusion is now unified in a new Pass type.
* core: Add clang-tidy (#8664)Vaxry2024-12-071-12/+8
| | | | | This adds a .clang-tidy file for us. It's not a strict requirement to be compliant, but I tuned it to be alright.
* internal: cleanup CMonitor usage and fix a few ref hogsVaxry2024-10-261-2/+2
| | | | ref #8221
* internal: Move CMonitor to SP (#8178)Vaxry2024-10-191-29/+29
| | | | | * move monitors to sp * XD
* renderer: Fix resize artifacts (stretching, bumps) (#7499)Vaxry2024-10-051-16/+17
|
* config: Add a window rule to render while unfocused (#7582)Vaxry2024-08-301-0/+4
|
* renderer: better lockscreen dead behavior (#7574)Vaxry2024-08-291-0/+1
| | | | | --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* internal: introduce new types to avoid unsigned int rollover and signed int ↵Tom Englund2024-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | overflow (#7216) * framebuffer: avoid gluint overflow GLuint was being initialized to -1 and rolling over to unsigned int max, its defined behaviour but very unnecessery. add a bool and use it for checking if allocated or not. * opengl: avoid gluint rollover -1 rolls over to unsigned int max, use 0xFF instead. * core: big uint64_t to int type conversion there were a few uint64_t to int implicit conversions overflowing int and causing UB, make all monitor/workspaces/windows use the new typedefs. also fix the various related 64 to 32 implicit conversions going around found with -Wshorten-64-to-32
* renderer: Explicit sync fixes (#7151)Vaxry2024-08-061-0/+6
| | | | | Enables explicit sync by default for most platforms `misc:no_direct_scanout` -> `render:direct_scanout`
* protocols: move screencopy and toplevel export to hyprwayland-scanner (#7065)Ikalco2024-07-271-1/+1
| | | | | * move screencopy and toplevel export to hyprwayland-scanner * oops
* Core: Move to aquamarine (#6608)Vaxry2024-07-211-40/+40
| | | | | | | | | | | | | | Moves Hyprland from wlroots to aquamarine for the backend. --------- Signed-off-by: Vaxry <vaxry@vaxry.net> Co-authored-by: Mihai Fufezan <mihai@fufexan.net> Co-authored-by: Jan Beich <jbeich@FreeBSD.org> Co-authored-by: vaxerski <vaxerski@users.noreply.github.com> Co-authored-by: UjinT34 <41110182+UjinT34@users.noreply.github.com> Co-authored-by: Tom Englund <tomenglund26@gmail.com> Co-authored-by: Ikalco <73481042+ikalco@users.noreply.github.com> Co-authored-by: diniamo <diniamo53@gmail.com>
* core: Move to hyprutils for MathVaxry2024-06-191-1/+1
| | | | | | Moves CRegion, CBox and Vector2D over to hyprutils. Requires hyprutils>=0.1.4
* vrr: add option to fix mouse breaking vrr (#6483)UjinT342024-06-141-1/+1
| | | | | | | | | | | | | | | * option to fix mouse breaking vrr * skip damage on mouse move * remove this-> & cleanup * add cursor:min_refresh_rate to avoid cursor freezing * run clang-format --------- Co-authored-by: UjinT34 <ujin@uvpn.ru>
* core: fix a few small memory leaks on exit (#6470)Tom Englund2024-06-131-0/+1
| | | | | | | | | | | | | | | | | | | | * renderer: add destructor and destroy event source add destructor and destroy the event source. one less leak on exit of compositor reported by asan. * compositor: cleanup eventloop on exit destruct hyprctl to release the event sources, and properly cleanup the event loop on exit of compositor. less leaks on exit reported by asan * threadmgr: destroy event source on destruction destroy the event source on destruction. * eventloopmgr: reset eventloopmgr on exit aswell reset the eventloopmanager on exit of compositor and free the leaking last idle frame on monitor destroy.
* wayland/core: move to new impl (#6268)Vaxry2024-06-081-8/+11
| | | | | * wayland/core/dmabuf: move to new impl it's the final countdown
* layer-shell: move to new implVaxry2024-05-091-1/+1
| | | | Also bumps the hw-s dep
* cursor: move to a hyprland implVaxry2024-05-091-13/+12
| | | | | | | This moves wlr_cursor to a completely new impl mostly under CPointerManager Also adds beginSimple to OpenGL for simple render passes (e.g. cursor)
* output-management: move to new implVaxry2024-05-031-1/+0
|
* layerSurface: refactor/move to a memory-safe implVaxry2024-04-301-2/+2
| | | | | Makes all the pointers smart to avoid memory issues Refactors layerSurface code to live inside desktop/layersurface
* internal: Window storage rework - part 1 (#5762)Vaxry2024-04-271-14/+14
| | | | | | | | | | | | | | | | | * Window storage rework - part 1 * format * remove useless include * fix pch * format * fix crash in dwindle * fix vram leak * prefer .expired() for bool checks
* renderer: send frame events to apps on empty damage rendersVaxry2024-04-231-0/+1
| | | | fixes #5711
* tearing-control: hyprland impl (#5655)Vaxry2024-04-191-10/+8
| | | | | * tearing: hl impl * format
* Workspace/core: Refactor workspace storage (#5380)Vaxry2024-04-021-6/+6
| | | | | * refactor workspaces to use ptrs * clang-format
* renderer/animations: Fix various inaccurate damage tracking issues and ↵thejch2024-03-311-2/+2
| | | | offsets (#5297)