xf86-video-nv-bug519261-increase-virtual.diff
Index: xf86-video-nv-2.1.14/src/g80_driver.c
===================================================================
--- xf86-video-nv-2.1.14/src/g80_driver.c
+++ xf86-video-nv-2.1.14/src/g80_driver.c
@@ -390,6 +390,22 @@ G80PreInit(ScrnInfoPtr pScrn, int flags)
/* Create the crtcs */
G80DispCreateCrtcs(pScrn);
+ /* Unless we're able to shrink/enlarge FB on the fly (GEM etc.), allocate
+ * large enough (TM) virtual size */
+ if ( (!pScrn->display->virtualX || !pScrn->display->virtualY) &&
+ ! (pNv->NoAccel || pNv->AccelMethod == EXA)) {
+ /* No need to accomodate for 3D buffers - no DRI anyway... */
+ if (2 * 1920*1920 * (pScrn->bitsPerPixel/8) <= pScrn->videoRam * 1024) {
+ /* Fits on 32MB and up */
+ pScrn->display->virtualX = 2 * 1920;
+ pScrn->display->virtualY = 1920;
+ } else if (2 * 1680*1280 * (pScrn->bitsPerPixel/8) <= pScrn->videoRam * 1024) {
+ /* Fits on 16MB and up */
+ pScrn->display->virtualX = 2 * 1680;
+ pScrn->display->virtualY = 1280;
+ }
+ }
+
/* We can grow the desktop if XAA is disabled */
if(!xf86InitialConfiguration(pScrn, pNv->NoAccel || pNv->AccelMethod == EXA)) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
Это драйвер без поддержки 3D-ускорения. В комментариях к коду написано: «так как мы не можем изменить разрешение фреймбуфера „на лету“, то увеличиваем максимальное разрешение». И чуть дальше «так как драйвер всё равно не поддерживает DRI, то увеличиваем количество памяти для вывода изображения». Если перефразировать, то «раз уж 3D-графику мы моделировать всё равно не умеем, то почему бы не увеличить максимальное разрешение засчёт этой памяти?»
Так вот. Тут у Эфириума растёт DAG, через неделю он будет иметь размер 4 Гб, и поэтому 4-гиговые GPU «пролетают». ethminer мне говорит, что осталось 8 Мб свободно (в течение месяца он сообщал 30, 20, 15 и т.д.). Можно ли пропатчить fglrx так, чтобы он картинку выводит в 640x480, а для OpenCL дал больше памяти? Если удастся получить хотя бы 30 Мб, то это майнинг ещё в течение месяца
У fglrx закрыт код, но есть «обвязка», код которой можно редактировать