Ioquake3

From linux-sunxi.org
Jump to navigation Jump to search

Porting

Mali-400 port was done by Luc libv Verhaegen. Purpose of this port is only testing the OpenGL ES libraries, no playable experience is available yet.

Building

Remove X11 Mali-400 libraries if you installed them, install framebuffer ones! (make framebuffer in mali-libs) Current ioquake3 uses only framebuffer output, nothing else.

git clone https://github.com/libv/ioquake3
cd ioquake3
git checkout remotes/origin/mali_fb
nano Makefile.local # change DEFAULT_BASEDIR to directory where you have Quake 3 Arena game files
make ARCH=arm
cd build/release-linux-arm

Running

Run

./ioquake3.arm

in your build/release-linux-arm directory

You should get something like this:

root@linaro-alip:~/ioquake3-mali_fb/build/release-linux-arm# ./ioquake3.arm
ioq3 1.36 linux-arm Dec  6 2012
----- FS_Startup -----
Current search path:
/root/.q3a/baseq3
/home/linaro/ioquake3//baseq3/twpak0.pk3 (116 files)
/home/linaro/ioquake3//baseq3/pak8.pk3 (9 files)
/home/linaro/ioquake3//baseq3/pak7.pk3 (4 files)
/home/linaro/ioquake3//baseq3/pak6.pk3 (64 files)
/home/linaro/ioquake3//baseq3/pak5.pk3 (7 files)
/home/linaro/ioquake3//baseq3/pak4.pk3 (272 files)
/home/linaro/ioquake3//baseq3/pak3.pk3 (4 files)
/home/linaro/ioquake3//baseq3/pak2.pk3 (148 files)
/home/linaro/ioquake3//baseq3/pak1.pk3 (26 files)
/home/linaro/ioquake3//baseq3/pak0.pk3 (3510 files)
/home/linaro/ioquake3//baseq3
 
----------------------
4160 files in pk3 files
execing default.cfg
execing q3config.cfg
com_zoneMegs will be changed upon restarting.
couldn't exec autoexec.cfg
Hunk_Clear: reset the hunk ok
----- Client Initialization -----
Couldn't read q3history.
----- Initializing Renderer ----
-------------------------------
QKEY found.
----- Client Initialization Complete -----
----- R_Init -----
Initializing OpenGL subsystem
FB dimensions 1920x1080
Initializing OpenGL extensions
...GL_EXT_texture_compression_s3tc not found
...GL_S3_s3tc not found
...using GL_ARB_multitexture
...GL_EXT_compiled_vertex_array not found
...GL_EXT_texture_filter_anisotropic not found
------------------
 
GL_VENDOR: ARM
GL_RENDERER: Mali-400 MP
GL_VERSION: OpenGL ES-CM 1.1
GL_EXTENSIONS: 
 GL_OES_byte_coordinates GL_OES_fixed_point
 GL_OES_single_precision GL_OES_matrix_get
 GL_OES_read_format GL_OES_compressed_paletted_texture
 GL_OES_point_size_array GL_OES_point_sprite
 GL_OES_texture_npot GL_OES_query_matrix
 GL_OES_matrix_palette GL_OES_extended_matrix_palette
 GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image
 GL_OES_draw_texture GL_OES_depth_texture
 GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888
 GL_OES_framebuffer_object GL_OES_stencil8 
 GL_OES_depth24 GL_ARM_rgba8 
 GL_OES_EGL_image_external GL_OES_EGL_sync
 GL_EXT_multisampled_render_to_texture
 GL_OES_texture_cube_map GL_EXT_discard_framebuffer
GL_MAX_TEXTURE_SIZE: 4096
GL_MAX_TEXTURE_UNITS_ARB: 8
 
PIXELFORMAT: color(0-bits) Z(0-bit) stencil(0-bits)
MODE: 8, 1920 x 1080 fullscreen hz:N/A
GAMMA: software w/ 0 overbright bits
rendering primitives: single glDrawElements
texturemode: GL_LINEAR_MIPMAP_LINEAR
picmip: 0
texture bits: 32
multitexture: enabled
compiled vertex arrays: enabled
texenv add: enabled
compressed textures: disabled
HACK: using vertex lightmap approximation
Initializing Shaders
----- finished R_Init -----
------ Initializing Sound ------
SDL_Init( SDL_INIT_AUDIO )... OK
SDL audio driver is "alsa".
SDL_AudioSpec:
  Format:   AUDIO_S16LSB
  Freq:     22050
  Samples:  2048
  Channels: 2
Starting SDL audio callback...
SDL audio initialized.
----- Sound Info -----
    1 stereo
65536 samples
   16 samplebits
    1 submission_chunk
22050 speed
0x4241a008 dma buffer
No background file.
----------------------
Sound initialization successful.
--------------------------------
Sound memory manager started
Loading vm file vm/ui.qvm...
Architecture doesn't have a bytecode compiler, using interpreter
ui loaded in 2348480 bytes on the hunk
38 arenas parsed
32 bots parsed
--- Common Initialization Complete ---
IP: 127.0.0.1
IP: 192.168.1.151
IP6: ::1
IP6: fe80::986e:5cff:fef9:cae0%eth0
Opening IP6 socket: [::]:27960
Opening IP socket: 0.0.0.0:27960

Then enter this to run the demo benchmark:

timedemo 1
demo four

ioquake3 is not wired with any input system (game will not recognize any keyboard or mouse input), this lines will go stright to Quake 3 console that will run under the renderer output.

Benchmark results

Resolution Frame rate Misc.
1920x1080 4.5 fps 1260 frames 279.7 seconds 31.0/222.0/320.0/14.5 ms
1280x720 39.4 fps 1260 frames 32.0 seconds 10.0/25.4/80.0/8.2 ms

TODO

  • Add input system (evdev?)
  • Add X11 support

Links