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 <bri...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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.roman...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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 <bri...@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); -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org