mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 08:20:12 +01:00
GLUT on fbdev driver. Sean D'Epagnier
This commit is contained in:
parent
e8947a5fa0
commit
fe3242f00a
4 changed files with 9422 additions and 25 deletions
|
|
@ -37,54 +37,75 @@ The GL/glfbdev.h header file defines the glFBDev interface.
|
|||
The progs/fbdev/glfbdevtest.c demonstrates how to use the glFBDev interface.
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
For more information about fbdev, see the
|
||||
<a href="http://www.tldp.org/HOWTO/Framebuffer-HOWTO.html" target="_parent">
|
||||
Framebuffer Howto</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You will need at minimum, a framebuffer device, check /dev/fb0
|
||||
</p>
|
||||
|
||||
<h1>2. Compilation</h1>
|
||||
|
||||
<p>
|
||||
To compile Mesa with support for the glFBDev interface:
|
||||
<pre>
|
||||
XXX todo
|
||||
make realclean
|
||||
make linux-fbdev
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
When compilation is finished look in progs/glfbdev/ for the glfbdevtest demo.
|
||||
</p>
|
||||
|
||||
</p>
|
||||
xxx todo
|
||||
</p>
|
||||
|
||||
|
||||
<h1>3. Compiling and linking glFBDev programs</h1>
|
||||
<h1>3. Permissions</h1>
|
||||
|
||||
<p>
|
||||
xxx todo
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<h1>4. Running glFBDev programs</h1>
|
||||
|
||||
Typically /dev/fb/0 is grouped to the video group. It may be useful to add
|
||||
your user to the video group so the demos will not have to be run as root.
|
||||
To use fbdevglut with the prefered tty input, you should add the user to the
|
||||
tty group as well
|
||||
<p>
|
||||
First, you need to have a working fbdev environment.
|
||||
See the
|
||||
<a href="http://www.tldp.org/HOWTO/Framebuffer-HOWTO.html" target="_parent">
|
||||
Framebuffer Howto</a> for information.
|
||||
</p>
|
||||
|
||||
<h1>4. Using fbdevglut</h1>
|
||||
Almost all of the programs in the progs directory use glut, and they compile with fbdevglut.
|
||||
Currently glBlendFunc is not working with glFBDev.
|
||||
<p>
|
||||
Programs must be run with root permission.
|
||||
To compile the redbook sample programs:
|
||||
<pre>
|
||||
cd progs/redbook
|
||||
make
|
||||
</pre>
|
||||
</p>
|
||||
<p>glut features not supported:
|
||||
<li>Overlays
|
||||
<li>Subwindows
|
||||
<li>Input devices other than Keyboard/Mouse
|
||||
<li>No support for GLUT_MULTISAMPLE, GLUT_STEREO, or GLUT_LUMINANCE
|
||||
<li>Cursor and Menu Support will flicker in GLUT_SINGLE mode
|
||||
|
||||
<p>Keyboard input is read by opening /dev/tty and reading keycodes in medium raw mode.
|
||||
<p>Mouse input is read from env var MOUSE, or /dev/gpmdata and should be in ms3 format.
|
||||
To forward data in this format to /dev/gpmdata, run gpm with the -Rms3 option.
|
||||
<p> glutInit allows glut programs to pass parameters to the glut library, currently the
|
||||
following options are supported for fbdevglut:
|
||||
<p><li>-geometry widthxheight -- This will force the resolution to be widthxheight instead of autodetecting.
|
||||
The modes are read from /etc/fb.modes
|
||||
<p><li>-bpp -- This will force the bitdepth to the one specified
|
||||
<p><li>-vt -- This allows you to specify the virtual terminal to attach keyboard input to. It is useful to specify when running inside screen.
|
||||
<p><li>-mousespeed -- A floating point multiplication factor to increase mouse speed
|
||||
<p><li>-nomouse -- Disable mouse support
|
||||
<p><li>-nokeyboard -- Disable keyboard support (this will probably break mouse support as well)
|
||||
<p><li>-stdin -- Use stdin for input instead of attaching to kbd in medium-raw mode.
|
||||
This will make it impossible to detect keypresses like Shift+Tab, you will also need to specify -gpmmouse for mouse support. This option can be used with a debugger, and it is possible to single step a program with gdb and set the FRAMEBUFFER environment variable to a different framebuffer for display. The program will not be able to handle vt switching on it's own, so it will always display.
|
||||
<p><li>-gpmmouse -- This will attempt to connect to the /dev/gpmctl socket using liblow
|
||||
for mouse data. Gpm does not provide this data when in graphics mode, so vt switching
|
||||
will briefly display text. This mode typically has no initial mouse delay.
|
||||
<p><li>-- Ignore any additional arguments
|
||||
<p>Notes:
|
||||
<p>
|
||||
1. The mouse pointer flickers in single buffering mode, as it must be rendered in software. Hopefully in the future there will be a way to access hardware cursors in fbdev devices.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
78
src/glut/fbdev/Makefile
Normal file
78
src/glut/fbdev/Makefile
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# subset glut
|
||||
|
||||
TOP = ../../..
|
||||
include $(TOP)/configs/current
|
||||
|
||||
GLX_SHARED = $(TOP)/src/glut/glx
|
||||
SHAPES = $(TOP)/src/glut/mini
|
||||
|
||||
GLUT_MAJOR = 3
|
||||
GLUT_MINOR = 7
|
||||
GLUT_TINY = 1
|
||||
|
||||
INCLUDES = -I$(TOP)/include -I$(GLX_SHARED)
|
||||
|
||||
CORE_SOURCES = \
|
||||
glut_fbdev.c
|
||||
|
||||
GLX_SHARED_SOURCES = \
|
||||
$(GLX_SHARED)/glut_8x13.c \
|
||||
$(GLX_SHARED)/glut_9x15.c \
|
||||
$(GLX_SHARED)/glut_bwidth.c \
|
||||
$(GLX_SHARED)/glut_bitmap.c \
|
||||
$(GLX_SHARED)/glut_hel10.c \
|
||||
$(GLX_SHARED)/glut_hel12.c \
|
||||
$(GLX_SHARED)/glut_hel18.c \
|
||||
$(GLX_SHARED)/glut_tr10.c \
|
||||
$(GLX_SHARED)/glut_tr24.c \
|
||||
$(GLX_SHARED)/glut_mroman.c \
|
||||
$(GLX_SHARED)/glut_roman.c \
|
||||
$(GLX_SHARED)/glut_swidth.c \
|
||||
$(GLX_SHARED)/glut_stroke.c \
|
||||
$(TOP)/src/glut/mini/models.c \
|
||||
$(GLX_SHARED)/glut_teapot.c
|
||||
|
||||
SOURCES = $(CORE_SOURCES) $(GLX_SHARED_SOURCES)
|
||||
|
||||
OBJECTS = $(SOURCES:.c=.o)
|
||||
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@
|
||||
|
||||
.S.o:
|
||||
$(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@
|
||||
|
||||
|
||||
##### TARGETS #####
|
||||
|
||||
default: depend $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME)
|
||||
|
||||
|
||||
# Make the library
|
||||
$(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS)
|
||||
$(TOP)/bin/mklib -o $(GLUT_LIB) -linker '$(CC)' \
|
||||
-major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \
|
||||
$(GLUT_LIB_DEPS) -install $(TOP)/$(LIB_DIR) \
|
||||
$(MKLIB_OPTIONS) $(OBJECTS)
|
||||
|
||||
|
||||
# Run 'make -f Makefile.solo dep' to update the dependencies if you change
|
||||
# what's included by any source file.
|
||||
depend: $(SOURCES)
|
||||
touch depend
|
||||
$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) > /dev/null
|
||||
|
||||
# Emacs tags
|
||||
tags:
|
||||
etags `find . -name \*.[ch]` `find ../include`
|
||||
|
||||
|
||||
# Remove .o and backup files
|
||||
clean: depend
|
||||
-rm -f depend
|
||||
-rm -f *.o *~ *.o *~ *.so libglut.so.3.7
|
||||
|
||||
include depend
|
||||
7099
src/glut/fbdev/cursors.h
Normal file
7099
src/glut/fbdev/cursors.h
Normal file
File diff suppressed because it is too large
Load diff
2199
src/glut/fbdev/glut_fbdev.c
Normal file
2199
src/glut/fbdev/glut_fbdev.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue