mesa/src
Connor Abbott e471841048 r300g: set register classes before interferences
In commit 567e2769b8 ("ra: make the p, q
test more efficient") I unknowingly introduced a new requirement to the
register allocator API: the user must set the register class of all
nodes before setting up their interferences, because
ra_add_conflict_list() now uses the classes of the two interfering
nodes. i965 already did this, but r300g was setting up register classes
interleaved with setting up the interference graph. This led to us
calculating the wrong q total, and in certain cases
e78a01d5e6 (" ra: optimistically color
only one node at a time") made it so that this bug caused a segfault. In
particular, the error occurred if the q total was decremented to 1 below
0 for the last node to be pushed onto the stack.  Since q_total is an
unsigned integer, it overflowed to 0xffffffff, which is what
lowest_q_total happens to be initialzed to. This means that we would
fail the "new_q_total < lowest_q_total" check on line 476 of
register_allocate.c, and so the node would never be pushed onto the
stack, which led to segfaults in ra_select() when we failed to ever give
it a register.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82828
Cc: "10.3" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
Tested-by: Pavel Ondračka <pavel.ondracka@email.cz>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
(cherry picked from commit afd82dcad1)
2014-09-16 22:18:34 +01:00
..
egl egl: don't exit process on initialization failure 2014-08-16 17:52:54 -04:00
gallium r300g: set register classes before interferences 2014-09-16 22:18:34 +01:00
gbm gbm: Log at least one dlerror() when we fail to open any drivers. 2014-07-30 22:31:30 -07:00
getopt
glsl glsl: Speed up constant folding for swizzles. 2014-09-12 16:51:52 -07:00
glx glx/drisw: add support for DRI2rendererQueryExtension 2014-08-15 17:35:37 +01:00
gtest gtest: Update to 1.7.0. 2014-04-14 00:06:53 -07:00
hgl haiku libGL: Move from gallium target to src/hgl 2014-01-06 15:50:21 -06:00
loader android: loader: prefix static libraries with libmesa_* 2014-08-13 00:46:57 +01:00
mapi glapi: add GL_ARB_conditional_render_inverted 2014-08-19 08:54:35 -04:00
mesa i965: add support for RGBA dma_buf imports. 2014-09-16 22:17:58 +01:00
util util: remove ralloc_test 2014-08-08 19:23:25 +01:00
Makefile.am automake: handle gallium SUBDIRs in gallium/Makefile 2014-08-13 00:46:54 +01:00
SConscript util: Move ralloc to a new src/util directory. 2014-08-04 11:06:58 -07:00