| 1 | ================================================================= |
| 2 | Patch version 0.9 of SDL(Simple DirectMedia Layer) for Nano-X API |
| 3 | ================================================================= |
| 4 | |
| 5 | Authors: Hsieh-Fu Tsai, clare@setabox.com |
| 6 | Greg Haerr, greg@censoft.com |
| 7 | |
| 8 | This patch is against SDL version 1.2.4. |
| 9 | It enhances previous patch 0.8 by providing direct framebuffer |
| 10 | access as well as dynamic hardware pixel type support, not |
| 11 | requiring a compile-time option setting for different framebuffer |
| 12 | modes. |
| 13 | Tested against Microwindows version 0.89pre9. |
| 14 | |
| 15 | Older Microwindows versions |
| 16 | =========================== |
| 17 | If running on a version older than Microwindows 0.89pre9, |
| 18 | the following items might need to be patched in Microwindows. |
| 19 | |
| 20 | 1. Patch src/nanox/client.c::GrClose() |
| 21 | It fixes the client side GrClose(). In the original version, |
| 22 | GrOpen() can only be called once. When the GrOpen() is called at |
| 23 | the second time, the program will terminate. In order to prevent |
| 24 | this situation, we need to insert "nxSocket = -1" after |
| 25 | "close(nxSocket)" in GrClose(). If you do not have this problem, |
| 26 | you may skip this step. |
| 27 | |
| 28 | 2. Patch src/nanox/clientfb.c to return absolute x,y coordinates |
| 29 | when using GrGetWindowFBInfo(). Copy the version 0.89pre9 |
| 30 | of src/nanox/clientfb.c to your system, or configure |
| 31 | using --disable-nanox-direct-fb. |
| 32 | |
| 33 | ============= |
| 34 | Quick Install |
| 35 | ============= |
| 36 | |
| 37 | 1. ./configure --disable-video-x11 --disable-video-fbcon \ |
| 38 | --enable-video-nanox \ |
| 39 | --with-nanox-pixel-type=[rgb/0888/888/565/555/332/pal] |
| 40 | 2. make clean |
| 41 | 3. make |
| 42 | 4. make install (as root) |
| 43 | |
| 44 | ============ |
| 45 | Nitty-gritty |
| 46 | ============ |
| 47 | |
| 48 | --enable-nanox-direct-fb Use direct framebuffer access |
| 49 | --enable-nanox-debug Show debug messages |
| 50 | --enable-nanox-share-memory Use shared-memory to speed up |
| 51 | |
| 52 | When running multi-threaded applications using SDL, such |
| 53 | as SMPEG, set THREADSAFE=Y in Microwindows' config file, |
| 54 | to enable GrXXX() system call critical section support. |
| 55 | |
| 56 | ============================================= |
| 57 | Some programs can be used to test this patch. |
| 58 | ============================================= |
| 59 | |
| 60 | 1. http://www.cs.berkeley.edu/~weimer/atris (a tetris-like game) |
| 61 | 2. http://www.libsdl.org/projects/newvox/ |
| 62 | 3. http://www.libsdl.org/projects/xflame/ |
| 63 | 4. http://www.libsdl.org/projects/optimum/ |
| 64 | 5. http://www.gnugeneration.com/software/loop/ |
| 65 | 6: http://www.lokigames.com/development/smpeg.php3 (SMPEG version 0.4.4) |
| 66 | |
| 67 | ========= |
| 68 | Todo List |
| 69 | ========= |
| 70 | |
| 71 | 1. Create hardware surface |
| 72 | 2. Create YUVOverlay on hardware |
| 73 | 3. Use OpenGL |
| 74 | 4. Gamma correction |
| 75 | 5. Hide/Change mouse pointer |
| 76 | 6. Better window movement control with direct fb access |
| 77 | 7. Palette handling in 8bpp could be improved |
| 78 | |
| 79 | ===================== |
| 80 | Supporting Institutes |
| 81 | ===================== |
| 82 | |
| 83 | Many thanks to go to Setabox Co., Ltd. and CML (Communication and |
| 84 | Multimedia Laboratory, http://www.cmlab.csie.ntu.edu.tw/) in the |
| 85 | Department of Computer Science and Information Engineering of |
| 86 | National Taiwan University for supporting this porting project. |
| 87 | |
| 88 | Century Embedded Technologies (http://embedded.censoft.com) |
| 89 | for this patch. |
| 90 | |
| 91 | =================== |
| 92 | Contact Information |
| 93 | =================== |
| 94 | |
| 95 | Welcome to give me any suggestion and to report bugs. |
| 96 | My e-mail address : clare@setabox.com or niky@cmlab.csie.ntu.edu.tw |
| 97 | or greg@censoft.com |