summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* mesa: Bump version number to 8.0 (final)mesa-8.0Ian Romanick2012-02-093-3/+3
| | | | Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
* mesa: fix maximum allowed proxy texture size conditionAnuj Phogat2012-02-091-11/+11
| | | | | | | | | | | | | | | | | | | | | | width, height parameter in glTexImage2D() includes: texture image width + 2 * border (if any). So when doing the texture size check in _mesa_test_proxy_teximage() width and height should not exceed maximum supported size for target texture type + 2 * border. i.e. 1 << (ctx->Const.MaxTextureLevels - 1) + 2 * border Texture border is anyway stripped out before it is given to intel or gallium drivers. This patch fixes Intel oglconform test case: max_values negative.textureSize.textureCube Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44970 Note: This is a candidate for mesa 8.0 branch. Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Ian Romanick <idr@freedesktop.org> Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit ea228d97f811092b9ffcb90565184a7a8f089477)
* dri: Add Unigine Tropics as an app that requires the GLSL warn workaround.Eric Anholt2012-02-071-0/+3
| | | | | | | | I wasn't seeing it be needed because of the previous bug. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> (cherry picked from commit b8c9252570d126e06607cd28b14f0fe3a2ffe4cf)
* dri: Fix typo in xml file that made all applications use the workaround.Eric Anholt2012-02-071-1/+1
| | | | | | Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> (cherry picked from commit 4dd2743d4542bedd935134d351e528ad574f7ee5)
* dri: Add a default drirc to be installed to provide application workarounds.Eric Anholt2012-02-071-0/+7
| | | | | | | | | | | | | Specifially, this being present works around a bug in Unigine Sanctuary on i965 which previously resulted in bad rendering. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit ff2497dca39d688bbceba9f524a61e99d93a9607) NOTE: Compared to ff2497d this does not install the default drirc. The pre-automake build system is sufficiently braindamaged to make this exceptionally difficult.
* vbo: fix a building errorChih-Wei Huang2012-02-071-0/+2
| | | | | | | Signed-off-by: Marek Olšák <maraeo@gmail.com> NOTE: This is a candidate for the 8.0 branch. (cherry picked from commit f8be4f33d31d004bfcf090fa7d4aa37b750e43af)
* glsl: Add error case for switch() with two default cases.Eric Anholt2012-02-072-0/+16
| | | | | | | | | Fixes piglit switch-case-duplicated.vert. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (cherry picked from commit 57e44371a5b6aa8122b6a482ed6bd33e797ea1d2)
* glsl: Throw an error when faced with a duplicated switch() case label.Eric Anholt2012-02-072-0/+27
| | | | | | | | | | The error message I chose matches gcc's error. Fixes piglit switch-case-duplicated.vert. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (cherry picked from commit 140632190cf41e6a035ca199b181091d4ed46986)
* glsl: Add other missing error location information for switch statements.Eric Anholt2012-02-071-0/+4
| | | | | | | NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (cherry picked from commit 01a5a2c9d761d4c9d72c236084efee700dcb28b8)
* glsl: Add missing location info to case labels.Eric Anholt2012-02-071-0/+2
| | | | | | | | | Otherwise, the upcoming error messages said the location was 0:0(0). NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (cherry picked from commit 663dcbbffeaedf0643e7e9d930ccfbcd698d1d9c)
* glsl: Throw the required error when a case label is a non-constant.Eric Anholt2012-02-071-2/+14
| | | | | | | | | | | | | It's not quite spelled out in the spec text, but the grammar indicates that only constant values are allowed as switch() case labels (and only constant values make sense, anyway). Fixes piglit glsl-1.30/compiler/switch-statement/switch-case-uniform-int.vert. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (cherry picked from commit 2c3e10e71935506798c413363df27afc4348fb53)
* glsl: Save and restore the whole switch state for nesting.Eric Anholt2012-02-073-260/+255
| | | | | | | | | | This stuffs them all in a struct for sanity. Fixes piglit glsl-1.30/execution/switch/fs-uniform-nested. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (cherry picked from commit 22d81f154fed9e004cca91807808ae3b81b01ced)
* mesa: Fix the error message function names for glFlushMappedBufferRange().Eric Anholt2012-02-071-7/+7
| | | | | Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 27af00eac8c574c2fc145e333d1c0ade1fd91cda)
* mesa: Fix bad-enum/no-buffer error handling for buffer object functions.Eric Anholt2012-02-071-87/+39
| | | | | | | | | | | | | | | | For all the extension entrypoints using the get_buffer() helper, they wanted the same error handling. In some cases, the error was doing the same error return whether target was a bad enum, or a user buffer wasn't bound. (Actually, GL_ARB_map_buffer_range doesn't specify the error for a zero buffer being bound for MapBufferRange, though it does for FlushMappedBufferRange. This appears to be an oversight). Fixes piglit GL_ARB_copy_buffer/negative-bound-zero. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit f20fb80a916d9f88dbc7efc43d4c31e038cb70c6)
* glsl: Avoid ralloc_stealing a long-lived object to a short-lived parentCarl Worth2012-02-071-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit 6ecee54a9aecc120cb68b02f7e14dcac86b9eca2 a call to talloc_reference was replaced with a call to talloc_steal. This was in preparation for moving to ralloc which doesn't support reference counting. The justification for talloc_steal within token_list_append in that commit is that the tokens are being copied already. But the copies are shallow, so this does not work. Fortunately, the lifetime of these tokens is easy to understand. A token list for "replacements" is created and stored in a hash table when a function-like macro is defined. This list will live until the macro is #undefed (if ever). Meanwhile, a shallow copy of the list is created when the macro is used and the list expanded. This copy is short-lived, so is unsuitable as a new parent. So we can just let the original, longer-lived owner continue to own the underlying objects and things will work. This fixes bug #45082: "ralloc.c:78: get_header: Assertion `info->canary == 0x5A1106' failed." when using a macro in GLSL https://bugs.freedesktop.org/show_bug.cgi?id=45082 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> NOTE: This is a candidate for stable release branches. (cherry picked from commit cd2e2187cb45accb13bf89ef297324332c46f379)
* mesa: reference shared state in glPushAttrib(GL_TEXTURE_BIT)Brian Paul2012-02-071-0/+13
| | | | | | | | | | | | | This fixes a dangling texture object pointer bug hit via wglShareLists(). When we push the GL_TEXTURE_BIT state we may push references to the default texture objects which are owned by the gl_shared_state object. We don't want to accidentally delete that shared state while the attribute stack references shared objects. So keep a reference to it. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <jfonseca@vmware.com> (cherry picked from commit a1471e4877515e2ce4fcc129c4ce26f5c306b193)
* mesa: use new _mesa_reference_shared_state() functionBrian Paul2012-02-073-38/+49
| | | | | | | | | | This cleans up the reference counting of shared context state. The next patch will use this to fix an actual bug. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <jfonseca@vmware.com> (cherry picked from commit 361cd53a77dd48fbf2a0321446c0b7c07365bff9)
* i965: Add a driconf option to force GLSL extension behavior to "warn".Eric Anholt2012-02-073-1/+14
| | | | | | | | | | This can be used to work around broken application behavior, like in Unigine where it attempts to use texture arrays without declaring either "#extension GL_EXT_texture_array : enable" or "#version 130". NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit 642247883fb9e6dce9bad724f7f6503321e0ef6f)
* mesa: Add a flag for forcing all GLSL extensions to "warn".Eric Anholt2012-02-072-0/+9
| | | | | | NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit b9e27cc1426e3242a003fa5ae91fab330694009a)
* i965/vs: Avoid allocating registers in to the gen7 MRF hack region.Eric Anholt2012-02-073-3/+6
| | | | | | | | This is the corresponding fix to the previous one for the FS, but I don't have a particular test for it. NOTE: This is a candidate for the 8.0 branch. (cherry picked from commit 9195191e50429d9cf25e6498f9fb108758ac2be6)
* swrast: Fix fixed-function fragment processingChad Versace2012-02-079-44/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On i965, _mesa_ir_link_shader is never called. As a consequence, the current fragment program (ctx->FragmentProgram->_Current) exists but is invalid because it has no instructions. Yet swrast continued to attempt to use the empty program. To avoid using the empty program, this patch 1) defines a new function, _swrast_use_fragment_program, which checks if the current fragment program exists and differs from the fixed function fragment program, and, when appropriate, 2) replaces checks of the form if (ctx->FragmentProgram->_Current == NULL) with if (_swrast_use_fragment_program(ctx)) Fixes the following oglconform regressions on i965/gen6: api-fogcoord(basic.allCases.log) api-mtexcoord(basic.allCases.log) api-seccolor(basic.allCases.log) api-texcoord(basic.allCases.log) blend-separate(basic.allCases) colorsum(basic.allCases.log) The tests were ran with the GLXFBConfig: visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat ---------------------------------------------------------------------------- 0x021 24 tc 0 32 0 r y . 8 8 8 8 . . 0 24 8 0 0 0 0 0 0 None (Note: I originally believed that the hunk in _swrast_update_fragment_program was unnecessary. But it is required to fix blend-separate.) Note: This is a candidate for the 8.0 branch. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43327 Reveiwed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Ian Romanick <idr@freedesktop.org> Signed-off-by: Chad Versace <chad.versace@linux.intel.com> (cherry picked from commit 1c0f1dd42a50464eeb81de4aad8eecf24b3d6c89)
* mesa: Don't round-trip integer texture data through a floating point temp.Eric Anholt2012-02-071-21/+24
| | | | | | | | | | | | | | | | This was losing bits of precision. Fixes (with the previous commits): piglit EXT_texture_integer/getteximage-clamping piglit EXT_texture_integer/getteximage-clamping GL_ARB_texture_rg oglc advanced.mipmap.upload Regresses oglc negative.typeFormatMismatch.teximage from fail to abort, because it's been hitting texstore for a format/type combo that shouldn't happen. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 5f65598cc79eccd38bf7f95ab167ed62e575daf2)
* mesa: When unpacking signed integer pixel data, don't clamp to 0.Eric Anholt2012-02-071-33/+12
| | | | | | | | | | | | | In the core, we always treat spans of int/uint data as uint, so this extract function was truncating storage of integer pixel data to a n int texture to (0, max_int) instead of (min_int, max_int). There is probably missing code for handling truncation on conversion between pixel formats, still, but this does improve things. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit dadbec1e90415f0744eb91e684bf9d7496f474c0)
* mesa: Add clamping for packing of integer data.Eric Anholt2012-02-071-4/+4
| | | | | | | | | | | Mostly fixes piglit EXT_texture_integer/getteximage-clamping. The remaining failure involves precision loss on storing of int32 texture data (something I knew was an issue, but wasn't trying to test). NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 8b97bb02fb1a55a6b0fe558ea1eb97bb4dae0347)
* mesa: Add missing format unpack for some integer texture formats.Eric Anholt2012-02-071-0/+321
| | | | | | | | | | | | | | This cut and paste is pretty awful. I'm tempted to do a lot of this using preprocessor tricks for customizing the parameter type from a template function, but that's just a different sort of hideous. Fixes 8 Intel oglconform int-textures cases. NOTE: This is a candidate for the 8.0 branch. v2: Add alpha formats, too. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit de24ccabd6494125e10017e0914b3298ea3791ea)
* i965: Don't allow rendering to non-GL_RED/RG/RGBA integer textures.Eric Anholt2012-02-071-0/+11
| | | | | Fixes piglit EXT_texture_integer/fbo-blending. (cherry picked from commit 3a8cf3357abb50d4ee11cfb801f965e3df7592fb)
* intel: Pass the gl_renderbuffer to render_target_supported() vtable method.Eric Anholt2012-02-077-10/+17
| | | | | | | I'm going to want to go looking at it for an integer texture fix. NOTE: This is a candidate for the 8.0 branch. (cherry picked from commit 796f44d77906342e5912e7da6bdba1ba86bab9f0)
* intel: Make a renderbuffer wrapping a texture have the same _BaseFormat.Eric Anholt2012-02-071-1/+1
| | | | | | | | | Otherwise, when you asked for the _BaseFormat of an rb wrapping a GL_RGB texture, you got GL_RGBA because that's what we were storing the texture data as. NOTE: This is a candidate for the 8.0 branch. (cherry picked from commit 7cac88679bb600f35694e91859c4682c04c32f7a)
* intel: Simplify intel_renderbuffer_update_wrapper() by passing in the image.Eric Anholt2012-02-071-20/+9
| | | | | NOTE: This is a candidate for the 8.0 branch. (cherry picked from commit b73f5df6483b2e37235b258f705944321ee617f5)
* intel: Drop intel_wrap_miptree().Eric Anholt2012-02-071-53/+3
| | | | | | | | | Most of this function was just calling intel_renderbuffer_update_wrapper(), which was called immediately afterwards in the only caller. NOTE: This is a candidate for the 8.0 branch. (cherry picked from commit 74484c5d411788c855cf91a2017d763d6a8fb4f2)
* i965: fix inverted point sprite origin when rendering to FBOYuanhan Liu2012-02-073-5/+27
| | | | | | | | | | | | | | | | | | | | | When rendering to FBO, rendering is inverted. At the same time, we would also make sure the point sprite origin is inverted. Or, we will get an inverted result correspoinding to rendering to the default winsys FBO. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44613 NOTE: This is a candidate for stable release branches. v2: add the simliar logic to ivb, too (comments from Ian) simplify the logic operation (comments from Brian) v3: pick a better comment from Eric use != for the logic instead of ^ (comments from Ian) Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit eaf360e5bffc5630789367020252cd12fe586177)
* i965/fs: Fix rendering corruption in unigine tropics.Eric Anholt2012-02-074-4/+17
| | | | | | | | | | | | | We were allocating registers into the MRF hack region, resulting in sparkly renering in a few of the scenes. We could do better allocation by making an MRF class, having MRFs conflict with the corresponding GRFs, and tracking the live intervals of the "MRF"s and setting up the conflicts. But this is way easier for the moment. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit e910241e9754b6e673ed0fc3133c8b1de56e76c7)
* intel: Avoid divide by zero for very small linear blitsIan Romanick2012-02-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | If size is small (such as 1), pitch = ROUND_DOWN_TO(MIN2(size, (1 << 15) - 1), 4); makes pitch = 0. Then height = size / pitch; causes a division-by-zero exception. If pitch is zero, set height to 1 and avoid the division. This fixes piglit's bin/getteximage-formats test and glean's bufferObject test. NOTE: This is a candidate for the 8.0 release branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44971 (cherry picked from commit d59466279e45a1e9c3f9081f72fedbdf961afbe1)
* intel: Remove num_mapped_regions assertion from _intel_batchbuffer_flushIan Romanick2012-02-071-7/+0
| | | | | | | | | | | | | | | There are cases where a buffer can be mapped while another buffer is flushed. This can happen in the CopyPixels meta-op path for piglit's fbo-mipmap-copypix. After some discussion with Eric, it seems this assertion is no longer necessary, and it has always been too strict. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43328 Cc: Eric Anholt <eric@anholt.net> Reviewed-by: Chad Versace <chad.versace@linux.intel.com> (cherry picked from commit 65b096aeddd9b45ca038f44cc9adfff86c8c48b2)
* intel: FBOs with texture border are unsupportedIan Romanick2012-02-031-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FBOs differ from textures in a significant way. With textures, we can strip the border and get correct rendering except when the application fetches texels outside [0,1]. With an FBO, the pixel at (0,0) is in the border. The ARB_framebuffer_object spec says: "If the attached image is a texture image, then the window coordinates (x[w], y[w]) correspond to the texel (i, j, k), from figure 3.10 as follows: i = (x[w] - b) j = (y[w] - b) k = (layer - b) where <b> is the texture image's border width..." Since the border doesn't exist, we can never render any pixels in the correct location. Just mark these FBOs FRAMEBUFFER_UNSUPPORTED. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42336 (cherry picked from commit 87b4c9b322dabeba7c9a9d02e9efefd2c89e6625)
* glcpp: Fix so that trailing punctuation does not prevent macro expansionCarl Worth2012-02-031-1/+9
| | | | | | | | | | | | | | | | | | | | | The trick here is that flex always chooses the rule that matches the most text. So with a input text of "two:" which we want to be lexed as an IDENTIFIER token "two" followed by an OTHER token ":" the previous OTHER rule would match longer as a single token of "two:" which we don't want. We prevent this by forcing the OTHER pattern to never match any characters that appear in other constructs, (no letters, numbers, #, _, whitespace, nor any punctuation that appear in CPP operators). Fixes bug #44764: GLSL preprocessor doesn't replace defines ending with ":" https://bugs.freedesktop.org/show_bug.cgi?id=44764 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> NOTE: This is a candidate for stable release branches. (cherry picked from commit 7ab1c7f7926c75a07f33eb149d0fc17dcfaffd5e)
* gallium/dri: Handle xserver that doesn't send needless DRI2 invalidate eventsVille Syrjala2012-02-031-13/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Ever since xserver commit 531869448d07e00ae241120b59f3aaaa5709d59c, the server no longer sends invalidate events to clients, unless they have performed a GetBuffers request since the drawable was last invalidated. If the drawable gets invalidated immediately after the GetBuffers request was processed by the X server, it's possible that Xlib will process the invalidate event while waiting for the GetBuffers reply. So the server, thinking the client knows that the buffers are invalid, is waiting for another GetBuffers request before sending any more invalidate events. The client, on the other hand, believes the buffers to be valid, and thus is expecting to receive another invalidate event before it has to send another GetBuffers request. The end result is that the client never again sends a GetBuffers request. To avoid this problem, take a snapshot of the lastStamp before doing GetBuffers, and retry if the snapshot and the current lastStamp no longer match after the GetBuffers reply has been processed. Signed-off-by: Ville Syrjälä <syrjala@sci.fi> Signed-off-by: Dave Airlie <airlied@redhat.com> (cherry picked from commit 0fcc518964223d9baaa2b45e80afeb800beb872f)
* gallium/postprocess: move declarations before codeBrian Paul2012-02-021-2/+1
| | | | | To fix MSVC build. (cherry picked from commit 8cbe699c0dd9b8d4accf1eaa570689f813aa3c2f)
* gallium/postprocess: Just to be safe, reference all buffers from outsideLauri Kasanen2012-02-021-0/+10
| | | | | | | | | | Even though it should be safe to use them for one frame, better be sure. Suggested by Michael Dänzer. NOTE: This is a candidate for the 8.0 stable branch. Signed-off-by: Lauri Kasanen <cand@gmx.com> (cherry picked from commit 81938d2137a7a65521ca5a3cd7180902d063c5c0)
* gallium/postprocess: Fix depth logicLauri Kasanen2012-02-024-11/+4
| | | | | | | | | | This prevents a possible lapse of the depth buffer - the situation where the app and pp have different depth buffers. NOTE: This is a candidate for the 8.0 stable branch. Signed-off-by: Lauri Kasanen <cand@gmx.com> (cherry picked from commit c5976017e31828dd67fb54e8c11b863fffcac70b)
* gallium/postprocess: Proper reference counting of pp_jimenezmlaa depth buffer.Michel Dänzer2012-02-021-1/+2
| | | | | | | Fixes https://bugs.freedesktop.org/show_bug.cgi?id=40776 NOTE: This is a candidate for the stable branches. (cherry picked from commit 7219af5ec184d4f92682e75f3d992ae048005d6a)
* i965/gen6: Fix segfault in transform feedback to DYNAMIC_DRAW buffers.Paul Berry2012-02-021-1/+4
| | | | | | | | | | | | | | | | | | | When storing data in a buffer of type DYNAMIC_DRAW, we don't create a drm_intel_bo for it; instead we store the data in system memory and defer allocation of the GPU buffer until it is needed. Therefore, in brw_update_sol_surface(), we can't just consult the "buffer" field of the intel_buffer_object structure; we need to call intel_bufferobj_buffer() to ensure that the deferred allocation occurs. This parallels a similar fix for gen7 (see commit ba6f4c9). Fixes piglit test EXT_transform_feedback/buffer-usage on gen6. This is a candidate for the 8.0 release branch. Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commit 6bc08ee56991ac3ca0fa0728c3907835282332b8)
* i965/vs: Fix bogus assertion in emit_block_move()Paul Berry2012-02-021-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i965 processes assignments of whole structures using vec4_visitor::emit_block_move, a recursive function which visits each element of a structure or array (to arbitrary nesting depth) and copies it from the source to the destination. Then it increments the source and destination register numbers so that further recursive invocations will copy the rest of the structure. In addition, it sets the swizzle field for the source register to an appropriate value of swizzle_for_size(...) for the size of each element being copied, so that later optimization passes won't be fooled into thinking that unused vector elements are live. This all works fine. However, emit_block_move also contains an assertion to verify, before setting the swizzle field for the source register, that the source register doesn't already contain a nontrivial swizzle. The intention is to make sure that the caller of emit_block_move hasn't already done some swizzling of the data before the call, which emit_block_move would then counteract when it overwrites the swizzle field. But the assertion is at the lowest level of nesting of emit_block_move, which means that after the first element is copied, instead of checking the swizzle field set by the caller, it checks the swizzle field used when moving the previous element. That means that if the structure contains elements of different vector sizes (which therefore require different swizzles), the assertion will erroneously fire. This patch moves the assertion from emit_block_move to the calling function, vec4_visitor::visit(ir_assignment *). Since the caller is non-recursive, the assertion will only happen once, and won't be fooled by emit_block_move's modification of the swizzle field. This patch also reverts commit fe006a7 (i965/vs: Fix swizzle related assertion), which attempted to fix the bug by making the assertion more lenient, but only worked properly for structures, arrays, and matrices in which each constituent vector is the same size. This fixes the problem described in comment 9 of https://bugs.freedesktop.org/show_bug.cgi?id=40865. Unfortunately, it doesn't fix the whole bug, since the test in question is also failing due to lack of register spilling support in the VS. Fixes piglit test vs-assign-varied-struct. No piglit regressions on Sandy Bridge. This is a candidate for the 8.0 release branch. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40865#c9 Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit e2274aa7398d6d710683c1a2518353750700bcc0)
* mesa: Fix display list handling for GL_EXT_framebuffer_multisample.Eric Anholt2012-02-021-0/+3
| | | | | | | | | | | | | | | | From the extension spec: Added to section 5.4, as part of the discussion of which commands are not compiled into display lists: "Certain commands, when called while compiling a display list, are not compiled into the display list but are executed immediately. These are: ..., RenderbufferStorageMultisampleEXT..." Fixes piglit EXT_framebuffer_multisample/dlist. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 3d8c27f882b852ada86aac99a54fdb57d98a79ac)
* mesa: Fix display list handling for EXT_framebuffer_object.Eric Anholt2012-02-021-0/+18
| | | | | | | | | | | | | | | | | | | | | Noticed when handling a similar problem in EXT_framebuffer_multisample. From the EXT_framebuffer_object spec: Added to section 5.4, as part of the discussion of which commands are not compiled into display lists: "Certain commands, when called while compiling a display list, are not compiled into the display list but are executed immediately. These are: ..., GenFramebuffersEXT, BindFramebufferEXT, DeleteFramebuffersEXT, CheckFramebufferStatusEXT, GenRenderbuffersEXT, BindRenderbufferEXT, DeleteRenderbuffersEXT, RenderbufferStorageEXT, FramebufferTexture1DEXT, FramebufferTexture2DEXT, FramebufferTexture3DEXT, FramebufferRenderbufferEXT, GenerateMipmapEXT..." Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 25dd80555d895fbe98e8f8099283992d350f22a2)
* mesa: fix maximum allowed proxy texture size conditionAnuj Phogat2012-02-021-11/+11
| | | | | | | | | | | | | | | | | | | | | width, height parameter in glTexImage2D() includes: texture image width + 2 * border (if any). So when doing the texture size check in _mesa_test_proxy_teximage() width and height should not exceed maximum supported size for target texture type. i.e. 1 << (ctx->Const.MaxTextureLevels - 1) Texture border is anyway stripped out before it is given to intel or gallium drivers. This patch fixes Intel oglconform test case: max_values Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44970 Note: This is a candidate for mesa 8.0 branch. Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Ian Romanick <idr@freedesktop.org> Reviewed-by: Jose Fonseca <jfonseca@vmware.com> (cherry picked from commit 15986d21ebaaeedb234b066edba5cf7f6ea87a3c)
* mesa: set clamp bit in glGetTexImage for GL_UNSIGNED_NORMALIZEDAnuj Phogat2012-02-021-0/+9
| | | | | | | | | | | | | | Color clamping should be enabled in glGetTexImage if texture dataType is GL_UNSIGNED_NORMALIZED and format is GL_LUMINANCE or GL_LUMINANCE_ALPHA Fixes 2 Intel oglconform test cases: pxconv-gettex and pxtrans-gettex https://bugs.freedesktop.org/show_bug.cgi?id=40864 NOTE: This is a candidate for the 8.0 branch Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 5665b5cc31da70e833f80e7a17bfa034d2f7ba44)
* mesa: Fix copy-and-paste error in _mesa_pack_rgba_span_floatIan Romanick2012-02-021-3/+2
| | | | | | | | | | | | GL_RG_INTEGER only has two components, not three. I'll be surprised if anyone ever tries to glReadPixels(..., GL_SHORT, GL_RG_INTEGER, ...). This was found by inspection. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit 2e8f8cb383320b83ba5d85c27808ac2d841834e6)
* mesa: Fix copy-and-paste bug in do_row_3DIan Romanick2012-02-021-3/+3
| | | | | | | | | | | | | | Several of the half-float cases used 4 as the texel size when it should have been some smaller value. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43324 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43325 (cherry picked from commit 5c341b7df3c1058d586629394e53e9e26ae2cc01)
* mesa: Convert colors if span ChanType and renderbuffer data type don't matchIan Romanick2012-02-021-4/+15
| | | | | | | | | | | | | This is a partial revert of f9874fe. It turns out that the types don't always match. Specifically, this can happen when doing glCopyPixels from a float FBO to a RGBA8 FBO. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45429 Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 660ed923ded3552e023ef8c3dd9f92e6792f1bd2)