Makefile | 2 configs/darwin | 2 configs/default | 2 docs/news.html | 6 docs/relnotes-7.6.1.html | 2 docs/relnotes-7.7.1.html | 50 + docs/relnotes-7.7.html | 2 docs/relnotes.html | 1 progs/demos/engine.c | 18 progs/demos/fbotexture.c | 1 progs/demos/fire.c | 10 progs/demos/geartrain.c | 21 progs/demos/isosurf.c | 8 progs/demos/terrain.c | 5 progs/egl/eglgears.c | 3 progs/egl/eglscreen.c | 3 progs/fp/Makefile | 1 progs/fp/SConscript | 1 progs/fp/tri-inv.c | 111 -- progs/glsl/convolutions.c | 2 progs/glsl/shtest.c | 9 progs/glsl/vert-tex.c | 9 progs/rbug/simple_server.c | 4 progs/samples/olympic.c | 20 progs/samples/overlay.c | 18 progs/samples/rgbtoppm.c | 31 progs/samples/sphere.c | 30 progs/samples/star.c | 20 progs/samples/stretch.c | 20 progs/samples/wave.c | 2 progs/tests/getprocaddress.c | 2 progs/tests/interleave.c | 2 progs/tests/texwrap.c | 2 progs/tests/vparray.c | 13 progs/util/readtex.c | 20 progs/vp/vp-tris.c | 3 progs/xdemos/glsync.c | 2 progs/xdemos/glxheads.c | 32 progs/xdemos/manywin.c | 34 progs/xdemos/sharedtex_mt.c | 4 src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c | 281 ++++--- src/gallium/auxiliary/rbug/rbug_context.h | 2 src/gallium/auxiliary/rbug/rbug_proto.h | 2 src/gallium/auxiliary/rtasm/rtasm_execmem.c | 32 src/gallium/auxiliary/tgsi/tgsi_exec.c | 8 src/gallium/auxiliary/tgsi/tgsi_sse2.c | 50 - src/gallium/auxiliary/tgsi/tgsi_ureg.c | 8 src/gallium/auxiliary/util/Makefile | 1 src/gallium/auxiliary/util/u_bitmask.c | 32 src/gallium/auxiliary/util/u_clear.h | 2 src/gallium/auxiliary/util/u_debug.c | 6 src/gallium/auxiliary/util/u_debug.h | 2 src/gallium/auxiliary/util/u_debug_memory.c | 8 src/gallium/auxiliary/util/u_format.h | 2 src/gallium/auxiliary/util/u_network.c | 8 src/gallium/auxiliary/util/u_network.h | 2 src/gallium/auxiliary/util/u_stream_stdc.c | 2 src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c | 11 src/gallium/drivers/i915/i915_buffer.c | 1 src/gallium/drivers/i915/i915_state.c | 4 src/gallium/drivers/llvmpipe/lp_bld_blend_aos.c | 2 src/gallium/drivers/llvmpipe/lp_bld_depth.c | 2 src/gallium/drivers/llvmpipe/lp_bld_flow.c | 2 src/gallium/drivers/llvmpipe/lp_bld_format_aos.c | 2 src/gallium/drivers/llvmpipe/lp_bld_tgsi_soa.c | 9 src/gallium/drivers/llvmpipe/lp_prim_vbuf.c | 1 src/gallium/drivers/llvmpipe/lp_state_fs.c | 1 src/gallium/drivers/llvmpipe/lp_test_conv.c | 2 src/gallium/drivers/llvmpipe/lp_tex_cache.h | 2 src/gallium/drivers/llvmpipe/lp_tex_sample_c.c | 2 src/gallium/drivers/llvmpipe/lp_tile_soa.h | 2 src/gallium/drivers/llvmpipe/lp_winsys.h | 2 src/gallium/drivers/nv50/nv50_query.c | 2 src/gallium/drivers/r300/r300_cs.h | 2 src/gallium/drivers/r300/r300_emit.c | 4 src/gallium/drivers/r300/r300_flush.c | 1 src/gallium/drivers/r300/r300_reg.h | 16 src/gallium/drivers/r300/r300_state_derived.c | 2 src/gallium/drivers/softpipe/sp_prim_vbuf.c | 1 src/gallium/drivers/softpipe/sp_quad_blend.c | 2 src/gallium/drivers/svga/svga_context.c | 44 - src/gallium/drivers/svga/svga_context.h | 9 src/gallium/drivers/svga/svga_draw.c | 3 src/gallium/drivers/svga/svga_pipe_fs.c | 10 src/gallium/drivers/svga/svga_pipe_vs.c | 10 src/gallium/drivers/svga/svga_state_fs.c | 39 src/gallium/drivers/svga/svga_state_vs.c | 20 src/gallium/drivers/svga/svga_tgsi.c | 2 src/gallium/drivers/trace/tr_context.c | 2 src/gallium/drivers/trace/tr_dump.c | 4 src/gallium/drivers/trace/tr_rbug.c | 6 src/gallium/drivers/trace/tr_state.h | 2 src/gallium/state_trackers/egl/egl_surface.c | 4 src/gallium/state_trackers/egl/egl_tracker.c | 3 src/gallium/state_trackers/glx/xlib/glx_api.c | 1 src/gallium/state_trackers/vega/api_path.c | 3 src/gallium/state_trackers/vega/arc.c | 2 src/gallium/state_trackers/vega/bezier.c | 1 src/gallium/state_trackers/vega/stroker.c | 4 src/gallium/state_trackers/vega/vg_tracker.c | 1 src/gallium/state_trackers/xorg/xorg_crtc.c | 10 src/gallium/state_trackers/xorg/xorg_driver.c | 29 src/gallium/state_trackers/xorg/xorg_exa.c | 4 src/gallium/state_trackers/xorg/xorg_exa_tgsi.c | 33 src/gallium/state_trackers/xorg/xorg_renderer.c | 1 src/gallium/winsys/drm/vmware/xorg/SConscript | 1 src/gallium/winsys/gdi/SConscript | 2 src/gallium/winsys/xlib/xlib_brw_context.c | 209 +++++ src/glu/sgi/libnurbs/interface/bezierPatchMesh.h | 1 src/glu/sgi/libnurbs/interface/glsurfeval.h | 2 src/glu/sgi/libnurbs/internals/arcsorter.h | 1 src/glu/sgi/libnurbs/internals/displaylist.h | 1 src/glu/sgi/libnurbs/internals/gridvertex.h | 2 src/glu/sgi/libnurbs/internals/knotvector.cc | 3 src/glu/sgi/libnurbs/internals/mesher.cc | 3 src/glu/sgi/libnurbs/internals/reader.cc | 2 src/glu/sgi/libnurbs/internals/reader.h | 14 src/glu/sgi/libnurbs/internals/renderhints.cc | 4 src/glu/sgi/libnurbs/internals/simplemath.h | 2 src/glu/sgi/libnurbs/internals/slicer.cc | 4 src/glu/sgi/libnurbs/internals/subdivider.cc | 6 src/glu/sgi/libnurbs/internals/varray.cc | 8 src/glu/sgi/libnurbs/nurbtess/directedLine.cc | 32 src/glu/sgi/libnurbs/nurbtess/monoChain.cc | 1 src/glu/sgi/libnurbs/nurbtess/partitionY.cc | 4 src/glu/sgi/libnurbs/nurbtess/sampleCompBot.cc | 4 src/glu/sgi/libnurbs/nurbtess/sampleCompTop.cc | 4 src/glu/sgi/libnurbs/nurbtess/sampledLine.cc | 3 src/glut/glx/win32_menu.c | 2 src/glx/x11/dri2.c | 4 src/glx/x11/dri_glx.c | 13 src/glx/x11/glxcmds.c | 4 src/glx/x11/glxcurrent.c | 7 src/glx/x11/glxext.c | 5 src/glx/x11/xf86dri.h | 4 src/mesa/Makefile | 2 src/mesa/drivers/common/meta.c | 47 - src/mesa/drivers/dri/ffb/ffb_tris.c | 2 src/mesa/drivers/dri/i810/i810tex.h | 1 src/mesa/drivers/dri/i915/i915_program.c | 2 src/mesa/drivers/dri/i915/i915_texstate.c | 7 src/mesa/drivers/dri/i915/intel_render.c | 4 src/mesa/drivers/dri/i965/brw_disasm.c | 1 src/mesa/drivers/dri/i965/brw_draw_upload.c | 6 src/mesa/drivers/dri/i965/brw_eu_emit.c | 4 src/mesa/drivers/dri/i965/brw_state.h | 2 src/mesa/drivers/dri/i965/brw_wm_emit.c | 4 src/mesa/drivers/dri/i965/brw_wm_glsl.c | 2 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 50 - src/mesa/drivers/dri/intel/intel_context.h | 8 src/mesa/drivers/dri/intel/intel_pixel_bitmap.c | 3 src/mesa/drivers/dri/intel/intel_tex_copy.c | 7 src/mesa/drivers/dri/r300/compiler/memory_pool.c | 4 src/mesa/drivers/dri/r300/compiler/radeon_code.c | 3 src/mesa/drivers/dri/r300/compiler/radeon_compiler.c | 11 src/mesa/drivers/dri/r300/compiler/radeon_program.c | 6 src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c | 30 src/mesa/drivers/dri/r600/r600_context.h | 1 src/mesa/drivers/dri/r600/r600_texstate.c | 46 - src/mesa/drivers/dri/r600/r700_assembler.c | 20 src/mesa/drivers/dri/r600/r700_assembler.h | 1 src/mesa/drivers/dri/r600/r700_chip.c | 5 src/mesa/drivers/dri/r600/r700_vertprog.c | 8 src/mesa/drivers/dri/r600/r700_vertprog.h | 1 src/mesa/drivers/dri/radeon/radeon_cs_legacy.c | 2 src/mesa/drivers/dri/radeon/radeon_tcl.c | 1 src/mesa/drivers/dri/sis/sis_context.c | 2 src/mesa/drivers/dri/tdfx/tdfx_dd.c | 2 src/mesa/drivers/dri/tdfx/tdfx_tex.c | 2 src/mesa/drivers/dri/tdfx/tdfx_texstate.c | 2 src/mesa/glapi/ARB_sync.xml | 4 src/mesa/main/attrib.c | 47 - src/mesa/main/dispatch.c | 4 src/mesa/main/enums.c | 465 +++++------ src/mesa/main/formats.c | 1 src/mesa/main/image.c | 2 src/mesa/main/texgetimage.c | 2 src/mesa/main/texparam.c | 1 src/mesa/main/version.h | 8 src/mesa/shader/nvfragparse.c | 2 src/mesa/shader/prog_optimize.c | 2 src/mesa/shader/prog_parameter.c | 8 src/mesa/shader/prog_parameter_layout.c | 16 src/mesa/shader/program_parse.tab.c | 627 ++++++++-------- src/mesa/shader/program_parse.tab.h | 2 src/mesa/shader/program_parse.y | 95 +- src/mesa/shader/program_parser.h | 6 src/mesa/shader/slang/slang_codegen.c | 15 src/mesa/shader/slang/slang_codegen.h | 1 src/mesa/shader/slang/slang_compile.c | 3 src/mesa/shader/slang/slang_compile_operation.c | 1 src/mesa/state_tracker/st_cb_bufferobjects.c | 49 + src/mesa/state_tracker/st_cb_texture.c | 2 src/mesa/state_tracker/st_format.c | 5 src/mesa/state_tracker/st_mesa_to_tgsi.c | 21 src/mesa/swrast/s_span.c | 10 src/mesa/tnl/t_vb_program.c | 7 src/mesa/x86/gen_matypes.c | 14 198 files changed, 2072 insertions(+), 1297 deletions(-)
New commits: commit 6d6c9c668894c393f7b6086fe0a4234939656865 Author: Vinson Lee <[email protected]> Date: Mon Jan 11 00:24:39 2010 -0800 progs/demos: Remove unnecessary header from fbotexture.c. diff --git a/progs/demos/fbotexture.c b/progs/demos/fbotexture.c index 5648266..46bf1c5 100644 --- a/progs/demos/fbotexture.c +++ b/progs/demos/fbotexture.c @@ -14,7 +14,6 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <math.h> #include "extfuncs.h" /* For debug */ commit efaba97eaaf47ffecf1577777df1e8a700ada8de Author: Dave Airlie <[email protected]> Date: Mon Jan 11 13:21:47 2010 +1000 radeon: fix prediction for r100 inline vert/elt emits. On r100 we emit the indices inline so we need to account for that in the emission size. diff --git a/src/mesa/drivers/dri/radeon/radeon_tcl.c b/src/mesa/drivers/dri/radeon/radeon_tcl.c index b334ea0..cd02bfb 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tcl.c +++ b/src/mesa/drivers/dri/radeon/radeon_tcl.c @@ -412,6 +412,7 @@ static GLuint radeonEnsureEmitSize( GLcontext * ctx , GLuint inputs ) space_required += vbuf; else space_required += index + elts; + space_required += VB->Primitive[i].count * 3; space_required += AOS_BUFSZ(nr_aos); } space_required += SCISSOR_BUFSZ; commit 1294df9ca4ec39f00de3f9d923316f6641c1fb4a Author: Dave Airlie <[email protected]> Date: Mon Jan 11 13:21:02 2010 +1000 radeon: fix bug in realloc code. This bug was fixed in libdrm ages ago, port to non-kms diff --git a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c index 45b608a..bf46eb8 100644 --- a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c +++ b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c @@ -182,7 +182,7 @@ static int cs_begin(struct radeon_cs_int *cs, uint32_t tmp, *ptr; int num = (ndw > 0x3FF) ? ndw : 0x3FF; - tmp = (cs->cdw + 1 + num) & (~num); + tmp = (cs->cdw + ndw + 0x3ff) & (~0x3ff); ptr = (uint32_t*)realloc(cs->packets, 4 * tmp); if (ptr == NULL) { return -ENOMEM; commit 4fe51c7447fb260c32754df95a54b62f513cdd6b Author: Vinson Lee <[email protected]> Date: Sun Jan 10 16:09:41 2010 -0800 glu/sgi: Initialize members of class Mesher. diff --git a/src/glu/sgi/libnurbs/internals/mesher.cc b/src/glu/sgi/libnurbs/internals/mesher.cc index 9cc436a..b2d83f4 100644 --- a/src/glu/sgi/libnurbs/internals/mesher.cc +++ b/src/glu/sgi/libnurbs/internals/mesher.cc @@ -58,6 +58,9 @@ Mesher::Mesher( Backend& b ) { stacksize = 0; vdata = 0; + last[0] = 0; + last[1] = 0; + itop = 0; lastedge = 0; //needed to prevent purify UMR } commit 1111b38a1b903e9d99aace14a675a684a3f4732a Author: Vinson Lee <[email protected]> Date: Sun Jan 10 15:55:52 2010 -0800 glu/sgi: Initialize members of class Slicer. diff --git a/src/glu/sgi/libnurbs/internals/slicer.cc b/src/glu/sgi/libnurbs/internals/slicer.cc index 27d2a65..1b18d73 100644 --- a/src/glu/sgi/libnurbs/internals/slicer.cc +++ b/src/glu/sgi/libnurbs/internals/slicer.cc @@ -1181,6 +1181,10 @@ void Slicer::slice(Arc_ptr loop) Slicer::Slicer( Backend &b ) : CoveAndTiler( b ), Mesher( b ), backend( b ) { + oneOverDu = 0; + du = 0; + dv = 0; + isolines = 0; ulinear = 0; vlinear = 0; } commit b9bd96608c88c0b3decddc80f0d49f670fc90466 Author: Vinson Lee <[email protected]> Date: Sun Jan 10 03:03:14 2010 -0800 glu/sgi: Include missing header file. diff --git a/src/glu/sgi/libnurbs/internals/simplemath.h b/src/glu/sgi/libnurbs/internals/simplemath.h index 0a060c5..d00062d 100644 --- a/src/glu/sgi/libnurbs/internals/simplemath.h +++ b/src/glu/sgi/libnurbs/internals/simplemath.h @@ -38,6 +38,8 @@ /* simple inline routines */ +#include "types.h" + inline int max( int x, int y ) { return ( x < y ) ? y : x; } commit 199dedd6dd06e7f647dc6741611c06954aca3c77 Author: Vinson Lee <[email protected]> Date: Sun Jan 10 01:57:13 2010 -0800 progs/demos: Check upper bounds of input in manywin.c. diff --git a/progs/xdemos/manywin.c b/progs/xdemos/manywin.c index 3b0810b..8ad5c4f 100644 --- a/progs/xdemos/manywin.c +++ b/progs/xdemos/manywin.c @@ -400,6 +400,8 @@ main(int argc, char *argv[]) } if (n < 1) n = 1; + if (n > MAX_HEADS) + n = MAX_HEADS; printf("%d windows\n", n); for (i = 0; i < n; i++) { commit 0c7814fe238fe0e2bbeff448c32f79146f9ae923 Author: Vinson Lee <[email protected]> Date: Sun Jan 10 00:40:46 2010 -0800 progs/demos: Bounds check input to fire.c. diff --git a/progs/demos/fire.c b/progs/demos/fire.c index f30b893..475582c 100644 --- a/progs/demos/fire.c +++ b/progs/demos/fire.c @@ -726,8 +726,13 @@ main(int ac, char **av) maxage = 1.0 / dt; - if (ac == 2) + if (ac == 2) { np = atoi(av[1]); + if (np <= 0 || np > 1000000) { + fprintf(stderr, "Invalid input.\n"); + exit(-1); + } + } if (ac == 4) { WIDTH = atoi(av[2]); @@ -762,6 +767,7 @@ main(int ac, char **av) assert(np > 0); p = (part *) malloc(sizeof(part) * np); + assert(p); for (i = 0; i < np; i++) setnewpart(&p[i]); commit 9e98c1fbf6fef97e017c7b308d0772604ea7a614 Author: Vinson Lee <[email protected]> Date: Sun Jan 10 00:14:33 2010 -0800 glu/sgi: Initialize members of class Renderhints. diff --git a/src/glu/sgi/libnurbs/internals/renderhints.cc b/src/glu/sgi/libnurbs/internals/renderhints.cc index a3aa62d..7025f74 100644 --- a/src/glu/sgi/libnurbs/internals/renderhints.cc +++ b/src/glu/sgi/libnurbs/internals/renderhints.cc @@ -54,6 +54,10 @@ Renderhints::Renderhints() errorchecking = N_MSG; subdivisions = 6.0; tmp1 = 0.0; + displaydomain = 0; + maxsubdivisions = (int) subdivisions; + wiretris = 0; + wirequads = 0; } void commit a5815c36f77d150e4a9915a8b289df2aa942c23c Author: Vinson Lee <[email protected]> Date: Sat Jan 9 23:55:05 2010 -0800 glu/sgi: Initialize members of class StoredVertex. diff --git a/src/glu/sgi/libnurbs/interface/glsurfeval.h b/src/glu/sgi/libnurbs/interface/glsurfeval.h index 1567c6b..621e593 100644 --- a/src/glu/sgi/libnurbs/interface/glsurfeval.h +++ b/src/glu/sgi/libnurbs/interface/glsurfeval.h @@ -83,7 +83,7 @@ typedef struct surfEvalMachine{ class StoredVertex { public: - StoredVertex() { type = 0; } + StoredVertex() { type = 0; coord[0] = 0; coord[1] = 0; point[0] = 0; point[1] = 0; } ~StoredVertex(void) {} void saveEvalCoord(REAL x, REAL y) {coord[0] = x; coord[1] = y; type = TYPECOORD; } commit 61afd1158fb7d0577effd817a8f9cba7fb2a2bbd Author: Vinson Lee <[email protected]> Date: Sat Jan 9 23:53:54 2010 -0800 glu/sgi: Include missing header file. diff --git a/src/glu/sgi/libnurbs/interface/bezierPatchMesh.h b/src/glu/sgi/libnurbs/interface/bezierPatchMesh.h index 4493296..ba6868a 100644 --- a/src/glu/sgi/libnurbs/interface/bezierPatchMesh.h +++ b/src/glu/sgi/libnurbs/interface/bezierPatchMesh.h @@ -33,6 +33,7 @@ #ifndef _BEZIERPATCHMESH_H #define _BEZIERPATCHMESH_H +#include <GL/gl.h> #include "bezierPatch.h" typedef struct bezierPatchMesh{ commit f8737bda37510672415269f205ca5b0c69454edf Author: Vinson Lee <[email protected]> Date: Sat Jan 9 23:25:49 2010 -0800 glu/sgi: Initialize member of class O_pwlcurve. diff --git a/src/glu/sgi/libnurbs/internals/reader.cc b/src/glu/sgi/libnurbs/internals/reader.cc index 6135eef..c59240d 100644 --- a/src/glu/sgi/libnurbs/internals/reader.cc +++ b/src/glu/sgi/libnurbs/internals/reader.cc @@ -64,6 +64,7 @@ O_pwlcurve::O_pwlcurve( long _type, long count, INREAL *array, long byte_stride, owner = 0; pts = trimpts; npts = (int) count; + save = 0; int i; /* copy user data into internal trimming data structures */ @@ -115,6 +116,7 @@ O_pwlcurve::O_pwlcurve( long _type, long count, INREAL *array, long byte_stride, owner = 0; pts = trimpts; npts = (int) count; + save = 0; /* copy user data into internal trimming data structures */ switch( _type ) { commit 683e3cb8db5a57db2ebd364986a399e2b1009e00 Author: Vinson Lee <[email protected]> Date: Fri Jan 8 23:08:57 2010 -0800 progs/tests: Silence 'missing initializer' warnings. diff --git a/progs/tests/interleave.c b/progs/tests/interleave.c index 47bf9df..acf67d0 100644 --- a/progs/tests/interleave.c +++ b/progs/tests/interleave.c @@ -105,7 +105,7 @@ static const unsigned indicies[12] = { 1, 4, 2 }; -#define NONE { NULL, 0, 0, 0 } +#define NONE { NULL, 0, 0, 0, sizeof( NULL ) } #define V2F { v, 2, 2 * sizeof( GLfloat ), GL_FLOAT, sizeof( v[0] ) } #define V3F { v, 3, 3 * sizeof( GLfloat ), GL_FLOAT, sizeof( v[0] ) } #define V4F { v, 4, 4 * sizeof( GLfloat ), GL_FLOAT, sizeof( v[0] ) } diff --git a/progs/tests/texwrap.c b/progs/tests/texwrap.c index 92c8a2f..39c5591 100644 --- a/progs/tests/texwrap.c +++ b/progs/tests/texwrap.c @@ -71,7 +71,7 @@ static struct wrap_mode modes[] = { WRAP_EXT ( GL_MIRROR_CLAMP_TO_EDGE_EXT, "GL_ATI_texture_mirror_once", "GL_EXT_texture_mirror_clamp", 999.0 ), - { 0 } + { 0, NULL, GL_FALSE, 0.0, { NULL, NULL } } }; static void commit 223c8482ca16d3ed31266ea8cc63b816aece6a81 Author: Vinson Lee <[email protected]> Date: Fri Jan 8 22:10:52 2010 -0800 progs/glsl: Silence uninitialized variable warning. diff --git a/progs/glsl/convolutions.c b/progs/glsl/convolutions.c index 350e61b..fdfaf56 100644 --- a/progs/glsl/convolutions.c +++ b/progs/glsl/convolutions.c @@ -182,7 +182,7 @@ static void fillConvolution(GLint *k, static void setupConvolution() { GLint *kernel = (GLint*)malloc(sizeof(GLint) * 9); - GLfloat scale; + GLfloat scale = 0.0; GLfloat *vecKer = (GLfloat*)malloc(sizeof(GLfloat) * 9 * 4); GLuint loc; GLuint i; commit 3b82de92a0f3a1a810ae1521d2f72795f9d65157 Author: Vinson Lee <[email protected]> Date: Fri Jan 8 22:02:21 2010 -0800 progs/demos: Add missing initializers in engine.c. diff --git a/progs/demos/engine.c b/progs/demos/engine.c index 3cf311e..838d28c 100644 --- a/progs/demos/engine.c +++ b/progs/demos/engine.c @@ -120,7 +120,11 @@ static Engine Engines[NUM_ENGINES] = 0.3, /* CrankJournalRadius */ 0.4, /* CrankJournalLength */ 1.5, /* ConnectingRodLength */ - 0.1 /* ConnectingRodThickness */ + 0.1, /* ConnectingRodThickness */ + 0, /* CrankList */ + 0, /* ConnRodList */ + 0, /* PistonList */ + 0 /* BlockList */ }, { "Inline-4", @@ -136,7 +140,11 @@ static Engine Engines[NUM_ENGINES] = 0.3, /* CrankJournalRadius */ 0.4, /* CrankJournalLength */ 1.5, /* ConnectingRodLength */ - 0.1 /* ConnectingRodThickness */ + 0.1, /* ConnectingRodThickness */ + 0, /* CrankList */ + 0, /* ConnRodList */ + 0, /* PistonList */ + 0 /* BlockList */ }, { "Boxer-6", @@ -152,7 +160,11 @@ static Engine Engines[NUM_ENGINES] = 0.3, /* CrankJournalRadius */ 0.4, /* CrankJournalLength */ 1.5, /* ConnectingRodLength */ - 0.1 /* ConnectingRodThickness */ + 0.1, /* ConnectingRodThickness */ + 0, /* CrankList */ + 0, /* ConnRodList */ + 0, /* PistonList */ + 0 /* BlockList */ } }; commit 4775723d2f641dcd82e8c9cd39ba52f8d86158c7 Author: Vinson Lee <[email protected]> Date: Fri Jan 8 21:43:54 2010 -0800 r300g: Silence unused variable warnings. diff --git a/src/gallium/drivers/r300/r300_flush.c b/src/gallium/drivers/r300/r300_flush.c index 14a0824..4282357 100644 --- a/src/gallium/drivers/r300/r300_flush.c +++ b/src/gallium/drivers/r300/r300_flush.c @@ -39,6 +39,7 @@ static void r300_flush(struct pipe_context* pipe, struct r300_query *query; CS_LOCALS(r300); + (void) cs_count; /* We probably need to flush Draw, but we may have been called from * within Draw. This feels kludgy, but it might be the best thing. * diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index 7166694..55430a9 100644 --- a/src/gallium/drivers/r300/r300_state_derived.c +++ b/src/gallium/drivers/r300/r300_state_derived.c @@ -464,7 +464,7 @@ static void r300_update_rs_block(struct r300_context* r300, /* Update the vertex format. */ static void r300_update_derived_shader_state(struct r300_context* r300) { - struct r300_screen* r300screen = r300_screen(r300->context.screen); + /* struct r300_screen* r300screen = r300_screen(r300->context.screen); */ struct r300_vertex_info* vformat; struct r300_rs_block* rs_block; int i; commit 20d6360db7ca8610e5958cd7f851e664d77684fc Author: Vinson Lee <[email protected]> Date: Fri Jan 8 20:22:17 2010 -0800 tgsi: Silence uninitialized variable warnings. diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index b7569e7..146000a 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -1209,11 +1209,19 @@ fetch_src_file_channel( default: assert( 0 ); + chan->u[0] = 0; + chan->u[1] = 0; + chan->u[2] = 0; + chan->u[3] = 0; } break; default: assert( 0 ); + chan->u[0] = 0; + chan->u[1] = 0; + chan->u[2] = 0; + chan->u[3] = 0; } } commit de37a00d271fc4ab919c3c715322018c0b76369f Author: Jakob Bornecrantz <[email protected]> Date: Tue Jan 5 17:51:02 2010 +0100 util: Add u_bitmask to make build diff --git a/src/gallium/auxiliary/util/Makefile b/src/gallium/auxiliary/util/Makefile index 1d8bb55..7e47ec6 100644 --- a/src/gallium/auxiliary/util/Makefile +++ b/src/gallium/auxiliary/util/Makefile @@ -9,6 +9,7 @@ C_SOURCES = \ u_debug_symbol.c \ u_debug_stack.c \ u_blit.c \ + u_bitmask.c \ u_cache.c \ u_cpu_detect.c \ u_draw_quad.c \ commit 674c76310fe93dd3d7a15af0f72bb9f04351d09f Author: Dan Nicholson <[email protected]> Date: Fri Jan 8 05:59:55 2010 -0800 mesa: Ensure libmesagallium.a is finished building before descending Signed-off-by: Dan Nicholson <[email protected]> diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 6f58ad6..96b4ff8 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -43,7 +43,7 @@ libglapi.a: $(GLAPI_OBJECTS) ###################################################################### # Device drivers -driver_subdirs: libmesa.a libglapi.a +driver_subdirs: libmesa.a libglapi.a libmesagallium.a @ (cd drivers && $(MAKE)) commit 3c42e403de9da2abd46cd0d15de107250866859d Author: Vinson Lee <[email protected]> Date: Fri Jan 8 01:13:46 2010 -0800 r300: Move initial declaration outside for loop. diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.c b/src/mesa/drivers/dri/r300/compiler/radeon_program.c index 0dbc538..a3c41d7 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.c @@ -94,10 +94,11 @@ unsigned int rc_find_free_temporary(struct radeon_compiler * c) { char used[RC_REGISTER_MAX_INDEX]; unsigned int i; + struct rc_instruction * rcinst; memset(used, 0, sizeof(used)); - for (struct rc_instruction * rcinst = c->Program.Instructions.Next; rcinst != &c->Program.Instructions; rcinst = rcinst->Next) { + for (rcinst = c->Program.Instructions.Next; rcinst != &c->Program.Instructions; rcinst = rcinst->Next) { const struct rc_sub_instruction *inst = &rcinst->U.I; const struct rc_opcode_info *opcode = rc_get_opcode_info(inst->Opcode); unsigned int k; @@ -168,8 +169,9 @@ void rc_remove_instruction(struct rc_instruction * inst) unsigned int rc_recompute_ips(struct radeon_compiler * c) { unsigned int ip = 0; + struct rc_instruction * inst; - for(struct rc_instruction * inst = c->Program.Instructions.Next; + for(inst = c->Program.Instructions.Next; inst != &c->Program.Instructions; inst = inst->Next) { inst->IP = ip++; commit 5dd9e23d6204e6ec36468d4ae99e630c782c1cc9 Author: Brian Paul <[email protected]> Date: Thu Jan 7 14:55:27 2010 -0700 docs: document Gallium SSE codegen for XPD bug fix diff --git a/docs/relnotes-7.7.1.html b/docs/relnotes-7.7.1.html index ce9c68f..b20c8a7 100644 --- a/docs/relnotes-7.7.1.html +++ b/docs/relnotes-7.7.1.html @@ -42,6 +42,7 @@ tbd <li>Fixed broken blending to multiple color buffers in swrast driver. <li>Allocate constants more tightly in GL_ARB_vertex/fragment parser. <li>Fixed mipmap generation bug caused by invalid viewport state. +<li>Gallium SSE codegen for XPD didn't always work. </ul> commit 8647aa1d8d8ffce7ae3b00e7e277be635124acad Author: Brian Paul <[email protected]> Date: Thu Jan 7 14:49:12 2010 -0700 tgsi: fix SSE code emit for XPD Rearrange things so that the writes to the dest registers happen after we've fetched/used all src registers. The problematic instruction was: XPD TEMP[2].xyz, TEMP[0], TEMP[2]; Note that the dst reg is also a src reg. This fixes bad shading with progs/glsl/bump.c since Eric's changes to the Mesa program optimizer in commit d6690ce15fb8c7c6abf1bc0d847c1d2da2c33904. The optimizer rearranges some registers so we occasionally wind up with something like the above. diff --git a/src/gallium/auxiliary/tgsi/tgsi_sse2.c b/src/gallium/auxiliary/tgsi/tgsi_sse2.c index a96fc94..2c39def 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_sse2.c +++ b/src/gallium/auxiliary/tgsi/tgsi_sse2.c @@ -2142,40 +2142,50 @@ emit_instruction( break; case TGSI_OPCODE_XPD: + /* Note: we do all stores after all operands have been fetched + * to avoid src/dst register aliasing issues for an instruction + * such as: XPD TEMP[2].xyz, TEMP[0], TEMP[2]; + */ if( IS_DST0_CHANNEL_ENABLED( *inst, CHAN_X ) || IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Y ) ) { - FETCH( func, *inst, 1, 1, CHAN_Z ); - FETCH( func, *inst, 3, 0, CHAN_Z ); + FETCH( func, *inst, 1, 1, CHAN_Z ); /* xmm[1] = src[1].z */ + FETCH( func, *inst, 3, 0, CHAN_Z ); /* xmm[3] = src[0].z */ } if( IS_DST0_CHANNEL_ENABLED( *inst, CHAN_X ) || IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Z ) ) { - FETCH( func, *inst, 0, 0, CHAN_Y ); - FETCH( func, *inst, 4, 1, CHAN_Y ); + FETCH( func, *inst, 0, 0, CHAN_Y ); /* xmm[0] = src[0].y */ + FETCH( func, *inst, 4, 1, CHAN_Y ); /* xmm[4] = src[1].y */ } IF_IS_DST0_CHANNEL_ENABLED( *inst, CHAN_X ) { - emit_MOV( func, 2, 0 ); - emit_mul( func, 2, 1 ); - emit_MOV( func, 5, 3 ); - emit_mul( func, 5, 4 ); - emit_sub( func, 2, 5 ); - STORE( func, *inst, 2, 0, CHAN_X ); + emit_MOV( func, 7, 0 ); /* xmm[7] = xmm[0] */ + emit_mul( func, 7, 1 ); /* xmm[7] = xmm[2] * xmm[1] */ + emit_MOV( func, 5, 3 ); /* xmm[5] = xmm[3] */ + emit_mul( func, 5, 4 ); /* xmm[5] = xmm[5] * xmm[4] */ + emit_sub( func, 7, 5 ); /* xmm[7] = xmm[2] - xmm[5] */ + /* store xmm[7] in dst.x below */ } if( IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Y ) || IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Z ) ) { - FETCH( func, *inst, 2, 1, CHAN_X ); - FETCH( func, *inst, 5, 0, CHAN_X ); + FETCH( func, *inst, 2, 1, CHAN_X ); /* xmm[2] = src[1].x */ + FETCH( func, *inst, 5, 0, CHAN_X ); /* xmm[5] = src[0].x */ } IF_IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Y ) { - emit_mul( func, 3, 2 ); - emit_mul( func, 1, 5 ); - emit_sub( func, 3, 1 ); - STORE( func, *inst, 3, 0, CHAN_Y ); + emit_mul( func, 3, 2 ); /* xmm[3] = xmm[3] * xmm[2] */ + emit_mul( func, 1, 5 ); /* xmm[1] = xmm[1] * xmm[5] */ + emit_sub( func, 3, 1 ); /* xmm[3] = xmm[3] - xmm[1] */ + /* store xmm[3] in dst.y below */ } IF_IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Z ) { - emit_mul( func, 5, 4 ); - emit_mul( func, 0, 2 ); - emit_sub( func, 5, 0 ); - STORE( func, *inst, 5, 0, CHAN_Z ); + emit_mul( func, 5, 4 ); /* xmm[5] = xmm[5] * xmm[4] */ + emit_mul( func, 0, 2 ); /* xmm[0] = xmm[0] * xmm[2] */ + emit_sub( func, 5, 0 ); /* xmm[5] = xmm[5] - xmm[0] */ + STORE( func, *inst, 5, 0, CHAN_Z ); /* dst.z = xmm[5] */ + } + IF_IS_DST0_CHANNEL_ENABLED( *inst, CHAN_X ) { + STORE( func, *inst, 7, 0, CHAN_X ); /* dst.x = xmm[7] */ + } + IF_IS_DST0_CHANNEL_ENABLED( *inst, CHAN_Y ) { + STORE( func, *inst, 3, 0, CHAN_Y ); /* dst.y = xmm[3] */ } IF_IS_DST0_CHANNEL_ENABLED( *inst, CHAN_W ) { emit_tempf( commit 2b7a4b2c0e9b18ed985b0eda34723d53bc2a305b Author: Brian Paul <[email protected]> Date: Thu Jan 7 08:22:37 2010 -0700 progs/fp: remove invalid tri-inv.c test INV is not a valid instruction. diff --git a/progs/fp/Makefile b/progs/fp/Makefile index d77cd32..681928c 100755 --- a/progs/fp/Makefile +++ b/progs/fp/Makefile @@ -17,7 +17,6 @@ SOURCES = \ tri-depth2.c \ tri-depthwrite.c \ tri-depthwrite2.c \ - tri-inv.c \ tri-param.c \ fp-tri.c diff --git a/progs/fp/SConscript b/progs/fp/SConscript index a783185..69614e1 100644 --- a/progs/fp/SConscript +++ b/progs/fp/SConscript @@ -17,7 +17,6 @@ progs = [ 'tri-depth2', 'tri-depthwrite', 'tri-depthwrite2', - 'tri-inv', 'tri-param', 'tri-tex', 'point-position', diff --git a/progs/fp/tri-inv.c b/progs/fp/tri-inv.c deleted file mode 100644 index 7e490fa..0000000 --- a/progs/fp/tri-inv.c +++ /dev/null @@ -1,111 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "INV result.color, fragment.color; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} commit d42467687e9de756aa3e4bca5e55f69391af3065 Author: Vinson Lee <[email protected]> Date: Wed Jan 6 21:39:44 2010 -0800 progs/demos: Assert that input to malloc is valid. diff --git a/progs/demos/fire.c b/progs/demos/fire.c index dd70f61..f30b893 100644 --- a/progs/demos/fire.c +++ b/progs/demos/fire.c @@ -6,6 +6,7 @@ * Humanware s.r.l. */ +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <math.h> @@ -759,6 +760,7 @@ main(int ac, char **av) glFogfv(GL_FOG_COLOR, fogcolor); glFogf(GL_FOG_DENSITY, 0.1); + assert(np > 0); p = (part *) malloc(sizeof(part) * np); for (i = 0; i < np; i++) -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

