Find a file
Ian Romanick 92ca560d68 ir_to_mesa: Implement ir_unop_any using DP4 w/saturate or DP4 w/SLT
This is just like the ir_binop_logic_or case.  The operation
ir_unop_any is (a.x || a.y || a.z || a.w).  Logical-or is implemented
using addition (followed by clampling to [0,1]) on values of 0.0 and
1.0.  Replacing the logical-or operators with addition gives (a.x +
a.y + a.z + a.w).  This can be implemented using a dot-product with a
vector of all 1.0.

Previously a SNE instruction was used to clamp the resulting logic
value to [0,1].  In a fragment shader, using a saturate on the
dot-product has the same effect.  Adding the saturate to the
dot-product is free, so (at least) one instruction is saved.

In a vertex shader, using an SLT on the negation of the dot-product
result has the same effect.  Many older shader architectures do not
support the SNE instruction.  It must be emulated using two SLT
instructions and an ADD.  On these architectures, the single SLT saves
two instructions.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:42 -07:00
bin darwin: mklib: Make the real file match the id 2011-06-08 11:24:26 -07:00
configs glw: Remove GLw source. 2011-08-15 13:37:09 -07:00
docs docs: Remove GLw from the documentation except for a new FAQ entry. 2011-08-15 13:37:27 -07:00
doxygen doxygen: Add glsl to the Makefile and .gitignore. 2011-01-19 23:49:54 -08:00
include dri2: Add __DRI_BUFFER_COUNT token 2011-08-16 09:06:41 +02:00
scons swrast: initial multi-threaded span rendering 2011-08-11 08:33:59 -06:00
src ir_to_mesa: Implement ir_unop_any using DP4 w/saturate or DP4 w/SLT 2011-08-16 14:09:42 -07:00
.emacs-dirvars Add emacs dirvars file with Mesa indention definition. 2007-09-18 10:02:51 -04:00
.gitattributes Allow CRLF automatic conversion on MSVC project files. 2008-06-24 22:25:52 +09:00
.gitignore Squashed commit of the following: 2011-07-14 17:35:05 +01:00
acinclude.m4 autoconf: Attempt to figure out the PIC flags for the platform 2008-05-09 07:05:16 -07:00
autogen.sh autogen: Make sure MAKEFLAGS is not set before running autoreconf 2009-02-10 11:58:11 +10:30
common.py swrast: initial multi-threaded span rendering 2011-08-11 08:33:59 -06:00
configure.ac r600g: first step into winsys/radeon 2011-08-16 09:15:10 +02:00
Makefile glsl: Add unit tests for lower_jumps.cpp 2011-07-22 09:45:11 -07:00
SConstruct scons: Disable saving options automatically. 2011-07-01 19:04:57 +01:00

                        WindML Driver for Mesa 4.0


Requirements
------------

Tornado 2 + WindML, Cumulative Patchs are recommended. 
  
I suppose you have a valid WindML installation. Double buffer hardware
gives better performance than double buffer software so if you can
compile your WindML driver with this option, just do it. I/O
redirection is adviced in target server.


Tested on
---------

During the development, my main target was a CoolMonster:
- Video card: CT69000
- CPU: PENTIUM 266MHz

and my host a Windows NT + Tornado 2.


Installation
------------

1. Mesa sources must be in root directory (C:\)

2. Add the following line to your torVars.bat:
set MESA_BASE=C:\Mesa

OR copy the new torVars.bat in your bin path:
c:/Mesa/src/ugl/tornado/torVars.sample -> 
/mnt/nt/Tornado/host/x86-win32/bin/torVars (for example)

3. In a command prompt:
$ torVars
$ cd c:\Mesa
$ make -f Makefile.ugl CPU=PENTIUM

Take a long while...

5. Include all the files from ugldemos folder to build some downloadable
   application modules

4. Download UGL/Mesa object files on target

For example via the WindShell:
ld < c:\Tornado\target\lib\objMesaGL.o
ld < c:\Tornado\target\lib\objMesaUGL.o
ld < c:\Tornado\target\lib\objMesaGLU.o
ld < c:\Tornado\target\lib\objGLUTshapes.o
ld < c:\Tornado\target\lib\objMesaOS.o

You can put the previous lines in a file and use:
< filename

6. Download the application modules.

7. In WindShell, run:
-> uglalldemos

During the show some messages will appear, it provides some useful
information on key management.


Coding
------

Sample Usage:

In addition to the usual ugl calls to initialize UGL, (may be find an
input driver), you must do the following to use the UGL/Mesa interface:

1. Call uglMesaCreateContext() to create a UGL/Mesa rendering context,
   given the display format.

2. Call uglMesaMakeCurrent() to bind the UGL/Mesa buffers to an
   UGL/Mesa Context and to make the context the current one.

3. Make gl* calls to render your graphics.

4. Use uglMesaSwapBuffers() when double buffering to swap front/back buffers.

5. Before the UGL is destroyed, call MesaDestroyContext().

6. Before exiting, call if required uglEventQDestroy and then
   uglDeinitialize();

Limitations
-----------

I found the following limitations in my driver :
 - Color Indexed management is only in 8 bits
 - It's possible to mix UGL/OpenGL application with a software
   double buffer

Modifications
------------

New files in Mesa:
- Makefile.ugl
- rules.windmlmesa
- docs/README.UGL
- include/GL/uglmesa.h
- si-glu/Makefile.ugl
- src/Makefile.ugl
- src/ugl/torGLUTShapesInit.c
- src/ugl/torMesaUGLInit.c
- src/ugl/ugl_api.c
- src/ugl/ugl_dd.c
- src/ugl/ugl_glutshapes.c
- src/ugl/ugl_line.c
- src/ugl/ugl_span.c
- src/ugl/ugl_tri.c
- src/ugl/uglmesaP.h
- ugldemos/*

Modified files in Tornado 2.0:
- c:\Tornado\host\x86-win32\bin\torVars.bat
rem Command line build environments
set WIND_HOST_TYPE=x86-win32
set WIND_BASE=C:\Tornado
set MESA_BASE=C:\Mesa
set PATH=%WIND_BASE%\host\%WIND_HOST_TYPE%\bin;%PATH%
- c:\Tornado\target\config\comps\VxWorks\01uglmesa.cdf
- c:\Tornado\target\h\GL\*

Todo
----
- GCC 2.96, ASM compilation

Thanks to:
----------

Precision Insight team for their great job around Mesa, XFree, and DRI.
Wind River Systems to take me as an intern.


Stephane Raimbault
<stephane.raimbault@windriver.com>
<stephane.raimbault@deesse.univ-lemans.fr>

July 24, 2001