O feito foi de Simon Hall, que fez boas contribuições para a comunidade do Raspberry Pi, como por exemplo novas funções como memcpy e memset da libc otimizadas.
As instruções abaixo são uma tradução minha das instruções enviadas por Simon ao raspberrpi.org, de como ter o jogo funcionando no driver opensource.
Tradução
Preparando o dispositivo
Você precisará:
- Um Raspberry Pi, preferível a versão de 512MB , com a última versão do Raspbian
- Conexão com a internet
- Monitor capaz de exibir em 1080p
- SD card, com mínimo 8G
Nós precisaremos de muito espaço para compilar o kernel. A compilação irá demorar por volta de 12 horas, então será de grande ajuda se você fizer overclock. Nós precisaremos também do último firmware e os pacotes necessários para compilar o código.
Nota: Nós iremos utilizar o gcc 4.7, o código gerado será 10% mais rápido que o 4.6. 4.8 é 10% mais rápido ainda, mas não está disponível no Raspbian. Se você fizer cross-compile poderá atingir um melhor frame rate.
Entre no utilitário raspi-config com:
sudo raspi-config
Expanda o sistema de arquivos, configure o overclock para médio(900 MHz) e reinicie. Agora atualize com:sudo rpi-update
Reinicie novamente. Nós precisaremos instalar alguns pacotes. Entre o seguinte comando como a seguir:sudo apt-get -y install gcc make bc screen ncurses-dev g++-4.7 libsdl1.2-dev
Buscando o software
Entre com os seguintes comandos para baixar os softwares necessários do GitHub:
git clone --depth=1 https://github.com/raspberrypi/linux.git git clone https://github.com/simonjhall/challenge git clone https://github.com/simonjhall/dma git clone https://github.com/raspberrypi/quake3.git
Construindo o kernel
Isso irá demorar cerca de dez horas com todos os módulos. Se suprimir alguns módulos que não precisará diminuirá o tempo de compilação. Entre com os seguintes comandos:
cd linux git apply ~/challenge/kernel/patch.diff zcat /proc/config.gz > .config make oldconfig make menuconfigEntre em "general setup", selecione "local version", entre com a string "simon" e saia para o menu principal e salve. Agora compilaremos o kernel com:
make ARCH=arm
Instalando o kernel
Entre com os seguintes comandos para instalar o novo kernel:
sudo make ARCH=arm modules_install sudo cp arch/arm/boot/Image /boot/kernel_simon.img sudo su echo kernel=kernel_simon.img >> /boot/config.txt echo gpu_mem=128 >> /boot/config.txt rebootQuando os dispositivos inicializarem, verifique se o novo kernel foi carregado com o seguinte comando:
uname -aVocê deverá ver algo parecido com isso:
Linux raspberrypi 3.10.33simon+ #1 PREEMPT Sat Mar 22 09:49:59 UTC 2014 armv6l x
Construindo o restante
Entre com os seguintes comandos para compilar o resto do software:
cd ~/quake3 git apply ~/challenge/quake/patch.diff ./build.sh cd ~/dma cp ~/challenge/kernel/module/dmaer.c . make ./install.shVerique se o módulo foi instalado com esse comando:
tail /var/log/kern.logVocê deverá ver algo similar a isso:
Mar 23 15:22:45 raspberrypi kernel: [ 20.814750] smsc95xx 1-1.1:1.0 eth0:lin1
Mar 23 15:22:45 raspberrypi kernel: [ 21.376702] bcm2835-cpufreq: switching td
Mar 23 15:22:45 raspberrypi kernel: [ 21.376710] bcm2835-cpufreq: switching td
Mar 23 15:22:46 raspberrypi kernel: [ 24.472575] Adding 102396k swap on /var/S
Mar 23 15:25:02 raspberrypi kernel: [ 143.984835] 20c00000 f2c00000 deadbeef
Mar 23 15:25:02 raspberrypi kernel: [ 143.984866] major device number 248
Mar 23 15:25:02 raspberrypi kernel: [ 143.984890] vma list size 12, page list 6
Mar 23 15:25:02 raspberrypi kernel: [ 143.984909] allocated dma channel 4(f208
Mar 23 15:25:02 raspberrypi kernel: [ 143.985242] qpu ENABLED
Mar 23 15:25:02 raspberrypi kernel: [ 143.985264] V3D identify test: V3D versi2
Agora entre com os seguintes comandos:
cd ~/challenge/source make sudo make install
Configurando o jogo
Primeiro de tudo você precisa garantir que você tem os arquivos data do Quake 3 Arena no seu Raspberry Pi. Você precisará dos arquivos pak instalados. Existem várias maneiras de se fazer isso, você pode transferir de outra máquina com o comando SCP ou copiar eles por um pen drive. Copie os arquivos em uma pasta chamada "baseq3". Deverá conter os arquivos pak numerados de 0 a 8 (ex pak1.pk3).
Entre com os seguintes comandos:
sudo mkdir /root/.q3a sudo mv baseq3/ /root/.q3a/ cd ~/quake3/build/release-linux-arm/ sudo mknod char_dev c 100 0 sudo cp ~/challenge/quake/demo.cfg /root/.q3a/baseq3/
Rodando o jogo
Entre no diretório do jogo com o seguinte comando:
cd ~/quake3/build/release-linux-arm/Rode o jogo com esse comando:
sudo ./ioquake3.arm +exec demoSe você quiser jogar novamente após religar o sistema, você precisará rodar os seguintes comandos para recarregar os arquivos necessários:
cd ~/dma ./install.shSe você perceber pequenas pausas no jogo, isso é porque o sistema está utilizando o swap. Você poderá ver isso rodando o comando "top" ao mesmo tempo e verificando o uso do swap durante os lags. Feche alguns programas que estão rodando para aliviar o problema. Rode o jogo sem o gdb e carregue o mínimo de módulos no kernel para previnir o swap.
Fim da tradução
Notas do EverPi
Compilar um kernel dentro do Raspberry Pi é um trabalho muito árduo, aos usuários mais hardcore aconselho realmente criar um crosscompiler em seu desktop para o trabalho.
A questão do jogo quake até onde me recordo somente a engine é opensource, para se ter os arquivos data você necessitava comprar o jogo.
Parabéns a Simon Hall.
Fonte: http://www.raspberrypi.org/archives/6561
Qual foi o ganho de desempenho?
ResponderExcluirInfelizmente ainda não saiu nenhum benchmark, logo que sair atualizarei o post.
Excluir