Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various cursor issues with cpu_buffer (size, transform, position) #8993

Open
3 of 6 tasks
itouchdennis opened this issue Jan 8, 2025 · 23 comments
Open
3 of 6 tasks
Labels
bug Something isn't working
Milestone

Comments

@itouchdennis
Copy link

itouchdennis commented Jan 8, 2025

Already reported ? *

  • I have searched the existing open and closed issues.

Regression?

Definitely a regression - something broke after update (requires bisect)

System Info and Hyprland Version

System/Version info
Hyprland 0.46.0 built from branch main at commit 983bc067dac2e737bc724721c79d87cd81f27501  (opengl: fix crash on null fb stencil op).
Date: Wed Jan 8 12:34:43 2025
Tag: v0.46.0-95-g983bc067, commits: 5650
built against:
 aquamarine 0.6.0
 hyprlang 0.6.0
 hyprutils 0.3.3
 hyprcursor 0.1.11
 hyprgraphics 0.1.1


no flags were set


System Information:
System name: Linux
Node name: datesli-ms7d25
Release: 6.12.8-zen1-1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Thu, 02 Jan 2025 22:52:21 +0000


GPU information: 
00:02.0 Display controller [0380]: Intel Corporation AlderLake-S GT1 [8086:4680] (rev 0c)
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070 Ti] [10de:2482] (rev a1) (prog-if 00 [VGA controller])
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64  565.77  Release Build  (archlinux-builder@datesli-ms7d25)  


os-release: NAME="EndeavourOS"
PRETTY_NAME="EndeavourOS"
ID="endeavouros"
ID_LIKE="arch"
BUILD_ID="2023.11.17"
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://endeavouros.com"
DOCUMENTATION_URL="https://discovery.endeavouros.com"
SUPPORT_URL="https://forum.endeavouros.com"
BUG_REPORT_URL="https://forum.endeavouros.com/c/general-system/endeavouros-installation"
PRIVACY_POLICY_URL="https://endeavouros.com/privacy-policy-2"
LOGO="endeavouros"


plugins:

Description

I use a 2. display tilted on top of my main display, usually its working with this settings:

hyprctl keyword monitor HDMI-A-1, 1920x1080@144,830x-1080, 1,transform,2

I didn't updated the system since last Wednesday, came back updated all to the newest version and now the cursor is not tilted anymore and also not really working on the flipped monitor.
The mouse won't click and has also an inaccessible area on the "top" of the screen.

I have a Nvidia Card, tried to enable / disable HW cursors, but this seems not to fix the issue.

How to reproduce

  1. Start Hyprland
  2. Flip screen
  3. Setup a display with transform, 2 (hyprctl keyword monitor HDMI-A-1, 1920x1080@144,830x-1080, 1,transform,2)
  4. Move mouse to the 2. display and see the wrong mouse tilt.

Attach not paste

  • I understand that all text files must be attached, and not pasted directly. If not respected, this issue will likely get closed as spam

Checklist of files to include below

  • Hyprland config - hyprctl systeminfo -c (always include)
  • Crash report (always include in case of crash)
  • Video (always include in case of a visual bug)
  • Logs (might contain useful info such as errors)

Additional info & File uploads

Screenshot

photo_2025-01-08_16-11-21

###########
Systeminfo -c

https://pastebin.pl/view/1542bcd6

@itouchdennis itouchdennis added the bug Something isn't working label Jan 8, 2025
@jacobrreed
Copy link

  • seeing same issue, on my vertical monitor my hyprcursor is rotated 90 degrees
  • also my ENV to set hyprcursor seems to not work on start, the cursor looks like a glitchy block but if I set it via hyprcursor setcursor with the same variables it works fine after
  • possibly related, on my vertical monitor I can't move the cursor past the left 20% of the monitor, like an invisible wall

@itouchdennis
Copy link
Author

I switched back to the version I used before via git checkout f3c49c1

And rebuild it from source, here everything is working. Might also work in newer versions, but the newest once is definitely kinda weird, at least with my setup + tilted screen.

@UjinT34
Copy link
Contributor

UjinT34 commented Jan 8, 2025

cursor:no_hardware_cursors = 1 it default now to use cursor:use_cpu_buffer on nvidia and that doesn't support rotations.

https://drmdb.emersion.fr/properties/4008636142/rotation might not be supported for the cursor plane so the texture copy itself should be rotated.

@jacobrreed
Copy link

ya setting

cursor {
  no_hardware_cursors = true
}

fixes the problem introduced in b320bc2dc6e308360936ce4396010359b74558bf

@vaxerski
Copy link
Member

vaxerski commented Jan 8, 2025

hm, we should just fix the rendering, probably. CPU rotating wohoo that's gonna be fast...

@vaxerski vaxerski added this to the 0.47.0 milestone Jan 8, 2025
@vaxerski
Copy link
Member

vaxerski commented Jan 8, 2025

is it in the correct place though? Can't test, obviously, I dont use green gpus

@vaxerski
Copy link
Member

vaxerski commented Jan 8, 2025

patch.txt
try ths

@jacobrreed
Copy link

is it in the correct place though? Can't test, obviously, I dont use green gpus

It's in the correct place, but on rotated monitors its not rotated. i.e a monitor rotated 90 degrees, the cursor is also rotated 90degrees so its sideways
Maybe unrelated but with the above config works, if no_hardware_cursors=false or is not set, hyprcursor graphic is very glitchy looking and pixelated

@jacobrreed
Copy link

patch.txt try ths

testing now, uno momento

@jacobrreed
Copy link

jacobrreed commented Jan 8, 2025

@vaxerski Ya this fixes hyprcursor rotation for me

Probably a separate issue but not sure why but my cursor is glitchy looking and im using

# Hyprcursor
env = HYPRCURSOR_THEME,Dracula-cursors
env = HYPRCURSOR_SIZE,24

in my config, on launch its messed up
but if I run hyprctl setcursor Dracula-cursors 24 its not glitchy anymore

Even with the above patch given though, I still cant move my mouse to the first like 20-30% of the rotated monitor, like an invisible wall is present

image

again, setting no_hardware_cursor = true fixes that issue

@UjinT34
Copy link
Contributor

UjinT34 commented Jan 8, 2025

Nvidia's buffer is 256x256 and the cursor is in the wrong corner of that buffer.

@vaxerski
Copy link
Member

vaxerski commented Jan 8, 2025

yep thats what I thought. That's why I asked if it's in the right place LOL

@jacobrreed
Copy link

Ohhh, I guess that maybe explains it lol

@itouchdennis
Copy link
Author

Can confirm, no_hardware_cursor = true mitigates the issue, the patch allows the cursor to be aligned correctly when no_hardware_cursor = false but as mentioned like 20% of the screen aren't reachable anymore.

@vaxerski
Copy link
Member

vaxerski commented Jan 8, 2025

patch.txt
how about this?

@itouchdennis
Copy link
Author

Not sure if its my setup, but after the newest patch on the newest commit I'll get Error 2 on make all && sudo make install

https://pastebin.com/bFJHBDrz

@vaxerski
Copy link
Member

vaxerski commented Jan 9, 2025

you truncated the output, please post the entire thing

@LongLeCE
Copy link

@itouchdennis have you tried setting no_hardware_cursors = false and use_cpu_buffer = 0? I have an nvidia card and it works fine. Not sure why the wiki said use_cpu_buffer is required for nvidia.

@UjinT34
Copy link
Contributor

UjinT34 commented Jan 10, 2025

@itouchdennis have you tried setting no_hardware_cursors = false and use_cpu_buffer = 0? I have an nvidia card and it works fine. Not sure why the wiki said use_cpu_buffer is required for nvidia.

It falls back to sw automatically without use_cpu_buffer

@itouchdennis
Copy link
Author

you truncated the output, please post the entire thing

Here is the complete output:
https://pastebin.com/AXjbCpHz

@itouchdennis
Copy link
Author

use_cpu_buffer

This setting "fixes" the tilted cursor and gives me back the 20% of inaccessible space, but feels like a 5 FPS diashow at my setup, if I set 1 or 2 its fine:

cursor {
no_hardware_cursors = false
use_cpu_buffer = 0
}

I rather have no_hardware_cursors = true for now

@vaxerski vaxerski changed the title Hyprland cursor not tilted anymore on tilted monitor Various cursor issues with cpu_buffer (size, transform, position) Jan 12, 2025
@vaxerski
Copy link
Member

Unifying this issue. Will be fixed by rewriting the texture handling to use cairo, instead of a janky memcpy calculator

@vaxerski
Copy link
Member

I will probably do it in a week or two, if anyone wants to take a stab at it before me feel free.

SIMULATAN added a commit to SIMULATAN/dotfiles that referenced this issue Jan 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants