Find a file
Kenneth Graunke 2f18698220 i965/fs: Fix user-defined FS outputs with less than four components.
OpenGL allows you to declare user-defined fragment shader outputs with
less than four components:

    out ivec2 color;

This makes sense if you're rendering to an RG format render target.

Previously, we assumed that all color outputs had four components (like
the built-in gl_FragColor/gl_FragData variables).  This caused us to
call emit_color_write for invalid indices, incrementing the output
virtual GRF's reg_offset beyond the size of the register.

This caused cascading failures: split_virtual_grfs would allocate new
size-1 registers based on the virtual GRF size, but then proceed to
rewrite the out-of-bounds accesses assuming that it had allocated enough
new (contiguously numbered) registers.  This resulted in instructions
that accessed size-1 GRFs which register numbers beyond
virtual_grf_next (i.e. registers that were never allocated).

Finally, this manifested as live variable analysis and instruction
scheduling accessing their temporary array with an out of bounds index
(as they're all sized based on virtual_grf_next), and the program would
segfault.

It looks like the hardware's Render Target Write message requires you to
send four components, even for RT formats such as RG or RGB.  This patch
continues to use all four MRFs, but doesn't bother to fill any data for
the last few, which should be unused.

+2 oglconforms.

NOTE: This is a candidate for stable release branches.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
2012-06-05 14:41:34 -07:00
bin Add bin/compile to .gitignore 2012-05-08 13:10:00 -07:00
configs configure.ac: Add variables LLVM_CPPFLAGS and LLVM_LIBDIR 2012-06-01 11:28:09 -04:00
docs i965: create code path to handle primitive restart in hardware 2012-05-23 15:19:09 -07:00
doxygen doxygen: Add link to the gbm documentation to the header 2012-01-13 09:31:24 -05:00
include r600g: add new Trinity PCI ids 2012-06-05 10:16:42 -04:00
scons scons: Parse = operator in source lists too. 2012-04-29 21:44:05 +01:00
src i965/fs: Fix user-defined FS outputs with less than four components. 2012-06-05 14:41:34 -07:00
tests tests: include mesa headers 2012-05-21 08:42:19 -06: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 Add Makefile.in to toplevel .gitignore 2012-03-20 11:50:50 -07:00
acinclude.m4 autoconf: Attempt to figure out the PIC flags for the platform 2008-05-09 07:05:16 -07:00
Android.common.mk android: pass -std=c99 by default 2011-11-26 11:42:08 +08:00
Android.mk radeonsi: initial WIP SI code 2012-04-13 10:32:06 -04:00
autogen.sh autogen.sh: Honor NOCONFIGURE environment variable 2011-09-19 19:53:49 +01:00
common.py scons: Fix SCons build infrastructure for FreeBSD. 2012-05-24 18:49:40 -07:00
configure.ac configure.ac: Fail if egl x11 platform dependencies are not available 2012-06-05 14:34:33 -04:00
Makefile glsl: Convert the tests directory to automake. 2012-04-19 16:33:31 -07:00
SConstruct scons: Disable saving options automatically. 2011-07-01 19:04:57 +01:00

File: docs/README.WIN32

Last updated: 23 April 2011


Quick Start
----- -----

Windows drivers are build with SCons.  Makefiles or Visual Studio projects are
no longer shipped or supported.

Run

  scons osmesa mesagdi

to build classic mesa Windows GDI drivers; or

  scons libgl-gdi

to build gallium based GDI driver.

This will work both with MSVS or Mingw.


Windows Drivers
------- -------

At this time, only the gallium GDI driver is known to work.

Source code also exists in the tree for other drivers in
src/mesa/drivers/windows, but the status of this code is unknown.


General
-------

After building, you can copy the above DLL files to a place in your
PATH such as $SystemRoot/SYSTEM32.  If you don't like putting things
in a system directory, place them in the same directory as the
executable(s).  Be careful about accidentially overwriting files of
the same name in the SYSTEM32 directory.

The DLL files are built so that the external entry points use the
stdcall calling convention.

Static LIB files are not built.  The LIB files that are built with are
the linker import files associated with the DLL files.

The si-glu sources are used to build the GLU libs.  This was done
mainly to get the better tessellator code.

If you have a Windows-related build problem or question, please post
to the mesa-dev or mesa-users list.