Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added initial support for Nano-X (thanks Hsieh-Fu!)
  • Loading branch information
Sam Lantinga committed May 11, 2001
1 parent 0b973f4 commit 2b4b30d
Show file tree
Hide file tree
Showing 20 changed files with 1,709 additions and 2 deletions.
81 changes: 81 additions & 0 deletions README.NanoX
@@ -0,0 +1,81 @@
=================================================================
Patch version 0.8 of SDL(Simple DirectMedia Layer) for Nano-X API
=================================================================

Author: Hsieh-Fu Tsai, clare@setabox.com

There are two patch files in this package.

1. The first patch file, nanox.patch, is to fix a bug in Nano-X.
This patch is proposed by Gary James (gjames@twcny.rr.com).

It fixes the client side GrClose(). In the original version,
GrOpen() can only be called once. When the GrOpen() is called at
the second time, the program will terminate. In order to prevent
this situation, we need to insert "nxSocket = -1" after
"close(nxSocket)" in GrClose(). If you do not have this problem,
you may skip this step.

=============
Quick Install
=============

1. ./configure --disable-video-x11 --disable-video-fbcon \
--enable-video-nanox \
--with-nanox-pixel-type=[rgb/0888/888/565/555/332/pal]
2. make clean
3. make
4. make install (as root)

============
Nitty-gritty
============

--with-nanox-pixel-type=[rgb/0888/888/565/555/332/pal]

If the wrong pixel type is used, the program will crash when the
sub-routine updates the screen. This option depends on SCREEN_PIXTYPE
which is defined in Microwin0.89pre7/src/config. SCREEN_PIXTYPE
is used to define the pixel type in Microwindows/Nano-X.
I only test the program when the pixel type is in "rgb"
(Microwin under X11) or "888" (framebuffer in 24-bit).

--enable-nanox-debug Show debug messages
--enable-nanox-share-memory Use shared-memory to speed up

=============================================
Some programs can be used to test this patch.
=============================================

1. http://www.cs.berkeley.edu/~weimer/atris (a tetris-like game)
2. http://www.libsdl.org/projects/newvox/
3. http://www.libsdl.org/projects/xflame/
4. http://www.libsdl.org/projects/optimum/
5. http://www.gnugeneration.com/software/loop/

=========
Todo List
=========

1. Create hardware surface
2. Create YUVOverlay on hardware
3. Use OpenGL
4. Gamma correction
5. Hide/Change mouse pointer

=====================
Supporting Institutes
=====================

Many thanks to go to Setabox Co., Ltd. and CML (Communication and
Multimedia Laboratory, http://www.cmlab.csie.ntu.edu.tw/) in the
Department of Computer Science and Information Engineering of
National Taiwan University for supporting this porting project.

===================
Contact Information
===================

Welcome to give me any suggestion and to report bugs.
My e-mail address : clare@setabox.com or niky@cmlab.csie.ntu.edu.tw

45 changes: 45 additions & 0 deletions configure.in
Expand Up @@ -403,6 +403,49 @@ CheckNASM()
fi
}

dnl Find the nanox include and library directories
CheckNANOX()
{
AC_ARG_ENABLE(video-nanox,
[ --enable-video-nanox use nanox video driver [default=no]],
, enable_video_nanox=no)
AC_ARG_ENABLE(nanox-debug,
[ --enable-nanox-debug print debug messages [default=no]],
, enable_nanox_debug=no)
AC_ARG_ENABLE(nanox-share-memory,
[ --enable-nanox-share-memory use share memory [default=no]],
, enable_nanox_share_memory=no)

AC_ARG_WITH(nanox_pixel_type,
[ --with-nanox-pixel-type=[rgb/0888/888/565/555/332/pal]])

if test x$enable_video = xyes -a x$enable_video_nanox = xyes; then
if test x$enable_nanox_debug = xyes; then
CFLAGS="$CFLAGS -DENABLE_NANOX_DEBUG"
fi

if test x$enable_nanox_share_memory = xyes; then
CFLAGS="$CFLAGS -DNANOX_SHARE_MEMORY"
fi

case "$with_nanox_pixel_type" in
rgb) CFLAGS="$CFLAGS -DNANOX_PIXEL_RGB" ;;
0888) CFLAGS="$CFLAGS -DNANOX_PIXEL_0888" ;;
888) CFLAGS="$CFLAGS -DNANOX_PIXEL_888" ;;
565) CFLAGS="$CFLAGS -DNANOX_PIXEL_565" ;;
555) CFLAGS="$CFLAGS -DNANOX_PIXEL_555" ;;
332) CFLAGS="$CFLAGS -DNANOX_PIXEL_332" ;;
pal) CFLAGS="$CFLAGS -DNANOX_PIXEL_PAL" ;;
*) AC_MSG_ERROR([Invalid nanox_pixel_type]);;
esac

CFLAGS="$CFLAGS $X_CFLAGS -DENABLE_NANOX"
SYSTEM_LIBS="$SYSTEM_LIBS -lnano-X"
VIDEO_SUBDIRS="$VIDEO_SUBDIRS nanox"
VIDEO_DRIVERS="$VIDEO_DRIVERS nanox/libvideo_nanox.la"
fi
}

dnl Find the X11 include and library directories
CheckX11()
{
Expand Down Expand Up @@ -1042,6 +1085,7 @@ case "$target" in
CheckESD
CheckNAS
CheckX11
CheckNANOX
CheckDGA
CheckFBCON
CheckGGI
Expand Down Expand Up @@ -1921,6 +1965,7 @@ src/video/Makefile
src/video/cybergfx/Makefile
src/video/x11/Makefile
src/video/dga/Makefile
src/video/nanox/Makefile
src/video/fbcon/Makefile
src/video/ggi/Makefile
src/video/maccommon/Makefile
Expand Down
1 change: 1 addition & 0 deletions docs.html
Expand Up @@ -16,6 +16,7 @@ <H2>
Major changes since SDL 1.0.0:
</H2>
<UL>
<LI> 1.2.1: Added initial support for Nano-X (thanks Hsieh-Fu!)
<LI> 1.2.1: Fixed endian detection on IA64 architectures (thanks Bill!)
<LI> 1.2.1: Added --disable-dga configure option to disable DGA
<LI> 1.2.1: Fixed stuck keys when changing the video mode
Expand Down
17 changes: 16 additions & 1 deletion include/SDL_syswm.h
Expand Up @@ -50,7 +50,7 @@ typedef struct SDL_SysWMinfo SDL_SysWMinfo;

/* This is the structure for custom window manager events */
#if (defined(unix) || defined(__unix__) || defined(_AIX)) && \
(!defined(DISABLE_X11) && !defined(__CYGWIN32__))
(defined(ENABLE_X11) && !defined(__CYGWIN32__))
/* AIX is unix, of course, but the native compiler CSet doesn't define unix */
#include <X11/Xlib.h>
#include <X11/Xatom.h>
Expand Down Expand Up @@ -95,6 +95,21 @@ typedef struct {
} info;
} SDL_SysWMinfo;

#elif defined(ENABLE_NANOX)
#include <microwin/nano-X.h>

/* The generic custom event structure */
struct SDL_SysWMmsg {
SDL_version version;
int data;
};

/* The windows custom window manager information structure */
typedef struct {
SDL_version version ;
GR_WINDOW_ID window ; /* The display window */
} SDL_SysWMinfo;

#elif defined(WIN32)
#include <windows.h>

Expand Down
2 changes: 1 addition & 1 deletion src/video/Makefile.am
Expand Up @@ -5,7 +5,7 @@ noinst_LTLIBRARIES = libvideo.la

# Define which subdirectories need to be built
SUBDIRS = @VIDEO_SUBDIRS@
DIST_SUBDIRS = dummy x11 dga fbcon svga ggi aalib \
DIST_SUBDIRS = dummy x11 dga nanox fbcon svga ggi aalib \
wincommon windib windx5 \
maccommon macdsp macrom bwindow photon cybergfx

Expand Down
3 changes: 3 additions & 0 deletions src/video/SDL_sysvideo.h
Expand Up @@ -331,6 +331,9 @@ extern VideoBootStrap X11_bootstrap;
#ifdef ENABLE_DGA
extern VideoBootStrap DGA_bootstrap;
#endif
#ifdef ENABLE_NANOX
extern VideoBootStrap NX_bootstrap;
#endif
#ifdef ENABLE_FBCON
extern VideoBootStrap FBCON_bootstrap;
#endif
Expand Down
3 changes: 3 additions & 0 deletions src/video/SDL_video.c
Expand Up @@ -51,6 +51,9 @@ static VideoBootStrap *bootstrap[] = {
#ifdef ENABLE_DGA
&DGA_bootstrap,
#endif
#ifdef ENABLE_NANOX
&NX_bootstrap,
#endif
#ifdef ENABLE_FBCON
&FBCON_bootstrap,
#endif
Expand Down
20 changes: 20 additions & 0 deletions src/video/nanox/Makefile.am
@@ -0,0 +1,20 @@

## Makefile.am for SDL using the nanox video driver

noinst_LTLIBRARIES = libvideo_nanox.la
libvideo_nanox_la_SOURCES = $(NANOX_SRCS)

# The SDL nanox video driver sources
NANOX_SRCS = \
SDL_nxmodes.c \
SDL_nxmodes_c.h \
SDL_nxmouse.c \
SDL_nxmouse_c.h \
SDL_nxvideo.c \
SDL_nxvideo.h \
SDL_nxwm.c \
SDL_nxwm_c.h \
SDL_nxevents.c \
SDL_nxevents_c.h \
SDL_nximage.c \
SDL_nximage_c.h

0 comments on commit 2b4b30d

Please sign in to comment.