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

Support for hyperv_drm kernel module under Hyper-v in Windows #6053

Open
z3ch5 opened this issue May 13, 2024 · 11 comments
Open

Support for hyperv_drm kernel module under Hyper-v in Windows #6053

z3ch5 opened this issue May 13, 2024 · 11 comments
Labels
bug Something isn't working stale Not much going on

Comments

@z3ch5
Copy link

z3ch5 commented May 13, 2024

Hyprland Version

Tested on NIXOS unstable + stable verison 23.11

Bug or Regression?

Bug

Description

I would like to see hyprland support under Hyper-v with hyperv_drm,
Hyprland works okay with the old dated kernel module "hyperv_fb", but now it is outdated because it suffers from frame rates drop, hyperv_drm works like a charm and to support this protocol is a game changer for hyprland users, who have high end GPU and want to have windows as host machine.
I really hope this scope would get serious attention from the maintainers, because the users could be good enough.

How to reproduce

using NixOS
boot = {
blacklistedKernelModules = [ "hyperv_fb" ]; # force to use hyperv_drm, because hyper_fb had low frame rates (see github issue)
initrd.kernelModules = [
"hv_vmbus"
"hv_storvsc"
];
virtualisation.hypervGuest = {
enable = true;
};
};

Crash reports, logs, images, videos

No response

@z3ch5 z3ch5 added the bug Something isn't working label May 13, 2024
@vaxerski
Copy link
Member

I don't think it's up to us to support but rather wlroots.

At any rate, what's the point?

@z3ch5
Copy link
Author

z3ch5 commented May 15, 2024

The difference is huge between the two drivers, and the only option for users at the moment is Gnome.
I opened an issue for wlroots devs, for the people who are interested following the issue here is the link:
https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3842

@The-Briel-Deal
Copy link
Contributor

It would be immensely helpful if you could provide a version number or commit this broke. Try following this guide to bisect in order to find the version/commit this broke for hyprland/wlroots.

Unfortunately I don't have a windows machine handy but if you can find the breaking commit this should be pretty easy to fix (: I'm happy to take a look if you can find the breaking commit.

@z3ch5
Copy link
Author

z3ch5 commented May 16, 2024

Thank you guys for taking this serious, adding the line "debug:disable_logs = false" has no effect what so ever,
it is worth to mention that SwayWM is working fine, so I am not sure if it is a wlroots bug anymore.

I guess bisect won't help, as so far I know, there is no version for me that works.

And I am now having difficulties getting the Hyprland to build in debug mode, as NixOS fails to build under the flake, which actually should be also maintained officially by you, not sure if I should open another issue for it.

this is my hyprland nixos config:

{ config, pkgs, lib, ... }:
{
nix.settings = {
substituters = [
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
};
programs.hyprland = {
enable = true;
};
environment.systemPackages = with pkgs ; [
(pkgs.hyprland.override { # or inputs.hyprland.packages.${pkgs.system}.hyprland
debug = true;
})
];
services.displayManager.sessionPackages = [ pkgs.hyprland ];
}

My flake.nix is:

{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
hyprland.url = "github:hyprwm/Hyprland";
};

outputs = inputs@{
self,
nixpkgs,
nixpkgs-stable,
hyprland,
...
}: {
nixosConfigurations = {
userr = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = {
pkgs-stable = import nixpkgs-stable {
inherit system inputs;
config.allowUnfree = true;
};
};
modules = [
hyprland.nixosModules.default
./configuration.nix
];
};
};
};
}

The error I am getting while building:
> In file included from /nix/store/s3pvsv4as7mc8i2nwnk2hnsyi2qdj4bq-glibc-2.39-31-dev/include/bits/libc-header-start.h:33,
> from /nix/store/s3pvsv4as7mc8i2nwnk2hnsyi2qdj4bq-glibc-2.39-31-dev/include/stdint.h:26,
> from /nix/store/9hgsinpfgyvsd92v0wlvmxv9wnaal68r-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/stdint.h:9,
> from ../subprojects/udis86/libudis86/types.h:52,
> from ../subprojects/udis86/libudis86/decode.h:29,
> from ../subprojects/udis86/libudis86/itab.c:2:
> /nix/store/s3pvsv4as7mc8i2nwnk2hnsyi2qdj4bq-glibc-2.39-31-dev/include/features.h:414:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
> 414 | # warning _FORTIFY_SOURCE requires compiling with optimization (-O)
> | ^~~~~~~
> ninja: build stopped: subcommand failed.

@vaxerski
Copy link
Member

@fufexan for nix

@vaxerski
Copy link
Member

generally if sway works it could be an issue within hyprland, but I have no experience with hyper-v and little interest in supporting windows vms

@z3ch5
Copy link
Author

z3ch5 commented May 16, 2024

I am not fan of windows products either, but I have to say, Hyper-V's performance is really the best, and I am not feeling any frame rate drops whatsoever, otherwise I'm forced to go back to Sway after months and years configuring my Hyperland, I hope there would be a solution... Maybe if I found the time I would contribute to do a patch myself.

@fufexan
Copy link
Member

fufexan commented May 16, 2024

Change the hyprland input url to the one in the pinned issue.

@z3ch5
Copy link
Author

z3ch5 commented May 16, 2024

@fufexan I am trying to change the commit, inputs.hyprland.url = "github:hyprwm/Hyprland/{here the commits}";
but I keep build the "hyprland-debug-0.39.1" version, and here is how I build Hyprland

environment.systemPackages = with pkgs ; [
(pkgs.hyprland.override {
debug = true;
})
];

Can you guide me how to build another version of hyperland-debug in flakes?

@fufexan
Copy link
Member

fufexan commented May 16, 2024

That's not the way to do it.

Change the input to inputs.hyprland.url = "git+https://github.com/hyprwm/hyprland?submodules=1";. Optionally append &ref=<commit>.

In your config, set

programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland.override { debug = true; };

@z3ch5
Copy link
Author

z3ch5 commented May 17, 2024

@fufexan I was able to build, thanks to you, but I'm not sure logs keep complaining about not enabling logs
I added these two lines at the beggining
debug:enable_stdout_logs = true
debug:disable_logs = false
it seems to me, the drm is not supported
@vaxerski any clue? thanks for hyprland by the way.
I enabled WLR_RENDERER_ALLOW_SOFTWARE as requested, the result was very unpleasant

ls /dev/dri

/dev/dri/card1

dmesg | grep drm

[ 0.096178] ACPI: bus type drm_connector registered
[ 0.096337] [drm] Initialized simpledrm 1.0.0 20200625 for simple-framebuffer.0 on minor 0
[ 0.096656] simple-framebuffer simple-framebuffer.0: [drm] fb0: simpledrmdrmfb frame buffer device
[ 12.454766] systemd[1]: Starting Load Kernel Module drm...
[ 12.464756] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 12.464853] systemd[1]: Finished Load Kernel Module drm.
[ 12.560339] hv_vmbus: registering driver hyperv_drm
[ 12.563726] hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] Synthvid Version major 3, minor 5
[ 12.585003] [drm] Initialized hyperv_drm 1.0.0 2020 for 5620e0c7-8062-4dce-aeb7-520c7ef76171 on minor 1
[ 12.587812] hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] fb0: hyperv_drmdrmfb frame buffer device


Hyprland Crash Report

I tried so hard, and got so far...

Hyprland received signal 6(ABRT)
Version: 7173f0c
Tag:

System info:
System name: Linux
Node name: user
Release: 6.8.6-zen1
Version: #1-NixOS ZEN SMP PREEMPT_DYNAMIC Tue Jan 1 00:00:00 UTC 1980

GPU:

os-release:
ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.05.20240515.33d1e75"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.05 (Uakari)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.05 (Uakari)"
VERSION_CODENAME=uakari
VERSION_ID="24.05"
Backtrace:
# | /run/current-system/sw/bin/Hyprland(_Z12getBacktracev+0x48) [0x6976e8]
getBacktrace()
??:?
#1 | /run/current-system/sw/bin/Hyprland(_ZN13CrashReporter18createAndSaveCrashEi+0x998) [0x60cea8]
CrashReporter::createAndSaveCrash(int)
??:?
#2 | /run/current-system/sw/bin/Hyprland(_Z25handleUnrecoverableSignali+0x5f) [0x5966ef]
handleUnrecoverableSignal(int)
??:?
#3 | /nix/store/apab5i73dqa09wx0q27b6fbhd1r18ihl-glibc-2.39-31/lib/libc.so.6(+0x3ff30) [0x74ced2252f30]
??
??:0
#4 | /nix/store/apab5i73dqa09wx0q27b6fbhd1r18ihl-glibc-2.39-31/lib/libc.so.6(+0x8fefc) [0x74ced22a2efc]
??
??:0
#5 | /nix/store/apab5i73dqa09wx0q27b6fbhd1r18ihl-glibc-2.39-31/lib/libc.so.6(gsignal+0x16) [0x74ced2252e86]
??
??:0
#6 | /nix/store/apab5i73dqa09wx0q27b6fbhd1r18ihl-glibc-2.39-31/lib/libc.so.6(abort+0xd7) [0x74ced223b935]
??
??:0
#7 | /nix/store/xq4l4d5yva871mbqf99k1d40pqir490c-gcc-13.2.0-lib/lib/libstdc++.so.6(+0xacc0b) [0x74ced24acc0b]
??
??:0
#8 | /nix/store/xq4l4d5yva871mbqf99k1d40pqir490c-gcc-13.2.0-lib/lib/libstdc++.so.6(+0xbc21a) [0x74ced24bc21a]
??
??:0
#9 | /nix/store/xq4l4d5yva871mbqf99k1d40pqir490c-gcc-13.2.0-lib/lib/libstdc++.so.6(+0xbc285) [0x74ced24bc285]
??
??:0
#1 | /nix/store/xq4l4d5yva871mbqf99k1d40pqir490c-gcc-13.2.0-lib/lib/libstdc++.so.6(+0xbc4d7) [0x74ced24bc4d7]
??
??:0
#11 | /run/current-system/sw/bin/Hyprland() [0x50741d]
throwError(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) [clone .cold]
??:?
#12 | /run/current-system/sw/bin/Hyprland(_ZN11CCompositor10initServerEv+0x2ca) [0x5ada5a]
CCompositor::initServer()
??:?
#13 | /run/current-system/sw/bin/Hyprland(main+0x7f9) [0x552c49]
main
??:?
#14 | /nix/store/apab5i73dqa09wx0q27b6fbhd1r18ihl-glibc-2.39-31/lib/libc.so.6(+0x2a10e) [0x74ced223d10e]
??
??:0
#15 | /nix/store/apab5i73dqa09wx0q27b6fbhd1r18ihl-glibc-2.39-31/lib/libc.so.6(__libc_start_main+0x89) [0x74ced223d1c9]
??
??:0
#16 | /run/current-system/sw/bin/Hyprland(_start+0x25) [0x596555]
_start
??:?

Log tail:

[LOG] Creating the EventLoopManager!
[LOG] Creating the HookSystem!
[LOG] Creating the ProtocolManager!
[LOG] [WLSeat] Registered global
[LOG] [WLDataDevice] Registered global
[LOG] [TearingControl] Registered global
[LOG] [FractionalScale] Registered global
[LOG] [XDGOutput] Registered global
[LOG] [CursorShape] Registered global
[LOG] [IdleInhibit] Registered global
[LOG] [RelativePointer] Registered global
[LOG] [XDGDecoration] Registered global
[LOG] [AlphaModifier] Registered global
[LOG] [GammaControl] Registered global
[LOG] [ForeignToplevel] Registered global
[LOG] [PointerGestures] Registered global
[LOG] [ForeignToplevelWlr] Registered global
[LOG] [ShortcutsInhibit] Registered global
[LOG] [TextInputV3] Registered global
[LOG] [PointerConstraints] Registered global
[LOG] [OutputPower] Registered global
[LOG] [XDGActivation] Registered global
[LOG] [IdleNotify] Registered global
[LOG] [SessionLock] Registered global
[LOG] [IMEv2] Registered global
[LOG] [VirtualKeyboard] Registered global
[LOG] [VirtualPointer] Registered global
[LOG] [OutputManagement] Registered global
[LOG] [ServerDecorationKDE] Registered global
[LOG] [FocusGrab] Registered global
[LOG] [TabletV2] Registered global
[LOG] [LayerShell] Registered global
[LOG] [Presentation] Registered global
[LOG] [XDGShell] Registered global
[LOG] [DataDeviceWlr] Registered global
[LOG] [PrimarySelection] Registered global
[LOG] ToplevelExportManager started successfully!
[LOG] TextInputV1Manager started successfully!
[LOG] GlobalShortcutsManager started successfully!
[LOG] ScreencopyProtocolManager started successfully!
[LOG] Creating the SeatManager!
[LOG] Creating the KeybindManager!
[LOG] Creating the AnimationManager!
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 13.98µs. Estimated average calc time: 0.02µs.
[LOG] Creating the ConfigManager!
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 7.57µs. Estimated average calc time: 0.02µs.
[LOG] Using config: /home/user/.cache/wal/hyprland.conf
[INFO] !!!!HEY YOU, YES YOU!!!!: further logs to stdout / logfile are disabled by default. BEFORE SENDING THIS LOG, ENABLE THEM. Use debug:disable_logs = false to do so: https://wiki.hyprland.org/Configuring/Variables/#debug
[LOG] Creating the CHyprError!
[LOG] Creating the LayoutManager!
[LOG] Creating the TokenManager!
[LOG] [hookSystem] New hook event registered: preConfigReload
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 6.69µs. Estimated average calc time: 0.02µs.
[LOG] Using config: /home/user/.cache/wal/hyprland.conf
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 430.01µs. Estimated average calc time: 0.04µs.
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 6.28µs. Estimated average calc time: 0.02µs.
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 6.28µs. Estimated average calc time: 0.02µs.
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 6.32µs. Estimated average calc time: 0.02µs.
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 6.32µs. Estimated average calc time: 0.02µs.
[LOG] Creating the PointerManager!
[render/egl.c:473] Failed to get DRM device: Invalid argument
[render/egl.c:319] Software rendering detected, please use the WLR_RENDERER_ALLOW_SOFTWARE environment variable to proceed
[render/egl.c:571] Failed to initialize EGL context
[render/gles2/renderer.c:503] Could not initialize EGL
[render/egl.c:473] Failed to get DRM device: Invalid argument
[render/egl.c:319] Software rendering detected, please use the WLR_RENDERER_ALLOW_SOFTWARE environment variable to proceed
[render/egl.c:571] Failed to initialize EGL context
[render/gles2/renderer.c:503] Could not initialize EGL
[CRITICAL] m_sWLRRenderer was NULL! This usually means wlroots could not find a GPU or enountered some issues.
[CRITICAL] Critical error thrown: wlr_gles2_renderer_create_with_drm_fd() failed!

@vaxerski vaxerski added the stale Not much going on label Jul 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working stale Not much going on
Projects
None yet
Development

No branches or pull requests

4 participants