mesa: Changes to 'upstream-experimental'
Makefile | 2
bin/mklib | 19
configure.ac | 5
docs/devinfo.html | 40
docs/install.html | 52
docs/news.html | 15
docs/relnotes-7.4.3.html | 79
docs/relnotes-7.4.4.html | 68
docs/relnotes-7.5.html | 4
docs/relnotes.html | 9
include/GL/glew.h | 6
progs/demos/Makefile | 7
progs/demos/fbotexture.c | 108 -
progs/demos/fslight.c | 8
progs/fp/SConscript | 19
progs/fp/fp-tri.c | 2
progs/fp/point-position.c | 7
progs/fp/tri-depth.c | 9
progs/fp/tri-depth2.c | 7
progs/fp/tri-depthwrite.c | 6
progs/fp/tri-depthwrite2.c | 6
progs/fp/tri-inv.c | 6
progs/fp/tri-param.c | 8
progs/fp/tri-tex.c | 6
progs/tests/.gitignore | 2
progs/tests/Makefile | 2
progs/tests/SConscript | 2
progs/tests/scissor-viewport.c | 138 +
progs/tests/scissor.c | 168 +
progs/tests/zreaddraw.c | 4
progs/util/extfuncs.h | 101 +
progs/wgl/sharedtex_mt/sharedtex_mt.c | 30
progs/wgl/wglthreads/wglthreads.c | 64
progs/xdemos/glxcontexts.c | 160 -
scons/crossmingw.py | 2
scons/dxsdk.py | 66
scons/gallium.py | 62
scons/generic.py | 8
src/gallium/auxiliary/draw/draw_pt_elts.c | 3
src/gallium/auxiliary/indices/u_indices.c | 2
src/gallium/auxiliary/pipebuffer/pb_buffer.h | 14
src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c | 6
src/gallium/auxiliary/pipebuffer/pb_buffer_malloc.c | 6
src/gallium/auxiliary/pipebuffer/pb_bufmgr.h | 20
src/gallium/auxiliary/pipebuffer/pb_bufmgr_alt.c | 2
src/gallium/auxiliary/pipebuffer/pb_bufmgr_cache.c | 8
src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c | 30
src/gallium/auxiliary/pipebuffer/pb_bufmgr_fenced.c | 2
src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c | 26
src/gallium/auxiliary/pipebuffer/pb_bufmgr_ondemand.c | 6
src/gallium/auxiliary/pipebuffer/pb_bufmgr_pool.c | 20
src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c | 36
src/gallium/auxiliary/rtasm/rtasm_ppc.c | 6
src/gallium/auxiliary/tgsi/tgsi_dump.c | 18
src/gallium/auxiliary/util/u_gen_mipmap.c | 2
src/gallium/auxiliary/util/u_snprintf.c | 2
src/gallium/drivers/cell/ppu/cell_screen.c | 2
src/gallium/drivers/softpipe/sp_context.c | 16
src/gallium/drivers/softpipe/sp_context.h | 2
src/gallium/drivers/softpipe/sp_draw_arrays.c | 2
src/gallium/drivers/softpipe/sp_flush.c | 2
src/gallium/drivers/softpipe/sp_screen.c | 2
src/gallium/drivers/softpipe/sp_setup.c | 9
src/gallium/drivers/softpipe/sp_tex_sample.c | 2
src/gallium/drivers/trace/tr_dump.c | 4
src/gallium/drivers/trace/tr_dump.h | 6
src/gallium/include/pipe/p_defines.h | 1
src/gallium/include/pipe/p_format.h | 28
src/gallium/include/pipe/p_refcnt.h | 28
src/gallium/include/pipe/p_thread.h | 1
src/gallium/state_trackers/dri/dri_drawable.c | 2
src/gallium/state_trackers/glx/xlib/fakeglx.c | 2
src/gallium/state_trackers/python/retrace/interpreter.py | 46
src/gallium/state_trackers/python/tests/base.py | 8
src/gallium/state_trackers/python/tests/texture_sample.py | 243 ++
src/gallium/state_trackers/wgl/shared/stw_context.c | 82
src/gallium/state_trackers/wgl/shared/stw_device.c | 42
src/gallium/state_trackers/wgl/shared/stw_framebuffer.c | 144 -
src/gallium/state_trackers/wgl/shared/stw_framebuffer.h | 13
src/gallium/state_trackers/wgl/shared/stw_tls.c | 33
src/gallium/state_trackers/wgl/shared/stw_tls.h | 6
src/glew/glew.c | 4
src/glew/glewinfo.c | 2
src/glx/x11/dri_common.c | 4
src/glx/x11/glxcmds.c | 14
src/glx/x11/glxcurrent.c | 2
src/mesa/drivers/common/driverfuncs.c | 1
src/mesa/drivers/dri/common/dri_util.c | 6
src/mesa/drivers/dri/i915/i830_state.c | 21
src/mesa/drivers/dri/i915/i915_tex_layout.c | 5
src/mesa/drivers/dri/i965/brw_context.h | 5
src/mesa/drivers/dri/i965/brw_sf_state.c | 7
src/mesa/drivers/dri/i965/brw_vs_constval.c | 44
src/mesa/drivers/dri/i965/brw_wm.c | 14
src/mesa/drivers/dri/i965/brw_wm.h | 3
src/mesa/drivers/dri/i965/brw_wm_fp.c | 21
src/mesa/drivers/dri/i965/brw_wm_glsl.c | 32
src/mesa/drivers/dri/i965/brw_wm_pass2.c | 21
src/mesa/drivers/dri/i965/brw_wm_sampler_state.c | 10
src/mesa/drivers/dri/intel/intel_buffer_objects.c | 55
src/mesa/drivers/dri/intel/intel_buffer_objects.h | 3
src/mesa/drivers/dri/intel/intel_buffers.c | 2
src/mesa/drivers/dri/intel/intel_clear.c | 8
src/mesa/drivers/dri/intel/intel_context.c | 13
src/mesa/drivers/dri/intel/intel_context.h | 6
src/mesa/drivers/dri/intel/intel_pixel_bitmap.c | 10
src/mesa/drivers/dri/intel/intel_pixel_draw.c | 22
src/mesa/drivers/dri/intel/intel_screen.c | 26
src/mesa/drivers/dri/intel/intel_tex_image.c | 12
src/mesa/drivers/dri/r200/r200_context.c | 2
src/mesa/drivers/dri/r300/r300_context.c | 2
src/mesa/drivers/dri/radeon/radeon_context.c | 2
src/mesa/drivers/x11/fakeglx.c | 2
src/mesa/main/api_noop.c | 16
src/mesa/main/api_validate.c | 4
src/mesa/main/attrib.c | 90
src/mesa/main/compiler.h | 4
src/mesa/main/config.h | 8
src/mesa/main/context.c | 41
src/mesa/main/context.h | 3
src/mesa/main/debug.c | 2
src/mesa/main/dlist.c | 40
src/mesa/main/enums.c | 10
src/mesa/main/fbobject.c | 5
src/mesa/main/image.c | 2
src/mesa/main/macros.h | 14
src/mesa/main/matrix.c | 10
src/mesa/main/mipmap.c | 3
src/mesa/main/mtypes.h | 6
src/mesa/main/queryobj.c | 16
src/mesa/main/queryobj.h | 3
src/mesa/main/texenv.c | 4
src/mesa/main/texenvprogram.c | 1
src/mesa/main/texformat_tmp.h | 28
src/mesa/main/texgetimage.c | 6
src/mesa/main/teximage.c | 2
src/mesa/main/texobj.c | 65
src/mesa/main/texobj.h | 3
src/mesa/main/texstate.c | 9
src/mesa/main/texstore.c | 39
src/mesa/main/varray.c | 29
src/mesa/main/version.h | 2
src/mesa/main/viewport.c | 4
src/mesa/shader/arbprogparse.c | 5
src/mesa/shader/shader_api.c | 1
src/mesa/shader/slang/slang_codegen.c | 1279 +++++++++++---
src/mesa/shader/slang/slang_codegen.h | 17
src/mesa/shader/slang/slang_compile.c | 3
src/mesa/shader/slang/slang_compile_operation.c | 68
src/mesa/shader/slang/slang_compile_operation.h | 62
src/mesa/shader/slang/slang_compile_variable.h | 1
src/mesa/shader/slang/slang_link.c | 21
src/mesa/shader/slang/slang_preprocess.c | 94 -
src/mesa/shader/slang/slang_print.c | 10
src/mesa/state_tracker/st_atom_shader.c | 57
src/mesa/state_tracker/st_cb_accum.c | 244 +-
src/mesa/state_tracker/st_cb_bufferobjects.c | 5
src/mesa/state_tracker/st_cb_clear.c | 18
src/mesa/state_tracker/st_cb_drawpixels.c | 30
src/mesa/state_tracker/st_cb_fbo.c | 147 -
src/mesa/state_tracker/st_cb_fbo.h | 13
src/mesa/state_tracker/st_cb_readpixels.c | 13
src/mesa/state_tracker/st_context.c | 15
src/mesa/state_tracker/st_extensions.c | 5
src/mesa/state_tracker/st_format.c | 14
src/mesa/state_tracker/st_format.h | 4
src/mesa/state_tracker/st_framebuffer.c | 28
src/mesa/state_tracker/st_gen_mipmap.c | 3
src/mesa/state_tracker/st_program.c | 43
src/mesa/swrast/s_context.c | 1
src/mesa/swrast/s_texfilter.c | 2
src/mesa/vbo/vbo_attrib_tmp.h | 16
src/mesa/vbo/vbo_context.h | 2
src/mesa/vbo/vbo_exec_api.c | 36
src/mesa/vbo/vbo_exec_array.c | 4
175 files changed, 3935 insertions(+), 1418 deletions(-)
New commits:
commit 418987ff05f892d3c33ed4ddbe856c496b05ea14
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:54:44 2009 -0600
docs: detect when too many varying vars are used
diff --git a/docs/relnotes-7.5.html b/docs/relnotes-7.5.html
index d0dba30..0456921 100644
--- a/docs/relnotes-7.5.html
+++ b/docs/relnotes-7.5.html
@@ -69,6 +69,7 @@ including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0
<li>Updated SPARC assembly optimizations (David S. Miller)
<li>Initial support for separate compilation units in GLSL compiler.
<li>Increased max number of generic GLSL varying variables to 16 (formerly 8).
+<li>GLSL linker now detects when too many varying variables are used.
</ul>
commit 21320b24c5350943da9ed4cb0f1e8b05a09d4ef2
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:53:46 2009 -0600
glsl: check number of varying variables against the limit
Link fails if too many varying vars.
(cherry picked from master, commit cc58fbcf2c5c88f406818db60910f537e03610d6)
diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c
index 8c9fe1e..387659f 100644
--- a/src/mesa/shader/slang/slang_link.c
+++ b/src/mesa/shader/slang/slang_link.c
@@ -97,7 +97,8 @@ bits_agree(GLbitfield flags1, GLbitfield flags2, GLbitfield bit)
* which inputs are centroid-sampled, invariant, etc.
*/
static GLboolean
-link_varying_vars(struct gl_shader_program *shProg, struct gl_program *prog)
+link_varying_vars(GLcontext *ctx,
+ struct gl_shader_program *shProg, struct gl_program *prog)
{
GLuint *map, i, firstVarying, newFile;
GLbitfield *inOutFlags;
@@ -156,8 +157,12 @@ link_varying_vars(struct gl_shader_program *shProg, struct gl_program *prog)
var->Flags);
}
+ if (shProg->Varying->NumParameters > ctx->Const.MaxVarying) {
+ link_error(shProg, "Too many varying variables");
+ return GL_FALSE;
+ }
+
/* Map varying[i] to varying[j].
- * Plus, set prog->Input/OutputFlags[] as described above.
* Note: the loop here takes care of arrays or large (sz>4) vars.
*/
{
@@ -725,11 +730,11 @@ _slang_link(GLcontext *ctx,
/* link varying vars */
if (shProg->VertexProgram) {
- if (!link_varying_vars(shProg, &shProg->VertexProgram->Base))
+ if (!link_varying_vars(ctx, shProg, &shProg->VertexProgram->Base))
return;
}
if (shProg->FragmentProgram) {
- if (!link_varying_vars(shProg, &shProg->FragmentProgram->Base))
+ if (!link_varying_vars(ctx, shProg, &shProg->FragmentProgram->Base))
return;
}
commit 4181a107cba1dfcb362084fc98be0c5e7e2aedde
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:47:57 2009 -0600
docs: fix typos, remove old text from relnotes file
diff --git a/docs/relnotes.html b/docs/relnotes.html
index a52c4a7..4764eb6 100644
--- a/docs/relnotes.html
+++ b/docs/relnotes.html
@@ -9,20 +9,13 @@
<H1>Release Notes</H1>
<p>
-Mesa uses an even/odd version number scheme like the Linux kernel.
-Odd numbered versions (such as 6.5) designate new developmental releases.
-Even numbered versions (such as 6.4) designate stable releases.
-</p>
-
-
-<p>
The release notes summarize what's new or changed in each Mesa release.
</p>
<UL>
<LI><A HREF="relnotes-7.5.html">7.5 release notes</A>
-<LI><A HREF="relnotes-7.4.4.html">7.4.2 release notes</A>
-<LI><A HREF="relnotes-7.4.3.html">7.4.2 release notes</A>
+<LI><A HREF="relnotes-7.4.4.html">7.4.4 release notes</A>
+<LI><A HREF="relnotes-7.4.3.html">7.4.3 release notes</A>
<LI><A HREF="relnotes-7.4.2.html">7.4.2 release notes</A>
<LI><A HREF="relnotes-7.4.1.html">7.4.1 release notes</A>
<LI><A HREF="relnotes-7.4.html">7.4 release notes</A>
commit 2a41df86a3580f4d3e8379955492b886056c8b36
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:46:21 2009 -0600
docs: bring over news updates from 7.4 branch
diff --git a/docs/news.html b/docs/news.html
index 8cf2f91..ee4a86c 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -11,6 +11,21 @@
<H1>News</H1>
+<h2>June 23, 2009</h2>
+<p>
+<a href="relnotes-7.4.4.html">Mesa 7.4.4</a> is released.
+This is a stable release that fixes a regression in the i915/i965 drivers
+that slipped into the 7.4.3 release.
+</p>
+
+
+<h2>June 19, 2009</h2>
+<p>
+<a href="relnotes-7.4.3.html">Mesa 7.4.3</a> is released.
+This is a stable release fixing bugs since the 7.4.2 release.
+</p>
+
+
<h2>May 15, 2009</h2>
<p>
<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released.
commit 318122b60a2af704086f719d1d9d36bede6f4e69
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:45:54 2009 -0600
docs: bring in 7.4.3 and 7.4.4 release notes, news
diff --git a/docs/relnotes-7.4.3.html b/docs/relnotes-7.4.3.html
new file mode 100644
index 0000000..35b5dcc
--- /dev/null
+++ b/docs/relnotes-7.4.3.html
@@ -0,0 +1,79 @@
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.4.3 Release Notes / 19 June 2009</H1>
+
+<p>
+Mesa 7.4.3 is a stable development release fixing bugs since the 7.4.2 release.
+</p>
+<p>
+Mesa 7.4.3 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+34c5a6c47ed51f31c4fa36e269831352 MesaLib-7.4.3.tar.gz
+70a983ba3deaa8bd63b18bbab283f698 MesaLib-7.4.3.tar.bz2
+34f21b3205b271d575030aa98a2dda51 MesaLib-7.4.3.zip
+56752b7adede212e6097afb10d0c0d59 MesaDemos-7.4.3.tar.gz
+8ffa51c4833b1e298300a005e2d7ca2a MesaDemos-7.4.3.tar.bz2
+0037d24d41400d6fb9800ae55b8c863f MesaDemos-7.4.3.zip
+20e24f6692c0c90e7e3b220f79c4108d MesaGLUT-7.4.3.tar.gz
+03a4beeef74fc5ef0b1d6d04710e5a8a MesaGLUT-7.4.3.tar.bz2
+273788230adbdb9d57371309adedcf5f MesaGLUT-7.4.3.zip
+</pre>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fixed texture object reference counting bug (bug 21756)
+<li>Allow depth/stencil textures to be attached to GL_STENCIL_ATTACHMENT point
+ (SF bug 2793846)
+<li>Added missing glGet case for GL_VERTEX_ARRAY_BINDING_APPLE
+<li>Fixed some OSMesa build issues
+<li>Fixed a vertex buffer object crash
+<li>Fixed broken glTexImage3D() when image type = GL_BITMAP
+<li>Fixed some GLSL preprocessor bugs
+<li>Fixed framebuffer mem leak in i945/i965 DRI drivers
+<li>Fixed texture coordinate repeat bug in swrast (bug 21872)
+<li>Fixed incorrect viewport clamping (lower bound is zero, not one)
+<li>GLX fix for glean's makeCurrent test case
+</ul>
+
+
+
+<h2>Driver Status</h2>
+
+<pre>
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa/GLX (on Xlib) implements OpenGL 2.1
+OSMesa (off-screen) implements OpenGL 2.1
+Windows/Win32 implements OpenGL 2.1
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA unsupported
+Wind River UGL unsupported
+DJGPP unsupported
+GGI unsupported
+BeOS unsupported
+Allegro unsupported
+D3D unsupported
+</pre>
+
+</body>
+</html>
diff --git a/docs/relnotes-7.4.4.html b/docs/relnotes-7.4.4.html
new file mode 100644
index 0000000..2a34568
--- /dev/null
+++ b/docs/relnotes-7.4.4.html
@@ -0,0 +1,68 @@
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.4.4 Release Notes / 23 June 2009</H1>
+
+<p>
+Mesa 7.4.4 is a stable development release fixing bugs since the 7.4.3 release.
+</p>
+<p>
+Mesa 7.4.4 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+0b56fe5a88ab0c3c5b2da5068f63f416 MesaLib-7.4.4.tar.gz
+b66528d314c574dccbe0ed963cac5e93 MesaLib-7.4.4.tar.bz2
+2818076f3ba23fa87fdfe4602a637a18 MesaLib-7.4.4.zip
+3e77b208386c47b18165bce5ae317e2c MesaDemos-7.4.4.tar.gz
+628142ec9a54cd28cc027e6ce26cff47 MesaDemos-7.4.4.tar.bz2
+d08a30d30ab7174859aa709cba6c726d MesaDemos-7.4.4.zip
+e6e91ba16e274d40cf3a97ad3218af01 MesaGLUT-7.4.4.tar.gz
+e14bbb52517e8121b31f1387515365ab MesaGLUT-7.4.4.tar.bz2
+f10ed20469753c2b3d68c99854f80fd4 MesaGLUT-7.4.4.zip
+</pre>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fixed i965/i915 segfault in screen destruction (bug 22408)
+</ul>
+
+
+
+<h2>Driver Status</h2>
+
+<pre>
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa/GLX (on Xlib) implements OpenGL 2.1
+OSMesa (off-screen) implements OpenGL 2.1
+Windows/Win32 implements OpenGL 2.1
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA unsupported
+Wind River UGL unsupported
+DJGPP unsupported
+GGI unsupported
+BeOS unsupported
+Allegro unsupported
+D3D unsupported
+</pre>
+
+</body>
+</html>
diff --git a/docs/relnotes.html b/docs/relnotes.html
index 4574626..a52c4a7 100644
--- a/docs/relnotes.html
+++ b/docs/relnotes.html
@@ -21,6 +21,8 @@ The release notes summarize what's new or changed in each Mesa release.
<UL>
<LI><A HREF="relnotes-7.5.html">7.5 release notes</A>
+<LI><A HREF="relnotes-7.4.4.html">7.4.2 release notes</A>
+<LI><A HREF="relnotes-7.4.3.html">7.4.2 release notes</A>
<LI><A HREF="relnotes-7.4.2.html">7.4.2 release notes</A>
<LI><A HREF="relnotes-7.4.1.html">7.4.1 release notes</A>
<LI><A HREF="relnotes-7.4.html">7.4 release notes</A>
commit dd585db687f700de465fe78f9937eb785805e756
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:41:54 2009 -0600
docs: increase max varying vars to 16
diff --git a/docs/relnotes-7.5.html b/docs/relnotes-7.5.html
index 9aee030..d0dba30 100644
--- a/docs/relnotes-7.5.html
+++ b/docs/relnotes-7.5.html
@@ -68,6 +68,7 @@ including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0
<li>GL_EXT_texture_swizzle extension (software drivers, i965 driver)
<li>Updated SPARC assembly optimizations (David S. Miller)
<li>Initial support for separate compilation units in GLSL compiler.
+<li>Increased max number of generic GLSL varying variables to 16 (formerly 8).
</ul>
commit f08bebfe246d786c39731871d8c4aa00a10b29ab
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 16:33:46 2009 -0600
mesa: raise MAX_VARYING (number of shader varying vars) to 16
16 is the limit for now because of various 32-bit bitfields.
(cherry picked from master, commit 4e762395ef7e8c332c16fd0c11025cfa52763a45)
diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h
index aecea68..f7acd2f 100644
--- a/src/mesa/main/config.h
+++ b/src/mesa/main/config.h
@@ -187,7 +187,7 @@
#define MAX_PROGRAM_TEMPS 256
#define MAX_PROGRAM_ADDRESS_REGS 2
#define MAX_UNIFORMS 1024 /**< number of vec4 uniforms */
-#define MAX_VARYING 8 /**< number of float[4] vectors */
+#define MAX_VARYING 16 /**< number of float[4] vectors */
#define MAX_SAMPLERS MAX_TEXTURE_IMAGE_UNITS
#define MAX_PROGRAM_INPUTS 32
#define MAX_PROGRAM_OUTPUTS 32
commit 2d86503471cb8691ce266342810237fc1b15a7b2
Author: Ian Romanick <ian.d.romanick@intel.com>
Date: Fri Jun 26 13:30:16 2009 -0700
intel / DRI2: Additional flush of fake front-buffer to real front-buffer
To maintain correctness, the server will copy the real front-buffer to
a newly allocated fake front-buffer in DRI2GetBuffersWithFormat.
However, if the DRI2GetBuffersWithFormat is triggered by glViewport,
this will copy stale data into the new buffer. Fix this by flushing
the current fake front-buffer to the real front-buffer in
intel_viewport.
Fixes bug #22288.
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index bff0b05..1222a9a 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -71,6 +71,8 @@ int INTEL_DEBUG = (0);
#define DRIVER_DATE_GEM "GEM " DRIVER_DATE
+static void intel_flush(GLcontext *ctx, GLboolean needs_mi_flush);
+
static const GLubyte *
intelGetString(GLcontext * ctx, GLenum name)
{
@@ -395,6 +397,15 @@ intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
return;
if (!intel->internal_viewport_call && ctx->DrawBuffer->Name == 0) {
+ /* If we're rendering to the fake front buffer, make sure all the pending
+ * drawing has landed on the real front buffer. Otherwise when we
+ * eventually get to DRI2GetBuffersWithFormat the stale real front
+ * buffer contents will get copied to the new fake front buffer.
+ */
+ if (intel->is_front_buffer_rendering) {
+ intel_flush(ctx, GL_FALSE);
+ }
+
intel_update_renderbuffers(driContext, driContext->driDrawablePriv);
if (driContext->driDrawablePriv != driContext->driReadablePriv)
intel_update_renderbuffers(driContext, driContext->driReadablePriv);
commit 077a06c140001849dafbedc4175f9aa703bbba69
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 13:16:08 2009 -0600
mesa: bump version to 7.5-rc4
diff --git a/Makefile b/Makefile
index 22334d6..f7361d6 100644
--- a/Makefile
+++ b/Makefile
@@ -182,7 +182,7 @@ ultrix-gcc:
# Rules for making release tarballs
-VERSION=7.5-rc3
+VERSION=7.5-rc4
DIRECTORY = Mesa-$(VERSION)
LIB_NAME = MesaLib-$(VERSION)
DEMO_NAME = MesaDemos-$(VERSION)
diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
index 015ac71..52ee324 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -31,7 +31,7 @@
#define MESA_MAJOR 7
#define MESA_MINOR 5
#define MESA_PATCH 0
-#define MESA_VERSION_STRING "7.5-rc3"
+#define MESA_VERSION_STRING "7.5-rc4"
/* To make version comparison easy */
#define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
commit 62ad606065312cecb1e2dcad0ad2cadf402f0b5c
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 13:15:17 2009 -0600
docs: document for/continue bug fix
diff --git a/docs/relnotes-7.5.html b/docs/relnotes-7.5.html
index 663626c..9aee030 100644
--- a/docs/relnotes-7.5.html
+++ b/docs/relnotes-7.5.html
@@ -75,6 +75,7 @@ including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0
<ul>
<li>Lots of i965 driver bug fixes
<li>Fixed some GLSL preprocessor bugs
+<li>GLSL: continue inside of a for-loop didn't work
</ul>
commit 928e1ce47ffa54dd73b141eb2e4c272378cdda7f
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 12:51:05 2009 -0600
cell: PIPE_CAP_TGSI_CONT_SUPPORTED query
diff --git a/src/gallium/drivers/cell/ppu/cell_screen.c b/src/gallium/drivers/cell/ppu/cell_screen.c
index 512d85d..bd48ce7 100644
--- a/src/gallium/drivers/cell/ppu/cell_screen.c
+++ b/src/gallium/drivers/cell/ppu/cell_screen.c
@@ -86,6 +86,8 @@ cell_get_param(struct pipe_screen *screen, int param)
return 1; /* XXX not really true */
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
return 0; /* XXX to do */
+ case PIPE_CAP_TGSI_CONT_SUPPORTED:
+ return 1;
default:
return 0;
}
commit af7fb892d8f1eff1f0e787bf8c7d65165e3aa51e
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 12:50:58 2009 -0600
softpipe: PIPE_CAP_TGSI_CONT_SUPPORTED query
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index a32fd3a..cc39d33 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -87,6 +87,8 @@ softpipe_get_param(struct pipe_screen *screen, int param)
return 8; /* max 128x128x128 */
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
return 12; /* max 2Kx2K */
+ case PIPE_CAP_TGSI_CONT_SUPPORTED:
+ return 1;
default:
return 0;
}
commit f5dc352e5fbf9cd84638922e8dfdc4b5fb49538c
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 12:50:45 2009 -0600
gallium: added PIPE_CAP_TGSI_CONT_SUPPORTED
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 82e23c4..ab57ed7 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -310,6 +310,7 @@ enum pipe_transfer_usage {
#define PIPE_CAP_TEXTURE_MIRROR_CLAMP 24
#define PIPE_CAP_TEXTURE_MIRROR_REPEAT 25
#define PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS 26
+#define PIPE_CAP_TGSI_CONT_SUPPORTED 27
/**
commit e80ecdf6596eb1f570ab6ae3dbcbd30660cd5b3a
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 12:34:03 2009 -0600
glsl: move/simplify error checking for 'return' statements
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 28d04d3..24e9952 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -950,6 +950,11 @@ gen_return_with_expression(slang_assemble_ctx *A, slang_operation *oper)
assert(oper->type == SLANG_OPER_RETURN);
+ if (A->CurFunction->header.type.specifier.type == SLANG_SPEC_VOID) {
+ slang_info_log_error(A->log, "illegal return expression");
+ return NULL;
+ }
+
blockOper = slang_operation_new(1);
blockOper->type = SLANG_OPER_BLOCK_NO_NEW_SCOPE;
blockOper->locals->outer_scope = oper->locals->outer_scope;
@@ -1039,6 +1044,11 @@ gen_return_without_expression(slang_assemble_ctx *A, slang_operation *oper)
assert(oper->type == SLANG_OPER_RETURN);
+ if (A->CurFunction->header.type.specifier.type != SLANG_SPEC_VOID) {
+ slang_info_log_error(A->log, "return statement requires an expression");
+ return NULL;
+ }
+
if (A->UseReturnFlag) {
/* Emit:
* __notRetFlag = 0;
@@ -1150,6 +1160,9 @@ slang_substitute(slang_assemble_ctx *A, slang_operation *oper,
else
newReturn = gen_return_with_expression(A, oper);
+ if (!newReturn)
+ return;
+
/* do substitutions on the new 'return' code */
slang_substitute(A, newReturn,
substCount, substOld, substNew, GL_FALSE);
@@ -4060,28 +4073,7 @@ _slang_gen_logical_or(slang_assemble_ctx *A, slang_operation *oper)
static slang_ir_node *
_slang_gen_return(slang_assemble_ctx * A, slang_operation *oper)
{
- const GLboolean haveReturnValue
- = (oper->num_children == 1 && oper->children[0].type != SLANG_OPER_VOID);
-
- assert(oper->type == SLANG_OPER_RETURN ||
- oper->type == SLANG_OPER_RETURN_INLINED);
-
- /* error checking */
- if (oper->type == SLANG_OPER_RETURN) {
- assert(A->CurFunction);
-
- if (haveReturnValue &&
- A->CurFunction->header.type.specifier.type == SLANG_SPEC_VOID) {
- slang_info_log_error(A->log, "illegal return expression");
- return NULL;
- }
- else if (!haveReturnValue &&
- A->CurFunction->header.type.specifier.type != SLANG_SPEC_VOID) {
- slang_info_log_error(A->log, "return statement requires an expression");
- return NULL;
- }
- }
-
+ assert(oper->type == SLANG_OPER_RETURN);
return new_return(A->curFuncEndLabel);
}
commit 8e6dd8bf7991d8fc4938af692e5ce880ef139b4d
Author: Brian Paul <brianp@vmware.com>
Date: Fri Jun 26 11:33:05 2009 -0600
glsl: overhaul 'return' statement handling
A new node type (SLANG_OPER_RETURN_INLINED) is used to denote 'return'
statements inside inlined functions which need special handling.
All glean glsl1 tests pass for EmitContReturn=FALSE and TRUE.
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 6aa1886..28d04d3 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -818,6 +818,7 @@ _slang_is_noop(const slang_operation *oper)
/**
* Recursively search tree for a node of the given type.
*/
+#if 0
static slang_operation *
_slang_find_node_type(slang_operation *oper, slang_operation_type type)
{
@@ -831,6 +832,7 @@ _slang_find_node_type(slang_operation *oper, slang_operation_type type)
}
return NULL;
}
+#endif
/**
@@ -932,41 +934,43 @@ slang_resolve_variable(slang_operation *oper)
/**
- * Generate code for "return expr;"
+ * Rewrite AST code for "return expression;".
+ *
* We return values from functions by assinging the returned value to
* the hidden __retVal variable which is an extra 'out' parameter we add
* to the function signature.
* This code basically converts "return expr;" into "__retVal = expr; return;"
+ *
* \return the new AST code.
*/
static slang_operation *
-gen_return_expression(slang_assemble_ctx *A, slang_operation *oper)
+gen_return_with_expression(slang_assemble_ctx *A, slang_operation *oper)
{
- slang_operation *blockOper;
+ slang_operation *blockOper, *assignOper;
+
+ assert(oper->type == SLANG_OPER_RETURN);
blockOper = slang_operation_new(1);
blockOper->type = SLANG_OPER_BLOCK_NO_NEW_SCOPE;
blockOper->locals->outer_scope = oper->locals->outer_scope;
slang_operation_add_children(blockOper, 2);
- /* if EmitContReturn:
- * if (!__returnFlag) {
- * build: __retVal = expr;
- * }
- * otherwise:
- * build: __retVal = expr;
- */
- {
- slang_operation *assignOper;
-
- if (A->UseReturnFlag) {
+ if (A->UseReturnFlag) {
+ /* Emit:
+ * {
+ * if (__notRetFlag)
+ * __retVal = expr;
+ * __notRetFlag = 0;
+ * }
+ */
+ {
slang_operation *ifOper = slang_oper_child(blockOper, 0);
ifOper->type = SLANG_OPER_IF;
slang_operation_add_children(ifOper, 3);
{
slang_operation *cond = slang_oper_child(ifOper, 0);
cond->type = SLANG_OPER_IDENTIFIER;
- cond->a_id = slang_atom_pool_atom(A->atoms, "__returnFlag");
+ cond->a_id = slang_atom_pool_atom(A->atoms, "__notRetFlag");
}
{
slang_operation *elseOper = slang_oper_child(ifOper, 2);
@@ -974,34 +978,103 @@ gen_return_expression(slang_assemble_ctx *A, slang_operation *oper)
}
assignOper = slang_oper_child(ifOper, 1);
}
- else {
- assignOper = slang_oper_child(blockOper, 0);
- }
-
- assignOper->type = SLANG_OPER_ASSIGN;
- slang_operation_add_children(assignOper, 2);
{
- slang_operation *lhs = slang_oper_child(assignOper, 0);
- lhs->type = SLANG_OPER_IDENTIFIER;
- lhs->a_id = slang_atom_pool_atom(A->atoms, "__retVal");
+ slang_operation *setOper = slang_oper_child(blockOper, 1);
+ setOper->type = SLANG_OPER_ASSIGN;
+ slang_operation_add_children(setOper, 2);
+ {
+ slang_operation *lhs = slang_oper_child(setOper, 0);
+ lhs->type = SLANG_OPER_IDENTIFIER;
+ lhs->a_id = slang_atom_pool_atom(A->atoms, "__notRetFlag");
+ }
+ {
+ slang_operation *rhs = slang_oper_child(setOper, 1);
+ slang_operation_literal_bool(rhs, GL_FALSE);
+ }
}
+ }
+ else {
+ /* Emit:
+ * {
+ * __retVal = expr;
+ * return_inlined;
+ * }
+ */
+ assignOper = slang_oper_child(blockOper, 0);
{
- slang_operation *rhs = slang_oper_child(assignOper, 1);
- slang_operation_copy(rhs, &oper->children[0]);
+ slang_operation *returnOper = slang_oper_child(blockOper, 1);
+ returnOper->type = SLANG_OPER_RETURN_INLINED;
+ assert(returnOper->num_children == 0);
}
}
- /* build: return; (with no return value) */
+ /* __retVal = expression; */
+ assignOper->type = SLANG_OPER_ASSIGN;
+ slang_operation_add_children(assignOper, 2);
+ {
+ slang_operation *lhs = slang_oper_child(assignOper, 0);
+ lhs->type = SLANG_OPER_IDENTIFIER;
+ lhs->a_id = slang_atom_pool_atom(A->atoms, "__retVal");
+ }
{
- slang_operation *returnOper = slang_oper_child(blockOper, 1);
- returnOper->type = SLANG_OPER_RETURN; /* return w/ no value */
- assert(returnOper->num_children == 0);
+ slang_operation *rhs = slang_oper_child(assignOper, 1);
+ slang_operation_copy(rhs, &oper->children[0]);
}
+ ///blockOper->locals->outer_scope = oper->locals->outer_scope;
+
+ /*slang_print_tree(blockOper, 0);*/
+
return blockOper;
}
+/**
+ * Rewrite AST code for "return;" (no expression).
+ */
+static slang_operation *
+gen_return_without_expression(slang_assemble_ctx *A, slang_operation *oper)
+{
+ slang_operation *newRet;
+
+ assert(oper->type == SLANG_OPER_RETURN);
+
+ if (A->UseReturnFlag) {
+ /* Emit:
+ * __notRetFlag = 0;
+ */
+ {
+ newRet = slang_operation_new(1);
+ newRet->locals->outer_scope = oper->locals->outer_scope;
+ newRet->type = SLANG_OPER_ASSIGN;
+ slang_operation_add_children(newRet, 2);
+ {
+ slang_operation *lhs = slang_oper_child(newRet, 0);
+ lhs->type = SLANG_OPER_IDENTIFIER;
+ lhs->a_id = slang_atom_pool_atom(A->atoms, "__notRetFlag");
+ }
+ {
+ slang_operation *rhs = slang_oper_child(newRet, 1);
+ slang_operation_literal_bool(rhs, GL_FALSE);
+ }
+ }
+ }
+ else {
+ /* Emit:
+ * return_inlined;
+ */
+ newRet = slang_operation_new(1);
+ newRet->locals->outer_scope = oper->locals->outer_scope;
+ newRet->type = SLANG_OPER_RETURN_INLINED;
+ }
+
+ /*slang_print_tree(newRet, 0);*/
+
+ return newRet;
+}
+
+
+
/**
* Replace particular variables (SLANG_OPER_IDENTIFIER) with new expressions.
@@ -1038,7 +1111,7 @@ slang_substitute(slang_assemble_ctx *A, slang_operation *oper,
GLuint i;
v = _slang_variable_locate(oper->locals, id, GL_TRUE);
if (!v) {
- if (_mesa_strcmp((char *) oper->a_id, "__returnFlag"))
+ if (_mesa_strcmp((char *) oper->a_id, "__notRetFlag"))
_mesa_problem(NULL, "var %s not found!\n", (char *) oper->a_id);
return;
}
@@ -1069,37 +1142,22 @@ slang_substitute(slang_assemble_ctx *A, slang_operation *oper,
break;
case SLANG_OPER_RETURN:
- /* do return replacement here too */
- assert(oper->num_children == 0 || oper->num_children == 1);
- if (oper->num_children == 1 && !_slang_is_noop(&oper->children[0])) {
+ {
slang_operation *newReturn;
-
- /* check if function actually has a return type */
- assert(A->CurFunction);
Reply to: