Adventures in Arch: Part 2 - Is It Working Yet?
Let's Get Some Hybrid Graphics Up In Here!
if [ ! -f /etc/X11/xorg.conf ]; then sudo cp /etc/X11/xorg.conf.fglrx /etc/X11/xorg.conf fi startx /usr/bin/openbox-session -- :1
How simple was that? And my script for starting X on my integrated card is about the same (only using XFCE, because XFCE is cool).
I found that switching the AMD card on or off when the computer had just booted up worked successfully. However, if I switched the card off, worked on the integrated card for a while, and attempted to switch the card on, the whole system would semi-crash. All keyboard input and mouse clicking would be unresponsive, however moving the mouse around still moved the cursor. If I did this from a tty, I would get a beautiful wall of text about dereferencing NULL pointers or something.
Eventually, after searching in the most unexpected place – information for Nvidia cards that I stumbled upon for a completely unrelated reason – I found the issue: if the card is disabled when suspending to RAM, it stops working. This also appeared to be the case when locking the screen or turning off the display.
Because turning off all the problem-causing things seemed to be a little too much work, I gave up and just left the card running. My workaround was to shove a book underneath the laptop. Ventilation, you know!
Oh AMD…
Everything finally works! I can play games on my discrete card, and I can browse the internet on my integrated card without the temperature going up to 90°! Only that's the problem – I can't. Even when working on my integrated card, the system often goes up to 89°-ish. The worst time was when my computer was idle, and then suddenly crashed because of a ‘Thermal Shutdown’. A bit of Googling later, I found the reason was that the discrete card was still running even though it wasn't running… The solution? Use acpi_call-git and turn the card off! And get this – it actually works! Ish.I found that switching the AMD card on or off when the computer had just booted up worked successfully. However, if I switched the card off, worked on the integrated card for a while, and attempted to switch the card on, the whole system would semi-crash. All keyboard input and mouse clicking would be unresponsive, however moving the mouse around still moved the cursor. If I did this from a tty, I would get a beautiful wall of text about dereferencing NULL pointers or something.
Eventually, after searching in the most unexpected place – information for Nvidia cards that I stumbled upon for a completely unrelated reason – I found the issue: if the card is disabled when suspending to RAM, it stops working. This also appeared to be the case when locking the screen or turning off the display.
Because turning off all the problem-causing things seemed to be a little too much work, I gave up and just left the card running. My workaround was to shove a book underneath the laptop. Ventilation, you know!
Improvements
After testing out bumblebee-amd-hacks on GitHub, and discovering that it did not work at all for me, I discovered the pxp_switch_catalyst command, bundled with AMD Catalyst for Arch Linux. By making the necessary modifications to my switching scripts, I was now able to use hardware acceleration on my integrated card.
My Switching Scripts
$ cat /usr/local/bin/fglrxoff ------------------------------ #!/bin/bash if [ -f /etc/X11/xorg.conf ]; then sudo rm /etc/X11/xorg.conf echo Using Intel driver else echo Already using Intel driver fi LIB_LINK="`readlink /usr/lib/catalystpxp/libGL.so.1.2 2>/dev/null`" if [[ "${LIB_LINK}" = "/usr/lib/libGL.so.1.2" || "${LIB_LINK}" = "/usr/lib/libGL.so.1.2.0" || "${LIB_LINK}" = "/usr/lib/libGL.so" ]]; then echo Already using Intel OpenGL else sudo /usr/lib/fglrx/switchlibGL intel >/dev/null sudo /usr/lib/fglrx/switchlibglx intel >/dev/null echo Switched to Intel OpenGL fi startx -- :0 vt7 ------------------------------ $ cat /usr/local/bin/fglrxoff ------------------------------ #!/bin/bash if [ -f /etc/X11/xorg.conf ]; then echo Already using AMD driver else sudo cp /etc/X11/xorg.conf.fglrx /etc/X11/xorg.conf echo Switched to AMD driver fi LIB_LINK="`readlink /usr/lib/catalystpxp/libGL.so.1.2 2>/dev/null`" if [[ "${LIB_LINK}" = "/usr/lib/libGL.so.1.2" || "${LIB_LINK}" = "/usr/lib/libGL.so.1.2.0" || "${LIB_LINK}" = "/usr/lib/libGL.so" ]]; then #Using Intel #sudo pxp_switch_catalyst amd sudo /usr/lib/fglrx/switchlibGL amd sudo /usr/lib/fglrx/switchlibglx amd echo Switched to AMD OpenGL else #Using AMD echo Already using AMD OpenGL fi startx /usr/bin/openbox-session -- :1 vt8 ------------------------------/etc/X11/xorg.conf.fglrx is the xorg.conf file generated by aticonfig --initial.
Postscript: Oh Steam…
So, after all this work, I finally had a set-up I was happy with! ‘Shirt off, pants off, time to Dotes!’
Labels: amd, arch linux, error, guide, hybrid graphics, intel, linux, misc, rant
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home