https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=267606
--- Comment #49 from Yusuf Khan <[email protected]> ---
(In reply to Sergiy from comment #48)
I think I will have to work on it myself on hardware as I dont have enough X
knowledge to do this without a high amount of trial and error. Your OpenBSD
logs are showing that your pruning more than just bad panel dimensions(which I
probably should have expected), so the small hack job diff I sent you last time
wont work.
As you seem to have emptied your OpenBSD drive, I have a diff that is simply
just what the intel driver uses to do it but its *simply copied code from the
intel driver* and is by *no means recommended to use on your computer* due to
my inexperience with X. I will hopefully get hardware to test this later on and
fix it up.
The bellow is a diff that should, if the above warnings are read, be run
without any other modifications to mode validation.
From 6f0ec68b9fc4c0f062e483a96665fbcb378408ea Mon Sep 17 00:00:00 2001
From: Yusuf Khan <[email protected]>
Date: Mon, 29 Jan 2024 23:52:34 -0800
Subject: [PATCH xf86-video-nv] Intel import fix
---
src/nv_driver.c | 41 +++++++++++++++++++++++++++++++++--------
1 file changed, 33 insertions(+), 8 deletions(-)
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 134da6a..6c40ebe 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -1976,14 +1976,39 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
if (i > 0)
VBESetModeParameters(pScrn, pNv->pVbe);
} else {
- i = xf86ValidateModes(pScrn, pScrn->monitor->Modes,
- pScrn->display->modes, clockRanges,
- NULL, 256, max_width,
- 512, 128, max_height,
- pScrn->display->virtualX,
- pScrn->display->virtualY,
- pNv->ScratchBufferStart,
- LOOKUP_BEST_REFRESH);
+ DisplayModePtr i, m, p = NULL;
+ int max_x = 0, max_y = 0;
+ float max_vrefresh = 0.0;
+
+ for (m = pScrn->monitor->Modes; m; m = m->next) {
+ if (m->type & M_T_PREFERRED)
+ p = m;
+ max_x = max(max_x, m->HDisplay);
+ max_y = max(max_y, m->VDisplay);
+ max_vrefresh = max(max_vrefresh, xf86ModeVRefresh(m));
+ }
+
+ max_vrefresh = max(max_vrefresh, 60.0);
+ max_vrefresh *= (1 + SYNC_TOLERANCE);
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,6,99,0,0)
+ pScrn->modePool = xf86GetDefaultModes();
+#else
+ pScrn->modePool = xf86GetDefaultModes(0,0);
+#endif
+ xf86ValidateModesSize(pScrn, pScrn->modePool, max_width, max_height,
0);
+
+ for (i = m; i; i = i->next) {
+ if (xf86ModeVRefresh(i) > max_vrefresh)
+ i->status = MODE_VSYNC;
+ if (p && i->HDisplay >= p->HDisplay &&
+ i->VDisplay >= p->VDisplay &&
+ xf86ModeVRefresh(i) >= xf86ModeVRefresh(p))
+ i->status = MODE_VSYNC;
+ }
+
+ xf86PruneInvalidModes(pScrn, &m, FALSE);
+
+ pScrn->monitor->Modes = xf86ModesAdd(pScrn->monitor->Modes, m);
}
if (i < 1 && pNv->FBDev) {
--
2.43.0
TLDR; Patch wont work on FreeBSD based on your OpenBSD output, potential
diff(probably something wrong with it due to my X experience) that you probably
shouldnt apply unless your actually desperate, and I will hopefully try to
reproduce the issue myself.
--
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.