Commit graph

41499 commits

Author SHA1 Message Date
Carl Worth
6d35d0bda6 glcpp: Fix attempts to expand recursive macros infinitely (bug #32835).
The 095-recursive-define test case was triggering infinite recursion
with the following test case:

	#define A(a, b) B(a, b)
	#define C A(0, C)
	C

Here's what was happening:

  1. "C" was pushed onto the active list to expand the C node

  2. While expanding the "0" argument, the active list would be
     emptied by the code at the end of _glcpp_parser_expand_token_list

  3. When expanding the "C" argument, the active list was now empty,
     so lather, rinse, repeat.

We fix this by adjusting the final popping at the end of
_glcpp_parser_expand_token_list to never pop more nodes then this
particular invocation had pushed itself. This is as simple as saving
the original state of the active list, and then interrupting the
popping when we reach this same state.

With this fix, all of the glcpp-test tests now pass.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32835
Signed-off-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-and-tested-by: Kenneth Graunke <kenneth@whitecape.org>
(cherry picked from commit 9dacbe2226)
2011-04-21 11:35:15 -07:00
Carl Worth
29c2e1f3f7 glcpp: Simplify calling convention of parser's active_list functions
These were all written as generic list functions, (accepting and returning
a list to act upon). But they were only ever used with parser->active as
the list. By simply accepting the parser itself, these functions can update
parser->active and now return nothing at all. This makes the code a bit
more compact.

And hopefully the code is no less readable since the functions are also
now renamed to have "_parser_active" in the name for better correlation
with nearby tests of the parser->active field.
(cherry picked from commit 02d293c08e)
2011-04-21 11:35:06 -07:00
Kenneth Graunke
dca5ddf471 i965: Allocate the whole URB to the VS and fix calculations for Gen6.
Since we never enable the GS on Sandybridge, there's no need to allocate
it any URB space.

Furthermore, the previous calculation was incorrect: it neglected to
multiply by nr_vs_entries, instead comparing whether twice the size of
a single VS URB entry was bigger than the entire URB space.  It also
neglected to take into account that vs_size is in units of 128 byte
blocks, while urb_size is in bytes.

Despite the above problems, the calculations resulted in an acceptable
programming of the URB in most cases, at least on GT2.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>

(cherry picked from commit 42a8057000)
2011-04-20 15:28:45 -07:00
Ian Romanick
ff77a69ae3 intel: Fix ROUND_DOWN_TO macro
Previously the macro would (ALIGN(value - alignment - 1, alignment)).
At the very least, this was missing parenthesis around "alignment -
1".  As a result, if value was already aligned, it would be reduced by
alignment.  Condisder:

     x = ROUND_DOWN_TO(256, 128);

This becomes:

    x = ALIGN(256 - 128 - 1, 128);

Or:

    x = ALIGN(127, 128);

Which becomes:

    x = 128;

This macro is currently only used in brw_state_batch
(brw_state_batch.c).  It looks like the original version of this macro
would just use too much space in the batch buffer.  It's possible, but
not at all clear to me from the code, that the original behavior is
actually desired.

In any case, this patch does not cause any piglit regressions on my
Ironlake system.

I also think that ALIGN_FLOOR would be a better name for this macro,
but ROUND_DOWN_TO matches rounddown in the Linux kernel.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Whitwell <keithw@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
(cherry picked from commit 7e809f0b8d)
2011-04-20 15:28:45 -07:00
Eric Anholt
510fb3269e i965: Fix the VS thread limits for GT1, and clarify the WM limits on both.
(cherry picked from commit 904b8ba1bb)
2011-04-20 15:28:45 -07:00
Kenneth Graunke
62fad6cb30 intel: Add IS_GT2 macro for recognizing Sandybridge GT2 systems.
Also, refactor IS_GEN6 to use the IS_GT1 and IS_GT2 macros.

(cherry picked from commit ee8d182426)
2011-04-20 15:28:45 -07:00
Kenneth Graunke
0f02b4253d i965: Resolve implied moves in brw_dp_READ_4_vs_relative.
Fixes piglit test glsl-vs-arrays-3 on Sandybridge, as well as garbage
rendering in 3DMarkMobileES 2.0's Taiji demo and GLBenchmark 2.0's
Egypt and PRO demos.

NOTE: This a candidate for stable release branches.  It depends on
commit 9a21bc6401.
(cherry picked from commit 9d60a7ce08)
2011-04-20 15:28:45 -07:00
Kenneth Graunke
773ea1a234 i965: Refactor Sandybridge implied move handling.
This is actually a squash of the following two commits.  The first
caused a regression, and the second fixes it.  The refactor of the
first is needed for another patch that fixes an SNB bug.

    i965: Refactor Sandybridge implied move handling.

    This was open-coded in three different places, and more are necessary.
    Extract this into a function so it can be reused.

    Unfortunately, not all variations were the same: in particular, one set
    compression control and checked that the source register was not
    ARF_NULL.  This seemed like a good idea, so all cases now do so.
    (cherry picked from commit 9a21bc6401)

    i965: Fix null register use in Sandybridge implied move resolution.

    Fixes regressions caused by commit 9a21bc6401, namely GPU hangs when
    running gnome-shell or compiz (Mesa bugs #35820 and #35853).

    I incorrectly refactored the case that dealt with ARF_NULL; even in that
    case, the source register needs to be changed to the MRF.

    NOTE: This is a candidate for the 7.10 branch (if 9a21bc6401 is
    cherry-picked, take this one too).
    (cherry picked from commit a019dd0d6e)
2011-04-20 15:28:45 -07:00
Zou Nan hai
41d5dd4a6e i965: Align interleaved URB write length to 2
The BSpec says that interleave URB writes must be aligned, so this
patch fulfills that requirement.

This is half of patch 6c32477 from master.

Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
2011-04-20 15:28:45 -07:00
Brian Paul
2c83c28608 docs: replace llvmpipe/README with docs/llvmpipe.html 2011-04-20 09:57:48 +01:00
Brian Paul
d4a82b3146 llvmpipe: document issue with LLVM 2.8 and earlier with AVX 2011-04-20 09:57:07 +01:00
José Fonseca
8d539264ca llvmpipe: Update readme. 2011-04-20 09:56:39 +01:00
Alan Hourihane
c13a7748de Check for out of memory when creating fence 2011-04-20 09:51:48 +01:00
Vinson Lee
f814e28e6d gallivm: Disable MMX-disabling code on llvm-2.9.
The disable-mmx option was removed in llvm-2.9svn by revisions 122188
and 122189.

Fixes FDO bug 32564.
2011-04-20 09:50:55 +01:00
Brian Paul
7e325d5e62 Makefile: add missing Scons files 2011-04-19 09:11:29 -06:00
Brian Paul
4373f6b9ad scons: remove dangling reference to state_trackers/python/SConscript 2011-04-19 09:06:54 -06:00
Tom Stellard
1f8c5611a2 r300/compiler: Fix dataflow analysis bug with ELSE blocks
Writes within ELSE blocks were being ignored which prevented us from
discovering all possible writers for some register values.

Fixes piglit glsl-fs-raytrace-bug27060

(cherry picked from commit ffc1d166d2)
2011-04-18 21:54:58 -07:00
Tom Stellard
bf9a469cb6 r300/compiler: Fix incorrect presubtract conversion
ADD instructions with constant swizzles can't be converted to
presubtract operations.

(cherry picked from commit 0fa81d6d05)
2011-04-16 14:40:20 -07:00
Ian Romanick
f890661a9a ir_to_mesa: Handle shadow compare w/projection and LOD bias correctly
The code would previously handle the projection, then swizzle the
shadow comparitor into place.  However, when the projection is done
"by hand," as in the TXB case, the unprojected shadow comparitor would
over-write the projected shadow comparitor.

Shadow comparison with projection and LOD is an extremely rare case in
real application code, so it shouldn't matter that we don't handle
that case with the greatest efficiency.

NOTE: This is a candidate for the stable branches.

Reviewed-by: Brian Paul <brianp@vmware.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=32395
(cherry picked from commit 9996a86085)
2011-04-11 19:06:48 -07:00
Ian Romanick
b31425aae9 glsl: Fix off-by-one error setting max_array_access for non-constant indexing
NOTE: This is a candidate for the stable branches.
(cherry picked from commit 0d9d036004)
2011-04-11 19:06:48 -07:00
Kenneth Graunke
6c7a5d52ee i965/fs: Switch W and 1/W in Sandybridge interpolation setup.
Various documentation mentions that "W" is handed to the WM stage,
but further digging seems to indicate that they really mean 1/W.

The code here is still unclear, but changing this fixes piglit
test "fragcoord_w" on Sandybridge as well as a Khronos ES2 conformance
test.  I also tested 3DMarkMobile ES2.0's taiji and hoverjet demos, as
well as Nexuiz, just to be safe.

(cherry-picked from commit 5d7fefb9af)
2011-04-11 13:21:53 -07:00
Brian Paul
3c405079fd docs: add link to 7.10.2 release notes 2011-04-11 13:13:58 -06:00
Ian Romanick
1fb1012bf1 docs: Add 7.10.2 md5sums 2011-04-06 13:44:29 -07:00
Ian Romanick
b0866f6cfd docs: update news.html with 7.10.2 release 2011-04-06 13:41:43 -07:00
Ian Romanick
c6a68814b4 docs: Add change log to 7.10.2 release notes 2011-04-06 13:32:09 -07:00
Ian Romanick
3831ba6dd1 mesa: Remove nonexistant files from _FILES lists
This allows 'make -j1 tarballs' to work.
2011-04-06 13:29:59 -07:00
Ian Romanick
812e11f4b4 mesa: set version string to 7.10.2 2011-04-06 10:01:02 -07:00
Ian Romanick
0c69a2fda5 docs: Initial bits of 7.10.2 release notes 2011-04-06 09:59:32 -07:00
Tom Stellard
6e08ceb77d r300/compiler: Don't try to convert RGB to Alpha in full instructions
(cherry picked from commit cd2857fae1)
2011-04-06 00:41:29 -07:00
Ian Romanick
50dccfdbef Revert "i965: bump VS thread number to 60 on SNB"
Increasing the number of VS threads beyond 1 causes some regressions
in vertex shader tests on Sugar Bay GT1 systems.

This reverts commit c21a44463a.

References: https://bugs.freedesktop.org/show_bug.cgi?id=35730
2011-04-05 16:14:39 -07:00
Ian Romanick
22035e3d84 glcpp: Refresh autogenerated lexer files
These are the results of commit 9ebb904 and 7cf7c966.
2011-04-05 16:09:47 -07:00
Tom Stellard
62b75d889c r300/compiler: Fix vertex shader MAD instructions with constant swizzles
(cherry picked from commit d8361400b7)
2011-04-05 09:26:26 -07:00
Brian Paul
7c9d66c60f glsl: silence warning in printf() with a cast
(cherry picked from commit 0eab3a8a97)
2011-04-05 09:12:20 -06:00
Fabian Bieler
1068b7f9ed st/mesa: Apply LOD from texture object
Signed-off-by: Brian Paul <brianp@vmware.com>
(cherry picked from commit 5d5db24a26)
2011-04-05 09:10:49 -06:00
Brian Paul
e17ac39d38 st/mesa: Apply LOD bias from correct texture unit
Signed-off-by: Brian Paul <brianp@vmware.com>
(cherry picked from commit d863bd7d7b)
2011-04-05 09:10:26 -06:00
Brian Paul
33129c040b mesa: Guard against null pointer deref in fbo validation
This matches the behaviour below when numSamples is compared.

At least with the gallium state tracker this can actually occur if st_render_texture fails.

Signed-off-by: Brian Paul <brianp@vmware.com>

(cherry picked from commit c7339d42c6)
2011-04-05 07:54:04 -06:00
Brian Paul
ed5c9ae016 docs: update prerequisites, remove old demo info
(cherry picked from commit 32a11e5324)
2011-04-04 11:31:30 -06:00
Brian Paul
06422ce0d2 docs: update info about Mesa packaging/contents
(cherry picked from commit 48f696c793)
2011-04-04 11:31:16 -06:00
Marek Olšák
cd2cf02139 r300/compiler: apply the texture swizzle to shadow pass and fail values too
Piglit tests:
- glsl-fs-shadow2d-01
- glsl-fs-shadow2d-02
- glsl-fs-shadow2d-03
- fs-shadow2d-red-01
- fs-shadow2d-red-02
- fs-shadow2d-red-03

NOTE: This is a candidate for the stable branches.
(cherry picked from commit 0d96ae8fc7)
2011-04-04 19:14:29 +02:00
Marek Olšák
f3a21be95e r300/compiler: propagate SaturateMode down to the result of shadow comparison
NOTE: This is a candidate for the stable branches.
(cherry picked from commit 2679760834)
2011-04-04 19:14:20 +02:00
Alex Deucher
5a3f1aee64 r600g: add some additional ontario pci ids
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
2011-04-04 11:27:25 -04:00
Alex Deucher
0372db6fa8 r600c: add new ontario pci ids
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
2011-04-04 11:27:09 -04:00
Marek Olšák
868ca30235 r300g: tell the GLSL compiler to lower the continue opcode
NOTE: This is a candidate for the stable branches.
(cherry picked from commit f814dd7a81)
2011-04-03 19:37:43 +02:00
Kenneth Graunke
b39603e008 glsl: Accept precision qualifiers on sampler types, but only in ES.
GLSL 1.30 states clearly that only float and int are allowed, while the
GLSL ES specification's issues section states that sampler types may
take precision qualifiers.

Fixes compilation failures in 3DMarkMobileES 2.0 and GLBenchmark 2.0.

(cherry-picked from commit 8752824f27)
2011-04-02 20:11:10 -07:00
Kenneth Graunke
73f7453318 i965/fs: Fix linear gl_Color interpolation on pre-gen6 hardware.
Civilization 4's shaders make heavy use of gl_Color and don't use
perspective interpolation.  This resulted in rivers, units, trees, and
so on being rendered almost entirely white.  This is a regression
compared to the old fragment shader backend.

Found by inspection (comparing the old and new FS backend code).

References: https://bugs.freedesktop.org/show_bug.cgi?id=32949

(cherry-picked from commit 0c8beb0ab5)
2011-04-02 20:10:40 -07:00
Tom Stellard
a947d9be61 prog_optimize: Fix reallocating registers for shaders with loops
Registers that are used inside of loops need to be considered live
starting with the first instruction of the outermost loop.

https://bugs.freedesktop.org/show_bug.cgi?id=34370

(cherry picked from commit 18dcbd358f)

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-03-31 21:24:32 -07:00
Jerome Glisse
ed4aa47d42 r600g: move user fence into base radeon structure
This avoid any issue when context is free and we still try to
access fence through radeon structure.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
(cherry picked from commit 63b9790a55)
2011-03-30 11:06:52 +02:00
Michel Dänzer
5bbaf1992c Use proper source row stride when getting depth/stencil texels.
(cherry picked from commit b082e04619)
2011-03-30 10:54:51 +02:00
Benjamin Franzke
71b06c63ce st/dri: Fix surfaceless gl using contexts with previous bound surfaces
ctx->dPriv might be != NULL then draw which is NULL is accessed:

struct dri_drawable *draw = dri_drawable(driDrawPriv);
[..]
if (ctx->dPriv != driDrawPriv) {
      ctx->dPriv = driDrawPriv;
      draw->texture_stamp = driDrawPriv->lastStamp - 1;
}

Cherry-picked from 0acb31be17

Signed-off-by: Jakob Bornecrantz <wallbraker@gmail.com>
2011-03-30 02:26:41 +02:00
Henri Verbeet
7fcaf9ae80 st/mesa: Validate state before doing blits.
Specifically, this ensures things like the front buffer actually exist. This
fixes piglt fbo/fbo-sys-blit and fd.o bug 35483.

Signed-off-by: Henri Verbeet <hverbeet@gmail.com>
(cherry picked from commit 5d7c27f5ec)
2011-03-30 00:53:07 +02:00