Stability improved. Latency reduced. Also fixes #76.
This commit is contained in:
parent
2afa920ce7
commit
905823610d
31
bin/nvrun
31
bin/nvrun
@ -2,30 +2,33 @@
|
||||
|
||||
PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
||||
|
||||
TIMEOUT=20 # wait timeout for X server start
|
||||
TIMEOUT=4 # wait timeout for X server start
|
||||
let INTEL_IF_FAIL=1 # run on Intel if nVidia fails
|
||||
|
||||
LOCK_FILE=/tmp/.snail.lock
|
||||
FIFO_FILE=/tmp/.snail.fifo
|
||||
|
||||
{
|
||||
echo -n > $FIFO_FILE &
|
||||
flock -w $TIMEOUT -s 9
|
||||
flock -w 0 -s 9
|
||||
if [ 0 -ne $? ]; then
|
||||
(nohup echo -n > $FIFO_FILE &>/dev/null)&
|
||||
flock -w $TIMEOUT -s 9
|
||||
fi
|
||||
|
||||
if [ 0 -eq $? ]; then
|
||||
echo "Running $@ on nVidia"
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail
|
||||
LD_PRELOAD="/usr/lib/snail/lib32/libGL.so.1 \
|
||||
/usr/lib/snail/lib32/libnvidia-tls.so \
|
||||
/usr/lib/snail/lib32/libnvidia-core.so" \
|
||||
snail.vglrun -d :8293 "$@" 2>/dev/null
|
||||
echo "Application $@ was performed on nVidia"
|
||||
echo "Running $@ on nVidia"
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail
|
||||
LD_PRELOAD="/usr/lib/snail/lib32/libGL.so.1 \
|
||||
/usr/lib/snail/lib32/libnvidia-tls.so \
|
||||
/usr/lib/snail/lib32/libnvidia-core.so" \
|
||||
snail.vglrun -d :8293 "$@" 2>/dev/null
|
||||
echo "Application $@ was performed on nVidia"
|
||||
|
||||
elif [ 0 -ne $INTEL_IF_FAIL ]; then
|
||||
echo "Failed to run $@ on nVidia ;-("
|
||||
# echo "Running $@ on Intel"
|
||||
# "$@"
|
||||
# echo "Application $@ was performed on Intel"
|
||||
echo "Failed to run $@ on nVidia ;-("
|
||||
# echo "Running $@ on Intel"
|
||||
# "$@"
|
||||
# echo "Application $@ was performed on Intel"
|
||||
fi
|
||||
|
||||
flock -u 9
|
||||
|
@ -29,10 +29,12 @@ rm -f $FIFO_FILE && mkfifo --mode 660 $FIFO_FILE && chgrp video $FIFO_FILE # cre
|
||||
|
||||
while [ 1 ]; do
|
||||
read <$FIFO_FILE
|
||||
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||
snail.nv_pwr_on && $XSERVER_START_CMD # starting X server
|
||||
flock -u 9
|
||||
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||
flock 9
|
||||
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||
$XSERVER_STOP_CMD && snail.nv_pwr_off # stopping X server
|
||||
done
|
||||
} 9>$LOCK_FILE
|
||||
|
@ -8,7 +8,7 @@ lsmod | grep '^nouveau ' >/dev/null && rmmod -f nouveau &>/dev/null
|
||||
if [ -f /proc/acpi/bbswitch ]; then
|
||||
let tries=$TRIES
|
||||
while [ 0 -lt $tries ]; do
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo 'OFF' > /proc/acpi/bbswitch \
|
||||
&& exit 0
|
||||
|
||||
@ -25,77 +25,77 @@ if [ -f /proc/acpi/call ]; then
|
||||
while [ 0 -lt $tries ]; do
|
||||
case "$model" in
|
||||
M11XR2)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.P0P2.PEGP.NVOP 0 0x100 0x1A {255,255,255,255}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.P0P2.PEGP._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
1015PN)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\OSGS 0x03' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
1215N)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.P0P4.GFX0._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.P0P4.GFX0._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
K42Jc|K52Jc|N53Jf|N53Jg|N71Jv|N73Jf|P52Jc|PL80Jt|U30Jc|U33Jc|U35Jc|U36Jc|UL80Jt)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
N61Jv|N73Sv)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEGR.GFX0.DOFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
P31Jg)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
U43Jc)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.RP00.VGA._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.RP00.VGA._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
UL30Vt)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
E6420)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
InspironN5110|XPSL702X)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
Vostro3300|Vostro3500)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
XPS15)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
ThinkPadT410)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
;;
|
||||
ThinkPadT420)
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo '\_SB.PCI0.PEG.VID._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
@ -114,7 +114,7 @@ fi
|
||||
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
let tries=$TRIES
|
||||
while [ 0 -lt $tries ]; do
|
||||
rmmod nvidia 2>/dev/null \
|
||||
(! lsmod | grep '^nvidia ' &>/dev/null || rmmod nvidia &>/dev/null) \
|
||||
&& echo 'OFF' > /sys/kernel/debug/vgaswitcheroo/switch \
|
||||
&& exit 0
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user