docs/contents.html | 2 docs/envvars.html | 2 docs/helpwanted.html | 31 docs/news.html | 3 docs/relnotes-7.3.html | 4 docs/systems.html | 25 src/glx/x11/glxcurrent.c | 46 src/mesa/drivers/dri/i915/i915_fragprog.c | 4 src/mesa/drivers/dri/i915/intel_tris.c | 6 src/mesa/drivers/dri/i965/brw_vs_emit.c | 2 src/mesa/drivers/dri/i965/brw_wm.c | 57 src/mesa/drivers/dri/i965/brw_wm_debug.c | 4 src/mesa/drivers/dri/i965/brw_wm_fp.c | 4 src/mesa/drivers/dri/intel/intel_decode.c | 485 ++++++ src/mesa/main/texobj.c | 14 src/mesa/main/texstate.c | 8 src/mesa/swrast/s_triangle.c | 10 windows/VC8/mesa/gdi/gdi.vcproj | 220 ++ windows/VC8/mesa/gdi/gdi_staticCRT.vcproj | 261 --- windows/VC8/mesa/glu/glu.vcproj | 229 ++- windows/VC8/mesa/glu/glu_staticCRT.vcproj | 1019 ------------- windows/VC8/mesa/mesa.sln | 18 windows/VC8/mesa/mesa/dosfile | 1761 ----------------------- windows/VC8/mesa/mesa/dosfile2 | 1762 ----------------------- windows/VC8/mesa/mesa/mesa.vcproj | 212 ++ windows/VC8/mesa/mesa/mesa_staticCRT.vcproj | 1768 ------------------------ windows/VC8/mesa/mesa_staticCRT.sln | 46 windows/VC8/mesa/osmesa/osmesa.vcproj | 228 ++- windows/VC8/mesa/osmesa/osmesa_staticCRT.vcproj | 240 --- windows/VC8/progs/demos/gears.vcproj | 213 ++ windows/VC8/progs/demos/gears_staticCRT.vcproj | 238 --- windows/VC8/progs/glut/glut.vcproj | 219 ++ windows/VC8/progs/glut/glut_staticCRT.vcproj | 454 ------ windows/VC8/progs/progs.sln | 10 windows/VC8/progs/progs_staticCRT.sln | 31 35 files changed, 1821 insertions(+), 7815 deletions(-)
New commits: commit faa6d8af59c69b0c0239f64363b170619e2a9827 Author: Brian Paul <bri...@vmware.com> Date: Thu Jan 22 09:59:04 2009 -0700 docs: set 7.3 release date diff --git a/docs/news.html b/docs/news.html index 784aea3..b177f3b 100644 --- a/docs/news.html +++ b/docs/news.html @@ -11,10 +11,11 @@ <H1>News</H1> -<h2>January TBD, 2009</h2> +<h2>January 22, 2009</h2> <p> <a href="relnotes-7.3.html">Mesa 7.3</a> is released. This is a new development release. +Mesa 7.4 will follow and will have bug fixes relative to 7.3. </p> diff --git a/docs/relnotes-7.3.html b/docs/relnotes-7.3.html index 78ae00d..c083fcb 100644 --- a/docs/relnotes-7.3.html +++ b/docs/relnotes-7.3.html @@ -8,7 +8,7 @@ <body bgcolor="#eeeeee"> -<H1>Mesa 7.3 Release Notes / TBD January 2009</H1> +<H1>Mesa 7.3 Release Notes / 22 January 2009</H1> <p> Mesa 7.3 is a new development release. commit b6c41fd9335eade8fdfc66d43a32fbf9994e4983 Author: Brian Paul <bri...@vmware.com> Date: Thu Jan 22 09:58:52 2009 -0700 docs: assorted updates, link fixes diff --git a/docs/contents.html b/docs/contents.html index b348d3d..1dca3a2 100644 --- a/docs/contents.html +++ b/docs/contents.html @@ -48,7 +48,7 @@ a:visited { <li><a href="lists.html" target="MainFrame">Mailing Lists</a> <li><a href="bugs.html" target="MainFrame">Bug Database</a> <li><a href="webmaster.html" target="MainFrame">Webmaster</a> -<li><a href="http://dri.freedesktop.org/" target="MainFrame">Wiki</a> +<li><a href="http://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</a> </ul> <b>User Topics</b> diff --git a/docs/envvars.html b/docs/envvars.html index 7b64dc9..7fd9fe7 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -29,7 +29,7 @@ Setting this variable automatically sets the MESA_TEX_PROG variable as well. <p> The following are only applicable to the Xlib software driver. -See <A HREF="README.X11">README.X11</A> for details. +See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details. </p> <ul> <li>MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode diff --git a/docs/helpwanted.html b/docs/helpwanted.html index 4cd92b9..34afe49 100644 --- a/docs/helpwanted.html +++ b/docs/helpwanted.html @@ -15,17 +15,40 @@ Here are some specific ideas and areas where help would be appreciated: <ol> <li> -Enable -Wstrict-aliasing=2 -fstrict-aliasing and track down aliasing +<b>Driver patching and testing.</b> +Patches are often posted to the mesa3d-dev mailing list, but aren't +immediately checked into git because not enough people are testing them. +Just applying patches, testing and reporting back is helpful. +<li> +<b>Driver debugging.</b> +There are plenty of open bugs in the bug database. +<li> +<b>Remove aliasing warnings.</b> +Enable gcc -Wstrict-aliasing=2 -fstrict-aliasing and track down aliasing issues in the code. <li> -Windows 98/NT driver building, maintenance and testing +<b>Windows driver building, testing and maintenance.</b> +The Visual Studio project files aren't always updated in a timely manner +when new source files are added or old ones are removed. +Fixing these tends to delay new Mesa releases. +<li> +<b>Maintenance and testing of lesser-used drivers.</b> +Drivers such as DOS/DJGPP, GGI, etc that aren't being maintained are being +deprecated starting in Mesa 7.3. +<li> +<b>Contribute more tests to +<a href="http://glean.sourceforge.net/" target="_parent">glean</a>.</b> <li> -Maintenance and testing of lesser-used drivers, such as DOS/DJGPP, GGI, etc. +<b>Automatic testing. +</b> +It would be great if someone would set up an automated system for grabbing +the latest Mesa code and run tests (such as glean) then report issues to +the mailing list. </ol> <p> -If you want to help with Mesa, first join the Mesa developer's +If you want to do something new in Mesa, first join the Mesa developer's mailing list. Then post a message to propose what you want to do, just to make sure there's no issues. diff --git a/docs/systems.html b/docs/systems.html index 340f528..5137b07 100644 --- a/docs/systems.html +++ b/docs/systems.html @@ -27,16 +27,27 @@ the Amiga, Apple Macintosh, BeOS, NeXT, OS/2, MS-DOS, VMS, Windows </p> <p> -Details about particular drivers follows. -Be warned that some drivers may be out of date and no longer function. +Details about particular drivers follows: </p> <UL> -<LI><a href="xlibdriver.html">Xlib driver</a> for the X Window System -<li><a href="http://dri.freedesktop.org/" target="_parent"> -DRI hardware drivers</a> for the X window system +<li><a href="http://dri.freedesktop.org/" target="_parent"> DRI hardware +drivers</a> for the X Window System +<LI><a href="xlibdriver.html">Xlib software driver</a> for the X Window System +and Unix-like operating systems <LI>Microsoft Windows <A HREF="README.WIN32">(README.WIN32)</A> <LI>DEC VMS <A HREF="README.VMS">(README.VMS)</A> +</UL> + + +<h2>Deprecated Systems</h2> + +<p> +These drivers have not been maintained and are being deprecated. +They can be saved if someone steps up to help. +</p> + +<UL> <LI>3dfx/Glide <A HREF="README.3DFX">(README.3DFX)</A> <LI>GGI <A HREF="README.GGI">(README.GGI)</A> <LI>Amiga Amiwin <A HREF="README.AMIWIN">(README.AMIWIN)</A> @@ -49,6 +60,10 @@ DRI hardware drivers</a> for the X window system <LI>OpenStep <A HREF="README.OpenStep">(README.OpenStep)</A> <LI>OS/2 <A HREF="README.OS2">(README.OS2)</A> <LI>WindML <A HREF="README.WINDML">(README.WINDML)</A> +</UL> + +And for historical reference: +<UL> <LI><a href="http://utah-glx.sourceforge.net/" target="_parent">Utah GLX drivers</a> </UL> commit b8bd0b0ddc357f9b430bb6ddeb60c5a2179d3791 Author: Eric Anholt <e...@anholt.net> Date: Tue Jan 13 12:50:38 2009 -0800 i915: Add decode for PS in batchbuffers. diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index 4760906..f091d60 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -33,6 +33,7 @@ #include "shader/prog_parameter.h" #include "shader/program.h" #include "shader/programopt.h" +#include "shader/prog_print.h" #include "tnl/tnl.h" #include "tnl/t_context.h" @@ -1048,6 +1049,9 @@ i915ProgramStringNotify(GLcontext * ctx, _mesa_append_fog_code(ctx, &p->FragProg); p->FragProg.FogOption = GL_NONE; } + + if (INTEL_DEBUG & DEBUG_STATE) + _mesa_print_program(prog); } _tnl_program_string(ctx, target, prog); diff --git a/src/mesa/drivers/dri/intel/intel_decode.c b/src/mesa/drivers/dri/intel/intel_decode.c index 0b8a287..5f90ca2 100644 --- a/src/mesa/drivers/dri/intel/intel_decode.c +++ b/src/mesa/drivers/dri/intel/intel_decode.c @@ -37,6 +37,7 @@ #include <stdio.h> #include <stdarg.h> +#include <string.h> #include <inttypes.h> #include "intel_decode.h" @@ -324,6 +325,474 @@ decode_3d_1c(uint32_t *data, int count, uint32_t hw_offset, int *failures) return 1; } +/** Sets the string dstname to describe the destination of the PS instruction */ +static void +i915_get_instruction_dst(uint32_t *data, int i, char *dstname, int do_mask) +{ + uint32_t a0 = data[i]; + int dst_nr = (a0 >> 14) & 0xf; + char dstmask[8]; + char *sat; + + if (do_mask) { + if (((a0 >> 10) & 0xf) == 0xf) { + dstmask[0] = 0; + } else { + int dstmask_index = 0; + + dstmask[dstmask_index++] = '.'; + if (a0 & (1 << 10)) + dstmask[dstmask_index++] = 'x'; + if (a0 & (1 << 11)) + dstmask[dstmask_index++] = 'y'; + if (a0 & (1 << 12)) + dstmask[dstmask_index++] = 'z'; + if (a0 & (1 << 13)) + dstmask[dstmask_index++] = 'w'; + dstmask[dstmask_index++] = 0; + } + + if (a0 & (1 << 22)) + sat = ".sat"; + else + sat = ""; + } else { + dstmask[0] = 0; + sat = ""; + } + + switch ((a0 >> 19) & 0x7) { + case 0: + if (dst_nr > 15) + fprintf(out, "bad destination reg R%d\n", dst_nr); + sprintf(dstname, "R%d%s%s", dst_nr, dstmask, sat); + break; + case 4: + if (dst_nr > 0) + fprintf(out, "bad destination reg oC%d\n", dst_nr); + sprintf(dstname, "oC%s%s", dstmask, sat); + break; + case 5: + if (dst_nr > 0) + fprintf(out, "bad destination reg oD%d\n", dst_nr); + sprintf(dstname, "oD%s%s", dstmask, sat); + break; + case 6: + if (dst_nr > 2) + fprintf(out, "bad destination reg U%d\n", dst_nr); + sprintf(dstname, "U%d%s%s", dst_nr, dstmask, sat); + break; + default: + sprintf(dstname, "RESERVED"); + break; + } +} + +static char * +i915_get_channel_swizzle(uint32_t select) +{ + switch (select & 0x7) { + case 0: + return (select & 8) ? "-x" : "x"; + case 1: + return (select & 8) ? "-y" : "y"; + case 2: + return (select & 8) ? "-z" : "z"; + case 3: + return (select & 8) ? "-w" : "w"; + case 4: + return (select & 8) ? "-0" : "0"; + case 5: + return (select & 8) ? "-1" : "1"; + default: + return (select & 8) ? "-bad" : "bad"; + } +} + +static void +i915_get_instruction_src_name(uint32_t src_type, uint32_t src_nr, char *name) +{ + switch (src_type) { + case 0: + sprintf(name, "R%d", src_nr); + if (src_nr > 15) + fprintf(out, "bad src reg %s\n", name); + break; + case 1: + if (src_nr < 8) + sprintf(name, "T%d", src_nr); + else if (src_nr == 8) + sprintf(name, "DIFFUSE"); + else if (src_nr == 9) + sprintf(name, "SPECULAR"); + else if (src_nr == 10) + sprintf(name, "FOG"); + else { + fprintf(out, "bad src reg T%d\n", src_nr); + sprintf(name, "RESERVED"); + } + break; + case 2: + sprintf(name, "C%d", src_nr); + if (src_nr > 31) + fprintf(out, "bad src reg %s\n", name); + break; + case 4: + sprintf(name, "oC"); + if (src_nr > 0) + fprintf(out, "bad src reg oC%d\n", src_nr); + break; + case 5: + sprintf(name, "oD"); + if (src_nr > 0) + fprintf(out, "bad src reg oD%d\n", src_nr); + break; + case 6: + sprintf(name, "U%d", src_nr); + if (src_nr > 2) + fprintf(out, "bad src reg %s\n", name); + break; + default: + fprintf(out, "bad src reg type %d\n", src_type); + sprintf(name, "RESERVED"); + break; + } +} + +static void +i915_get_instruction_src0(uint32_t *data, int i, char *srcname) +{ + uint32_t a0 = data[i]; + uint32_t a1 = data[i + 1]; + int src_nr = (a0 >> 2) & 0x1f; + char *swizzle_x = i915_get_channel_swizzle((a1 >> 28) & 0xf); + char *swizzle_y = i915_get_channel_swizzle((a1 >> 24) & 0xf); + char *swizzle_z = i915_get_channel_swizzle((a1 >> 20) & 0xf); + char *swizzle_w = i915_get_channel_swizzle((a1 >> 16) & 0xf); + char swizzle[100]; + + i915_get_instruction_src_name((a0 >> 7) & 0x7, src_nr, srcname); + sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); + if (strcmp(swizzle, ".xyzw") != 0) + strcat(srcname, swizzle); +} + +static void +i915_get_instruction_src1(uint32_t *data, int i, char *srcname) +{ + uint32_t a1 = data[i + 1]; + uint32_t a2 = data[i + 2]; + int src_nr = (a1 >> 8) & 0x1f; + char *swizzle_x = i915_get_channel_swizzle((a1 >> 4) & 0xf); + char *swizzle_y = i915_get_channel_swizzle((a1 >> 0) & 0xf); + char *swizzle_z = i915_get_channel_swizzle((a2 >> 28) & 0xf); + char *swizzle_w = i915_get_channel_swizzle((a2 >> 24) & 0xf); + char swizzle[100]; + + i915_get_instruction_src_name((a1 >> 13) & 0x7, src_nr, srcname); + sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); + if (strcmp(swizzle, ".xyzw") != 0) + strcat(srcname, swizzle); +} + +static void +i915_get_instruction_src2(uint32_t *data, int i, char *srcname) +{ + uint32_t a2 = data[i + 2]; + int src_nr = (a2 >> 16) & 0x1f; + char *swizzle_x = i915_get_channel_swizzle((a2 >> 12) & 0xf); + char *swizzle_y = i915_get_channel_swizzle((a2 >> 8) & 0xf); + char *swizzle_z = i915_get_channel_swizzle((a2 >> 4) & 0xf); + char *swizzle_w = i915_get_channel_swizzle((a2 >> 0) & 0xf); + char swizzle[100]; + + i915_get_instruction_src_name((a2 >> 21) & 0x7, src_nr, srcname); + sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); + if (strcmp(swizzle, ".xyzw") != 0) + strcat(srcname, swizzle); +} + +static void +i915_get_instruction_addr(uint32_t src_type, uint32_t src_nr, char *name) +{ + switch (src_type) { + case 0: + sprintf(name, "R%d", src_nr); + if (src_nr > 15) + fprintf(out, "bad src reg %s\n", name); + break; + case 1: + if (src_nr < 8) + sprintf(name, "T%d", src_nr); + else if (src_nr == 8) + sprintf(name, "DIFFUSE"); + else if (src_nr == 9) + sprintf(name, "SPECULAR"); + else if (src_nr == 10) + sprintf(name, "FOG"); + else { + fprintf(out, "bad src reg T%d\n", src_nr); + sprintf(name, "RESERVED"); + } + break; + case 4: + sprintf(name, "oC"); + if (src_nr > 0) + fprintf(out, "bad src reg oC%d\n", src_nr); + break; + case 5: + sprintf(name, "oD"); + if (src_nr > 0) + fprintf(out, "bad src reg oD%d\n", src_nr); + break; + default: + fprintf(out, "bad src reg type %d\n", src_type); + sprintf(name, "RESERVED"); + break; + } +} + +static void +i915_decode_alu1(uint32_t *data, uint32_t hw_offset, + int i, char *instr_prefix, char *op_name) +{ + char dst[100], src0[100]; + + i915_get_instruction_dst(data, i, dst, 1); + i915_get_instruction_src0(data, i, src0); + + instr_out(data, hw_offset, i++, "%s: %s %s, %s\n", instr_prefix, + op_name, dst, src0); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); +} + +static void +i915_decode_alu2(uint32_t *data, uint32_t hw_offset, + int i, char *instr_prefix, char *op_name) +{ + char dst[100], src0[100], src1[100]; + + i915_get_instruction_dst(data, i, dst, 1); + i915_get_instruction_src0(data, i, src0); + i915_get_instruction_src1(data, i, src1); + + instr_out(data, hw_offset, i++, "%s: %s %s, %s, %s\n", instr_prefix, + op_name, dst, src0, src1); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); +} + +static void +i915_decode_alu3(uint32_t *data, uint32_t hw_offset, + int i, char *instr_prefix, char *op_name) +{ + char dst[100], src0[100], src1[100], src2[100]; + + i915_get_instruction_dst(data, i, dst, 1); + i915_get_instruction_src0(data, i, src0); + i915_get_instruction_src1(data, i, src1); + i915_get_instruction_src2(data, i, src2); + + instr_out(data, hw_offset, i++, "%s: %s %s, %s, %s, %s\n", instr_prefix, + op_name, dst, src0, src1, src2); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); +} + +static void +i915_decode_tex(uint32_t *data, uint32_t hw_offset, int i, char *instr_prefix, + char *tex_name) +{ + uint32_t t0 = data[i]; + uint32_t t1 = data[i + 1]; + char dst_name[100]; + char addr_name[100]; + int sampler_nr; + + i915_get_instruction_dst(data, i, dst_name, 0); + i915_get_instruction_addr((t1 >> 24) & 0x7, + (t1 >> 17) & 0xf, + addr_name); + sampler_nr = t0 & 0xf; + + instr_out(data, hw_offset, i++, "%s: %s %s, S%d, %s\n", instr_prefix, + tex_name, dst_name, sampler_nr, addr_name); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); +} + +static void +i915_decode_dcl(uint32_t *data, uint32_t hw_offset, int i, char *instr_prefix) +{ + uint32_t d0 = data[i]; + char *sampletype; + int dcl_nr = (d0 >> 14) & 0xf; + char *dcl_x = d0 & (1 << 10) ? "x" : ""; + char *dcl_y = d0 & (1 << 11) ? "y" : ""; + char *dcl_z = d0 & (1 << 12) ? "z" : ""; + char *dcl_w = d0 & (1 << 13) ? "w" : ""; + char dcl_mask[10]; + + switch ((d0 >> 19) & 0x3) { + case 1: + sprintf(dcl_mask, ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w); + if (strcmp(dcl_mask, ".") == 0) + fprintf(out, "bad (empty) dcl mask\n"); + + if (dcl_nr > 10) + fprintf(out, "bad T%d dcl register number\n", dcl_nr); + if (dcl_nr < 8) { + if (strcmp(dcl_mask, ".x") != 0 && + strcmp(dcl_mask, ".xy") != 0 && + strcmp(dcl_mask, ".xz") != 0 && + strcmp(dcl_mask, ".w") != 0 && + strcmp(dcl_mask, ".xyzw") != 0) { + fprintf(out, "bad T%d.%s dcl mask\n", dcl_nr, dcl_mask); + } + instr_out(data, hw_offset, i++, "%s: DCL T%d%s\n", instr_prefix, + dcl_nr, dcl_mask); + } else { + if (strcmp(dcl_mask, ".xz") == 0) + fprintf(out, "errataed bad dcl mask %s\n", dcl_mask); + else if (strcmp(dcl_mask, ".xw") == 0) + fprintf(out, "errataed bad dcl mask %s\n", dcl_mask); + else if (strcmp(dcl_mask, ".xzw") == 0) + fprintf(out, "errataed bad dcl mask %s\n", dcl_mask); + + if (dcl_nr == 8) { + instr_out(data, hw_offset, i++, "%s: DCL DIFFUSE%s\n", instr_prefix, + dcl_mask); + } else if (dcl_nr == 9) { + instr_out(data, hw_offset, i++, "%s: DCL SPECULAR%s\n", instr_prefix, + dcl_mask); + } else if (dcl_nr == 10) { + instr_out(data, hw_offset, i++, "%s: DCL FOG%s\n", instr_prefix, + dcl_mask); + } + } + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + break; + case 3: + switch ((d0 >> 22) & 0x3) { + case 0: + sampletype = "2D"; + break; + case 1: + sampletype = "CUBE"; + break; + case 2: + sampletype = "3D"; + break; + default: + sampletype = "RESERVED"; + break; + } + if (dcl_nr > 15) + fprintf(out, "bad S%d dcl register number\n", dcl_nr); + instr_out(data, hw_offset, i++, "%s: DCL S%d %s\n", instr_prefix, + dcl_nr, sampletype); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + break; + default: + instr_out(data, hw_offset, i++, "%s: DCL RESERVED%d\n", instr_prefix, dcl_nr); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + } +} + +static void +i915_decode_instruction(uint32_t *data, uint32_t hw_offset, + int i, char *instr_prefix) +{ + switch ((data[i] >> 24) & 0x1f) { + case 0x0: + instr_out(data, hw_offset, i++, "%s: NOP\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + break; + case 0x01: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "ADD"); + break; + case 0x02: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "MOV"); + break; + case 0x03: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "MUL"); + break; + case 0x04: + i915_decode_alu3(data, hw_offset, i, instr_prefix, "MAD"); + break; + case 0x05: + i915_decode_alu3(data, hw_offset, i, instr_prefix, "DP2ADD"); + break; + case 0x06: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "DP3"); + break; + case 0x07: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "DP4"); + break; + case 0x08: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "FRC"); + break; + case 0x09: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "RCP"); + break; + case 0x0a: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "RSQ"); + break; + case 0x0b: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "EXP"); + break; + case 0x0c: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "LOG"); + break; + case 0x0d: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "CMP"); + break; + case 0x0e: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "MIN"); + break; + case 0x0f: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "MAX"); + break; + case 0x10: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "FLR"); + break; + case 0x11: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "MOD"); + break; + case 0x12: + i915_decode_alu1(data, hw_offset, i, instr_prefix, "TRC"); + break; + case 0x13: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "SGE"); + break; + case 0x14: + i915_decode_alu2(data, hw_offset, i, instr_prefix, "SLT"); + break; + case 0x15: + i915_decode_tex(data, hw_offset, i, instr_prefix, "TEXLD"); + break; + case 0x16: + i915_decode_tex(data, hw_offset, i, instr_prefix, "TEXLDP"); + break; + case 0x17: + i915_decode_tex(data, hw_offset, i, instr_prefix, "TEXLDB"); + break; + case 0x19: + i915_decode_dcl(data, hw_offset, i, instr_prefix); + break; + default: + instr_out(data, hw_offset, i++, "%s: unknown\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + instr_out(data, hw_offset, i++, "%s\n", instr_prefix); + break; + } +} + static int decode_3d_1d(uint32_t *data, int count, uint32_t hw_offset, int *failures, int i830) { @@ -441,8 +910,9 @@ decode_3d_1d(uint32_t *data, int count, uint32_t hw_offset, int *failures, int i case 0x00: instr_out(data, hw_offset, 0, "3DSTATE_MAP_STATE\n"); len = (data[0] & 0x0000003f) + 2; + instr_out(data, hw_offset, 1, "mask\n"); - i = 1; + i = 2; for (map = 0; map <= 15; map++) { if (data[1] & (1 << map)) { if (i + 3 >= count) @@ -495,19 +965,22 @@ decode_3d_1d(uint32_t *data, int count, uint32_t hw_offset, int *failures, int i } i = 1; for (instr = 0; instr < (len - 1) / 3; instr++) { + char instr_prefix[10]; + if (i + 3 >= count) - BUFFER_FAIL(count, len, "3DSTATE_MAP_STATE"); - instr_out(data, hw_offset, i++, "PS%03x\n", instr); - instr_out(data, hw_offset, i++, "PS%03x\n", instr); - instr_out(data, hw_offset, i++, "PS%03x\n", instr); + BUFFER_FAIL(count, len, "3DSTATE_PIXEL_SHADER_PROGRAM"); + sprintf(instr_prefix, "PS%03d", instr); + i915_decode_instruction(data, hw_offset, i, instr_prefix); + i += 3; } return len; case 0x01: if (i830) break; instr_out(data, hw_offset, 0, "3DSTATE_SAMPLER_STATE\n"); + instr_out(data, hw_offset, 1, "mask\n"); len = (data[0] & 0x0000003f) + 2; - i = 1; + i = 2; for (sampler = 0; sampler <= 15; sampler++) { if (data[1] & (1 << sampler)) { if (i + 3 >= count) commit fc3971d80051b34836716579fd060dbb122d036b Author: Eric Anholt <e...@anholt.net> Date: Thu Jan 8 19:15:04 2009 -0800 i965: Remove gratuitous whitespace in INTEL_DEBUG=wm output. diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 2084480..174331a 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -1006,7 +1006,7 @@ void brw_vs_emit(struct brw_vs_compile *c ) GLuint file; if (INTEL_DEBUG & DEBUG_VS) { - _mesa_printf("\n\n\nvs-emit:\n"); + _mesa_printf("vs-emit:\n"); _mesa_print_program(&c->vp->program.Base); _mesa_printf("\n"); } diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index b8fbc8c..c50b0d2 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -136,6 +136,9 @@ static void do_wm_prog( struct brw_context *brw, */ brw_wm_emit(c); } + if (INTEL_DEBUG & DEBUG_WM) + fprintf(stderr, "\n"); + /* get the program */ program = brw_get_program(&c->func, &program_size); diff --git a/src/mesa/drivers/dri/i965/brw_wm_debug.c b/src/mesa/drivers/dri/i965/brw_wm_debug.c index f31d097..8f07f89 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_debug.c +++ b/src/mesa/drivers/dri/i965/brw_wm_debug.c @@ -163,9 +163,9 @@ void brw_wm_print_program( struct brw_wm_compile *c, { GLuint insn; - _mesa_printf("\n\n\n%s:\n", stage); + _mesa_printf("%s:\n", stage); for (insn = 0; insn < c->nr_insns; insn++) brw_wm_print_insn(c, &c->instruction[insn]); - _mesa_printf("\n\n\n"); + _mesa_printf("\n"); } diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index 1a00b69..6df2c95 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -913,7 +913,7 @@ void brw_wm_pass_fp( struct brw_wm_compile *c ) GLuint insn; if (INTEL_DEBUG & DEBUG_WM) { - _mesa_printf("\n\n\npre-fp:\n"); + _mesa_printf("pre-fp:\n"); _mesa_print_program(&fp->program.Base); _mesa_printf("\n"); } @@ -1020,7 +1020,7 @@ void brw_wm_pass_fp( struct brw_wm_compile *c ) } if (INTEL_DEBUG & DEBUG_WM) { - _mesa_printf("\n\n\npass_fp:\n"); + _mesa_printf("pass_fp:\n"); print_insns( c->prog_instructions, c->nr_fp_insns ); _mesa_printf("\n"); } commit 046e88fc0be37d5a3dfbfa9fb8033b549604c74c Author: Eric Anholt <e...@anholt.net> Date: Thu Jan 8 19:00:10 2009 -0800 i965: Use _mesa_num_inst_src_regs() instead of keeping a copy of its contents. diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 5b4ee20..b8fbc8c 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -40,62 +40,20 @@ GLuint brw_wm_nr_args( GLuint opcode ) { switch (opcode) { - case WM_PIXELXY: - case OPCODE_ABS: - case OPCODE_FLR: - case OPCODE_FRC: - case OPCODE_SWZ: - case OPCODE_MOV: - case OPCODE_COS: - case OPCODE_EX2: - case OPCODE_LG2: - case OPCODE_RCP: - case OPCODE_RSQ: - case OPCODE_SIN: - case OPCODE_SCS: - case OPCODE_TEX: - case OPCODE_TXB: - case OPCODE_TXP: - case OPCODE_KIL: - case OPCODE_LIT: - case OPCODE_NRM3: - case OPCODE_NRM4: - case WM_CINTERP: - case WM_WPOSXY: + case WM_CINTERP: + case WM_WPOSXY: return 1; - - case OPCODE_POW: - case OPCODE_SUB: - case OPCODE_SGE: - case OPCODE_SGT: - case OPCODE_SLE: - case OPCODE_SLT: - case OPCODE_SEQ: - case OPCODE_SNE: - case OPCODE_ADD: - case OPCODE_MAX: - case OPCODE_MIN: - case OPCODE_MUL: - case OPCODE_XPD: - case OPCODE_DP3: - case OPCODE_DP4: - case OPCODE_DPH: - case OPCODE_DST: - case WM_LINTERP: + case WM_LINTERP: case WM_DELTAXY: case WM_PIXELW: return 2; - case WM_FB_WRITE: - case WM_PINTERP: - case OPCODE_MAD: - case OPCODE_CMP: - case OPCODE_LRP: + case WM_PINTERP: return 3; - default: - return 0; + assert(opcode < MAX_OPCODE); + return _mesa_num_inst_src_regs(opcode); } } commit 194d039f1efee0e666c2d1b1116fd5adea8cb942 Author: Kristian Høgsberg <k...@redhat.com> Date: Wed Jan 21 11:47:01 2009 -0500 [intel] Remove remaining references to intel_wait_flips(). Oops. diff --git a/src/mesa/drivers/dri/i915/intel_tris.c b/src/mesa/drivers/dri/i915/intel_tris.c index c4708dc..e809965 100644 --- a/src/mesa/drivers/dri/i915/intel_tris.c +++ b/src/mesa/drivers/dri/i915/intel_tris.c @@ -92,7 +92,6 @@ static void intel_start_inline(struct intel_context *intel, uint32_t prim) BATCH_LOCALS; uint32_t batch_flags = LOOP_CLIPRECTS; - intel_wait_flips(intel); intel->vtbl.emit_state(intel); intel->no_batch_wrap = GL_TRUE; @@ -214,8 +213,7 @@ void intel_flush_prim(struct intel_context *intel) return; /* Clear the current prims out of the context state so that a batch flush - * flush triggered by wait_flips or emit_state doesn't loop back to - * flush_prim again. + * flush triggered by emit_state doesn't loop back to flush_prim again. */ vb_bo = intel->prim.vb_bo; dri_bo_reference(vb_bo); @@ -227,8 +225,6 @@ void intel_flush_prim(struct intel_context *intel) intel->prim.start_offset = ALIGN(intel->prim.start_offset, 128); intel->prim.flush = NULL; - intel_wait_flips(intel); - intel->vtbl.emit_state(intel); aper_array[0] = intel->batch->buf; commit 470e10dfaa7a7c6801be1092e1527a944ac38a10 Author: Thomas Henn <thomas.h...@igd.fraunhofer.de> Date: Wed Jan 21 09:31:58 2009 -0700 windows: fix output dir for glut project file diff --git a/windows/VC8/progs/glut/glut.vcproj b/windows/VC8/progs/glut/glut.vcproj index cdc30a1..538b9e1 100644 --- a/windows/VC8/progs/glut/glut.vcproj +++ b/windows/VC8/progs/glut/glut.vcproj @@ -71,7 +71,7 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="winmm.lib opengl32.lib glu32.lib gdi32.lib user32.lib" - OutputFile="Debug/GLUT32.DLL" + OutputFile="$(OutDir)\GLUT32.dll" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TargetDir)" @@ -163,7 +163,7 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="winmm.lib opengl32.lib glu32.lib gdi32.lib user32.lib" - OutputFile="Release/GLUT32.DLL" + OutputFile="$(OutDir)\GLUT32.dll" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TargetDir)" @@ -252,7 +252,7 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="winmm.lib opengl32.lib glu32.lib gdi32.lib user32.lib" - OutputFile="Debug/GLUT32.DLL" + OutputFile="$(OutDir)\GLUT32.dll" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TargetDir)" @@ -344,7 +344,7 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="winmm.lib opengl32.lib glu32.lib gdi32.lib user32.lib" - OutputFile="Release/GLUT32.DLL" + OutputFile="$(OutDir)\GLUT32.dll" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TargetDir)" commit 8c7135ee14fb6f4d8b6e64d570daee3512c99438 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org