[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mesa: Changes to 'upstream-experimental'



Rebased ref, commits from common ancestor:
commit db3b34219ef1dbf9ebf5e524d3e459f9ad9571b5
Author: Brian Paul <brianp@vmware.com>
Date:   Fri Apr 16 08:25:58 2010 -0600

    docs: update links for new mesa-users and mesa-announce lists

diff --git a/docs/lists.html b/docs/lists.html
index e758a79..1c6a4d9 100644
--- a/docs/lists.html
+++ b/docs/lists.html
@@ -13,8 +13,8 @@
 </p>
 
 <ul>
-<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-users";
-target="_parent">mesa3d-users</a> - intended for end-users of Mesa and DRI
+<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-users";
+target="_parent">mesa-users</a> - intended for end-users of Mesa and DRI
 drivers.  Newbie questions are OK, but please try the general OpenGL
 resources and Mesa/DRI documentation first.
 </li>
@@ -30,8 +30,8 @@ target="_parent">mesa-commit</a> - relays git check-in messages
 In general, people should not post to this list.
 </li>
 <br>
-<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-announce";
-target="_parent">mesa3d-announce</a> - announcements of new Mesa
+<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-announce";
+target="_parent">mesa-announce</a> - announcements of new Mesa
 versions are sent to this list.  Very low traffic.
 </li>
 </ul>

commit 885048232fb715b0646d52ff35305941a25f1382
Author: Tormod Volden <lists.tormod@gmail.com>
Date:   Thu Apr 15 10:13:53 2010 -0700

    savage: call _mesa_meta_init/free()
    
    Fixes crash when using _mesa_CopyTexImage2D.
    Bug #27652.
    
    Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
    Signed-off-by: Brian Paul <brianp@vmware.com>

diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c
index 6f07ac2..c3a53ea 100644
--- a/src/mesa/drivers/dri/savage/savage_xmesa.c
+++ b/src/mesa/drivers/dri/savage/savage_xmesa.c
@@ -44,6 +44,7 @@
 #include "tnl/t_pipeline.h"
 
 #include "drivers/common/driverfuncs.h"
+#include "drivers/common/meta.h"
 
 #include "savagedd.h"
 #include "savagestate.h"
@@ -473,6 +474,8 @@ savageCreateContext( const __GLcontextModes *mesaVis,
    imesa->CurrentTexObj[0] = 0;
    imesa->CurrentTexObj[1] = 0;
 
+   _mesa_meta_init( ctx );
+
    /* Initialize the software rasterizer and helper modules.
     */
    _swrast_CreateContext( ctx );
@@ -564,6 +567,8 @@ savageDestroyContext(__DRIcontext *driContextPriv)
       free(imesa->cmdBuf.base);
       free(imesa->clientVtxBuf.buf);
 
+      _mesa_meta_free( imesa->glCtx );
+
       _swsetup_DestroyContext(imesa->glCtx );
       _tnl_DestroyContext( imesa->glCtx );
       _vbo_DestroyContext( imesa->glCtx );

commit b3a68cdc6f4bf2c006aa01f8980536e8e520d62a
Author: Arpad Borsos <arpad.borsos@googlemail.com>
Date:   Wed Apr 14 14:26:32 2010 -0600

    softpipe: Fix division by zero
    
    This can be triggered by running the cairo tests using the gl backend
    and softpipe.
    
    Signed-off-by: Brian Paul <brianp@vmware.com>

diff --git a/src/gallium/drivers/softpipe/sp_setup.c b/src/gallium/drivers/softpipe/sp_setup.c
index 85966bc..e64aee6 100644
--- a/src/gallium/drivers/softpipe/sp_setup.c
+++ b/src/gallium/drivers/softpipe/sp_setup.c
@@ -669,17 +669,17 @@ static void setup_tri_edges( struct setup_context *setup )
 
    setup->emaj.sy = ceilf(vmin_y);
    setup->emaj.lines = (int) ceilf(vmax_y - setup->emaj.sy);
-   setup->emaj.dxdy = setup->emaj.dx / setup->emaj.dy;
+   setup->emaj.dxdy = setup->emaj.dy ? setup->emaj.dx / setup->emaj.dy : .0f;
    setup->emaj.sx = vmin_x + (setup->emaj.sy - vmin_y) * setup->emaj.dxdy;
 
    setup->etop.sy = ceilf(vmid_y);
    setup->etop.lines = (int) ceilf(vmax_y - setup->etop.sy);
-   setup->etop.dxdy = setup->etop.dx / setup->etop.dy;
+   setup->etop.dxdy = setup->etop.dy ? setup->etop.dx / setup->etop.dy : .0f;
    setup->etop.sx = vmid_x + (setup->etop.sy - vmid_y) * setup->etop.dxdy;
 
    setup->ebot.sy = ceilf(vmin_y);
    setup->ebot.lines = (int) ceilf(vmid_y - setup->ebot.sy);
-   setup->ebot.dxdy = setup->ebot.dx / setup->ebot.dy;
+   setup->ebot.dxdy = setup->ebot.dy ? setup->ebot.dx / setup->ebot.dy : .0f;
    setup->ebot.sx = vmin_x + (setup->ebot.sy - vmin_y) * setup->ebot.dxdy;
 }
 

commit d9793fc3ac0986f8665e269ecf993705132d0360
Author: Michael Schmidt <mschmidt@redhat.com>
Date:   Wed Apr 14 10:12:42 2010 -0400

    Initialize DRI2 swap interval to 0
    
    https://bugs.freedesktop.org/show_bug.cgi?id=27628

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index c4b5cb9..06f3d8b 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -185,6 +185,7 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
    pdraw->base.drawable = drawable;
    pdraw->base.psc = psc;
    pdraw->bufferCount = 0;
+   pdraw->swap_interval = 0;
 
    DRI2CreateDrawable(psc->dpy, xDrawable);
 

commit 157bdd1446dd21cc87a89abdc890b2f6dc83af76
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Tue Apr 13 09:38:41 2010 -0700

    DRI2: report swap events correctly in direct rendered case
    
    In the direct rendered case, we need to convert DRI2 swap complete
    events to GLX events for the client to consume.  This path had what
    looks like a stray "& 0x75" from some earlier debugging that prevented
    clients from seeing the right event code.

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index 80c125e..6afa414 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -101,8 +101,7 @@ DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire)
       GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event;
       xDRI2BufferSwapComplete *awire = (xDRI2BufferSwapComplete *)wire;
       aevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *) wire);
-      aevent->type =
-	  (glx_info->codes->first_event + GLX_BufferSwapComplete) & 0x75;
+      aevent->type = glx_info->codes->first_event + GLX_BufferSwapComplete;
       aevent->send_event = (awire->type & 0x80) != 0;
       aevent->display = dpy;
       aevent->drawable = awire->drawable;

commit 497b66094df5bfeb210ab0ebbdcf1e0b811b001a
Author: Brian Paul <brianp@vmware.com>
Date:   Mon Apr 12 18:45:10 2010 -0600

    docs: update name, link for mesa-dev list

diff --git a/docs/lists.html b/docs/lists.html
index 9c17a9f..e758a79 100644
--- a/docs/lists.html
+++ b/docs/lists.html
@@ -19,8 +19,8 @@ drivers.  Newbie questions are OK, but please try the general OpenGL
 resources and Mesa/DRI documentation first.
 </li>
 <br>
-<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-dev";
-target="_parent">mesa3d-dev</a> - for Mesa, Gallium and DRI development
+<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev";
+target="_parent">mesa-dev</a> - for Mesa, Gallium and DRI development
 discussion.  Not for beginners.
 </li>
 <br>

commit 4a796264dfc1bdba37a7204f3439a8da213109ed
Author: Vinson Lee <vlee@vmware.com>
Date:   Sun Apr 11 17:56:21 2010 -0700

    i915g: Fix assert.

diff --git a/src/gallium/drivers/i915/i915_fpc_emit.c b/src/gallium/drivers/i915/i915_fpc_emit.c
index b054ce4..76c24d2 100644
--- a/src/gallium/drivers/i915/i915_fpc_emit.c
+++ b/src/gallium/drivers/i915/i915_fpc_emit.c
@@ -243,7 +243,7 @@ uint i915_emit_texld( struct i915_fp_compile *p,
    }
    else {
       assert(GET_UREG_TYPE(dest) != REG_TYPE_CONST);
-      assert(dest = UREG(GET_UREG_TYPE(dest), GET_UREG_NR(dest)));
+      assert(dest == UREG(GET_UREG_TYPE(dest), GET_UREG_NR(dest)));
 
       /* is the sampler coord a texcoord input reg? */
       if (GET_UREG_TYPE(coord) != REG_TYPE_T) {

commit 2657325c4a73a2bfa94888a936d06466000e7fbf
Author: Maciej Cencora <m.cencora@gmail.com>
Date:   Sun Apr 11 12:39:54 2010 +0200

    r300: respect radeon common code fallbacks
    
    Fixes progs/demos/shadowtex under KMS

diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c
index ff35cd5..689bb13 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -61,6 +61,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "r300_state.h"
 #include "r300_tex.h"
 #include "r300_emit.h"
+#include "r300_render.h"
 #include "r300_swtcl.h"
 #include "radeon_bocs_wrapper.h"
 #include "radeon_buffer_objects.h"
@@ -226,6 +227,8 @@ static void r300_fallback(GLcontext *ctx, GLuint bit, GLboolean mode)
 		r300->radeon.Fallback |= bit;
 	else
 		r300->radeon.Fallback &= ~bit;
+
+	r300SwitchFallback(ctx, R300_FALLBACK_RADEON_COMMON, mode);
 }
 
 static void r300_emit_query_finish(radeonContextPtr radeon)
diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c
index 11eafd3..bb8f914 100644
--- a/src/mesa/drivers/dri/r300/r300_render.c
+++ b/src/mesa/drivers/dri/r300/r300_render.c
@@ -408,8 +408,9 @@ void r300RunRenderPrimitive(GLcontext * ctx, int start, int end, int prim)
 	COMMIT_BATCH();
 }
 
-static const char *getFallbackString(uint32_t bit)
+static const char *getFallbackString(r300ContextPtr rmesa, uint32_t bit)
 {
+	static char common_fallback_str[32];
 	switch (bit) {
 		case R300_FALLBACK_VERTEX_PROGRAM :
 			return "vertex program";
@@ -429,6 +430,9 @@ static const char *getFallbackString(uint32_t bit)
 			return "render mode != GL_RENDER";
 		case R300_FALLBACK_FRAGMENT_PROGRAM:
 			return "fragment program";
+		case R300_FALLBACK_RADEON_COMMON:
+			snprintf(common_fallback_str, 32, "radeon common 0x%08x", rmesa->radeon.Fallback);
+			return common_fallback_str;
 		case R300_FALLBACK_AOS_LIMIT:
 			return "aos limit";
 		case R300_FALLBACK_INVALID_BUFFERS:
@@ -448,7 +452,7 @@ void r300SwitchFallback(GLcontext *ctx, uint32_t bit, GLboolean mode)
 	if (mode) {
 		if ((fallback_warn & bit) == 0) {
 			if (RADEON_DEBUG & RADEON_FALLBACKS)
-				fprintf(stderr, "WARNING! Falling back to software for %s\n", getFallbackString(bit));
+				fprintf(stderr, "WARNING! Falling back to software for %s\n", getFallbackString(rmesa, bit));
 			fallback_warn |= bit;
 		}
 		rmesa->fallback |= bit;
diff --git a/src/mesa/drivers/dri/r300/r300_render.h b/src/mesa/drivers/dri/r300/r300_render.h
index ec78547..581e9fa 100644
--- a/src/mesa/drivers/dri/r300/r300_render.h
+++ b/src/mesa/drivers/dri/r300/r300_render.h
@@ -41,6 +41,7 @@
 #define R300_FALLBACK_STENCIL_TWOSIDE   (1 << 21)
 #define R300_FALLBACK_RENDER_MODE       (1 << 22)
 #define R300_FALLBACK_FRAGMENT_PROGRAM  (1 << 23)
+#define R300_FALLBACK_RADEON_COMMON     (1 << 29)
 #define R300_FALLBACK_AOS_LIMIT         (1 << 30)
 #define R300_FALLBACK_INVALID_BUFFERS   (1 << 31)
 #define R300_RASTER_FALLBACK_MASK        0xffff0000

commit 6a5518861e541db76bae0fa69d1d025805d90f2c
Author: Maciej Cencora <m.cencora@gmail.com>
Date:   Fri Apr 9 21:14:15 2010 +0200

    r300: set proper vertex index limits also in non indexed mode
    
    Fixes #27521, broken menus in UT2004 and broken water refraction in Sauerbraten.

diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c
index 9596131..11eafd3 100644
--- a/src/mesa/drivers/dri/r300/r300_render.c
+++ b/src/mesa/drivers/dri/r300/r300_render.c
@@ -386,6 +386,14 @@ void r300RunRenderPrimitive(GLcontext * ctx, int start, int end, int prim)
 			WARN_ONCE("Fixme: can't handle spliting prim %d\n", prim);
 			return;
 		}
+
+		if (rmesa->radeon.radeonScreen->kernel_mm) {
+			BEGIN_BATCH_NO_AUTOSTATE(2);
+			OUT_BATCH_REGSEQ(R300_VAP_VF_MAX_VTX_INDX, 1);
+			OUT_BATCH(rmesa->radeon.tcl.aos[0].count);
+			END_BATCH();
+		}
+
 		r300_emit_scissor(rmesa->radeon.glCtx);
 		while (num_verts > 0) {
 			int nr;

commit edff2e058571cfd8e1cb94e668c35f3d3cac4d80
Author: Alex Deucher <alexdeucher@gmail.com>
Date:   Fri Apr 9 20:20:42 2010 -0400

    r600: add new r7xx pci ids

diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h
index f17a305..98732c8 100644
--- a/src/mesa/drivers/dri/radeon/radeon_chipset.h
+++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h
@@ -357,6 +357,7 @@
 #define PCI_CHIP_RV770_9456             0x9456
 #define PCI_CHIP_RV770_945A             0x945A
 #define PCI_CHIP_RV770_945B             0x945B
+#define PCI_CHIP_RV770_945E             0x945E
 #define PCI_CHIP_RV790_9460             0x9460
 #define PCI_CHIP_RV790_9462             0x9462
 #define PCI_CHIP_RV770_946A             0x946A
@@ -368,6 +369,7 @@
 #define PCI_CHIP_RV730_9487             0x9487
 #define PCI_CHIP_RV730_9488             0x9488
 #define PCI_CHIP_RV730_9489             0x9489
+#define PCI_CHIP_RV730_948A             0x948A
 #define PCI_CHIP_RV730_948F             0x948F
 #define PCI_CHIP_RV730_9490             0x9490
 #define PCI_CHIP_RV730_9491             0x9491
@@ -386,6 +388,7 @@
 #define PCI_CHIP_RV710_9553             0x9553
 #define PCI_CHIP_RV710_9555             0x9555
 #define PCI_CHIP_RV710_9557             0x9557
+#define PCI_CHIP_RV710_955F             0x955F
 
 #define PCI_CHIP_RV740_94A0             0x94A0
 #define PCI_CHIP_RV740_94A1             0x94A1
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 6415ec1..4d7255f 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -846,6 +846,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
    case PCI_CHIP_RV770_9456:
    case PCI_CHIP_RV770_945A:
    case PCI_CHIP_RV770_945B:
+   case PCI_CHIP_RV770_945E:
    case PCI_CHIP_RV790_9460:
    case PCI_CHIP_RV790_9462:
    case PCI_CHIP_RV770_946A:
@@ -860,6 +861,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
    case PCI_CHIP_RV730_9487:
    case PCI_CHIP_RV730_9488:
    case PCI_CHIP_RV730_9489:
+   case PCI_CHIP_RV730_948A:
    case PCI_CHIP_RV730_948F:
    case PCI_CHIP_RV730_9490:
    case PCI_CHIP_RV730_9491:
@@ -881,6 +883,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
    case PCI_CHIP_RV710_9553:
    case PCI_CHIP_RV710_9555:
    case PCI_CHIP_RV710_9557:
+   case PCI_CHIP_RV710_955F:
       screen->chip_family = CHIP_FAMILY_RV710;
       screen->chip_flags = RADEON_CHIPSET_TCL;
       break;

commit 394c25133e756e9d9580b65e0f1af7d67155e0f7
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Thu Apr 8 22:09:11 2010 -0400

    glx: Fix config chooser logic for 'mask' matching
    
    When matching attributes using the 'mask' matching criteria, the spec
    says that
    
      "Only GLXFBConfigs for which the set bits of attribute include all
       the bits that are set in the requested value are
       considered. (Additional bits might be set in the attribute)."
    
    The current test returns true if the two bit masks have bits in
    common, specifically it matches even if the requested value has bits
    set that are not set in the fbconfig attribute.  For example, an
    application asking for
    
      GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT | GLX_PBUFFER_BIT,
    
    as glxpbdemo does, will match fbconfigs that don't support pbuffer
    rendering, as long as they support pixmap rendering.
    
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>

diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 51a75e3..e2c4781 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -1110,6 +1110,13 @@ init_fbconfig_for_chooser(__GLcontextModes * config,
     }                                           \
   } while ( 0 )
 
+/* Test that all bits from a are contained in b */
+#define MATCH_MASK(param)			\
+  do {						\
+    if ((a->param & ~b->param) != 0)		\
+      return False;				\
+  } while (0);
+
 /**
  * Determine if two GLXFBConfigs are compatible.
  *
@@ -1148,11 +1155,8 @@ fbconfigs_compatible(const __GLcontextModes * const a,
    MATCH_DONT_CARE(stereoMode);
    MATCH_EXACT(level);
 
-   if (((a->drawableType & b->drawableType) == 0)
-       || ((a->renderType & b->renderType) == 0)) {
-      return False;
-   }
-
+   MATCH_MASK(drawableType);
+   MATCH_MASK(renderType);
 
    /* There is a bug in a few of the XFree86 DDX drivers.  They contain
     * visuals with a "transparent type" of 0 when they really mean GLX_NONE.

commit b22a00bff4aadd390dd8af6b5b05bd2833ec7f85
Author: Brian Paul <brianp@vmware.com>
Date:   Fri Apr 9 10:03:31 2010 -0600

    mesa: fix instruction indexing bugs
    
    We were looping over instructions but only looking at the 0th instruction's
    opcode.
    
    Fixes fd.o bug 27566.

diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
index f4f701b..f77a773 100644
--- a/src/mesa/shader/program.c
+++ b/src/mesa/shader/program.c
@@ -625,7 +625,7 @@ replace_registers(struct prog_instruction *inst, GLuint numInst,
    GLuint i, j;
    for (i = 0; i < numInst; i++) {
       /* src regs */
-      for (j = 0; j < _mesa_num_inst_src_regs(inst->Opcode); j++) {
+      for (j = 0; j < _mesa_num_inst_src_regs(inst[i].Opcode); j++) {
          if (inst[i].SrcReg[j].File == oldFile &&
              inst[i].SrcReg[j].Index == oldIndex) {
             inst[i].SrcReg[j].File = newFile;
@@ -652,7 +652,7 @@ adjust_param_indexes(struct prog_instruction *inst, GLuint numInst,
 {
    GLuint i, j;
    for (i = 0; i < numInst; i++) {
-      for (j = 0; j < _mesa_num_inst_src_regs(inst->Opcode); j++) {
+      for (j = 0; j < _mesa_num_inst_src_regs(inst[i].Opcode); j++) {
          GLuint f = inst[i].SrcReg[j].File;
          if (f == PROGRAM_CONSTANT ||
              f == PROGRAM_UNIFORM ||

commit 21cf976ad970bb407b53a863a30efbcd1c8bbf7c
Author: Brian Paul <brianp@vmware.com>
Date:   Thu Apr 8 13:11:05 2010 -0600

    docs: link to 7.8.2 release notes

diff --git a/docs/relnotes.html b/docs/relnotes.html
index f7e2c69..39b02b8 100644
--- a/docs/relnotes.html
+++ b/docs/relnotes.html
@@ -13,6 +13,7 @@ The release notes summarize what's new or changed in each Mesa release.
 </p>
 
 <UL>
+<LI><A HREF="relnotes-7.8.2.html">7.8.2 release notes</A>
 <LI><A HREF="relnotes-7.8.1.html">7.8.1 release notes</A>
 <LI><A HREF="relnotes-7.8.html">7.8 release notes</A>
 <LI><A HREF="relnotes-7.7.1.html">7.7.1 release notes</A>

commit 3ad9a98ec2646caa283b6634fda38c482de33bab
Author: Brian Paul <brianp@vmware.com>
Date:   Thu Apr 8 13:10:51 2010 -0600

    docs: initial 7.8.2 release notes

diff --git a/docs/relnotes-7.8.2.html b/docs/relnotes-7.8.2.html
new file mode 100644
index 0000000..85c132a
--- /dev/null
+++ b/docs/relnotes-7.8.2.html
@@ -0,0 +1,46 @@
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.8.2 Release Notes / April, 5, 2010</H1>
+
+<p>
+Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release.
+</p>
+<p>
+Mesa 7.8.2 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>
+tbd
+</pre>
+
+
+<h2>New features</h2>
+<p>None.</p>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
+</ul>
+
+
+<h2>Changes</h2>
+<p>None.</p>
+</body>
+</html>

commit ffedd28c9c9f218efb989deb38451c3bfc0b1e0f
Author: Brian Paul <brianp@vmware.com>
Date:   Thu Apr 8 13:09:01 2010 -0600

    progs/tests: added some debug code (disabled)

diff --git a/progs/tests/zreaddraw.c b/progs/tests/zreaddraw.c
index 7740695..4d27b3a 100644
--- a/progs/tests/zreaddraw.c
+++ b/progs/tests/zreaddraw.c
@@ -102,6 +102,19 @@ static void Display(void)
 
    /* read back scaled depth image */
    glReadPixels(100, 0, 400, 400, GL_DEPTH_COMPONENT, GL_FLOAT, depth2);
+
+   /* debug */
+   if (0) {
+      int i;
+      float *z = depth2 + 400 * 200;
+      printf("z at y=200:\n");
+      for (i = 0; i < 400; i++) {
+         printf("%5.3f ", z[i]);
+         if ((i + 1) % 12 == 0)
+            printf("\n");
+      }
+   }
+
    /* draw as luminance */
    glPixelZoom(1.0, 1.0);
    glWindowPos2i(100, 0);

commit bab6c0a03527f3d3b5124c6540cc167e3989c068
Author: Brian Paul <brianp@vmware.com>
Date:   Thu Apr 8 13:05:35 2010 -0600

    st/mesa: fix glDrawPixels(GL_DEPTH_COMPONENT) regression
    
    Commit 1454f20a991ddda35f1a2ffda953012078b407ba caused the regression.
    When the vertex shader emitted both a texcoord and color we were grabbing
    the wrong vertex attributes.  Fix the draw_quad() code to put texcoords
    in slot[1] and color in slot[2].  That's a bit cleaner than changing
    the vertex shader code.
    
    Tested with progs/tests/zreaddraw.c

diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index b937288..5fcfa86 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -250,13 +250,13 @@ make_passthrough_vertex_shader(struct st_context *st,
                ureg_DECL_output( ureg, TGSI_SEMANTIC_POSITION, 0 ),
                ureg_DECL_vs_input( ureg, 0 ));
       
-      /* MOV result.texcoord0, vertex.texcoord0; */
+      /* MOV result.texcoord0, vertex.attr[1]; */
       ureg_MOV(ureg, 
                ureg_DECL_output( ureg, TGSI_SEMANTIC_GENERIC, 0 ),
                ureg_DECL_vs_input( ureg, 1 ));
       
       if (passColor) {
-         /* MOV result.color0, vertex.color0; */
+         /* MOV result.color0, vertex.attr[2]; */
          ureg_MOV(ureg, 
                   ureg_DECL_output( ureg, TGSI_SEMANTIC_COLOR, 0 ),
                   ureg_DECL_vs_input( ureg, 2 ));
@@ -430,7 +430,7 @@ draw_quad(GLcontext *ctx, GLfloat x0, GLfloat y0, GLfloat z,
       const GLfloat sLeft = 0.0f, sRight = maxXcoord;
       const GLfloat tTop = invertTex ? maxYcoord : 0.0f;
       const GLfloat tBot = invertTex ? 0.0f : maxYcoord;
-      GLuint tex, i;
+      GLuint i;
 
       /* upper-left */
       verts[0][0][0] = clip_x0;    /* v[0].attr[0].x */
@@ -448,32 +448,31 @@ draw_quad(GLcontext *ctx, GLfloat x0, GLfloat y0, GLfloat z,
       verts[3][0][0] = clip_x0;
       verts[3][0][1] = clip_y1;
 
-      tex = color ? 2 : 1;
-      verts[0][tex][0] = sLeft; /* v[0].attr[tex].s */
-      verts[0][tex][1] = tTop;  /* v[0].attr[tex].t */
-      verts[1][tex][0] = sRight;
-      verts[1][tex][1] = tTop;
-      verts[2][tex][0] = sRight;
-      verts[2][tex][1] = tBot;
-      verts[3][tex][0] = sLeft;
-      verts[3][tex][1] = tBot;
+      verts[0][1][0] = sLeft; /* v[0].attr[1].S */
+      verts[0][1][1] = tTop;  /* v[0].attr[1].T */
+      verts[1][1][0] = sRight;
+      verts[1][1][1] = tTop;
+      verts[2][1][0] = sRight;
+      verts[2][1][1] = tBot;
+      verts[3][1][0] = sLeft;
+      verts[3][1][1] = tBot;
 
       /* same for all verts: */
       if (color) {
          for (i = 0; i < 4; i++) {
-            verts[i][0][2] = z;   /*Z*/
-            verts[i][0][3] = 1.0f; /*W*/
-            verts[i][1][0] = color[0];
-            verts[i][1][1] = color[1];
-            verts[i][1][2] = color[2];
-            verts[i][1][3] = color[3];
-            verts[i][2][2] = 0.0f; /*R*/
-            verts[i][2][3] = 1.0f; /*Q*/
+            verts[i][0][2] = z;         /* v[i].attr[0].z */
+            verts[i][0][3] = 1.0f;      /* v[i].attr[0].w */
+            verts[i][2][0] = color[0];  /* v[i].attr[2].r */
+            verts[i][2][1] = color[1];  /* v[i].attr[2].g */
+            verts[i][2][2] = color[2];  /* v[i].attr[2].b */
+            verts[i][2][3] = color[3];  /* v[i].attr[2].a */
+            verts[i][1][2] = 0.0f;      /* v[i].attr[1].R */
+            verts[i][1][3] = 1.0f;      /* v[i].attr[1].Q */
          }
       }
       else {
          for (i = 0; i < 4; i++) {
-            verts[i][0][2] = z;   /*Z*/
+            verts[i][0][2] = z;    /*Z*/
             verts[i][0][3] = 1.0f; /*W*/
             verts[i][1][2] = 0.0f; /*R*/
             verts[i][1][3] = 1.0f; /*Q*/

commit 8ac7d7fa05f34dcded533ba17ed3cec1f69e8906
Author: Li Peng <peng.li@intel.com>
Date:   Thu Apr 8 13:52:55 2010 -0400

    intel: Call intel_prepare_render() in intelClear()
    
    Make sure we have up to date buffers before we start looking at
    the tiling bits to determine how to clear.

diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c
index 4ad42a7..2d676f6 100644
--- a/src/mesa/drivers/dri/intel/intel_blit.c
+++ b/src/mesa/drivers/dri/intel/intel_blit.c
@@ -247,8 +247,6 @@ intelClearWithBlit(GLcontext *ctx, GLbitfield mask)
    GLuint buf;
    all = (cw == fb->Width && ch == fb->Height);
 
-   intel_prepare_render(intel);
-
    /* Loop over all renderbuffers */
    for (buf = 0; buf < BUFFER_COUNT && mask; buf++) {
       const GLbitfield bufBit = 1 << buf;
diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c
index 03b24e2..3c22118 100644
--- a/src/mesa/drivers/dri/intel/intel_clear.c
+++ b/src/mesa/drivers/dri/intel/intel_clear.c
@@ -90,6 +90,10 @@ intelClear(GLcontext *ctx, GLbitfield mask)
       tri_mask |= (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT));
    }
 
+   /* Make sure we have up to date buffers before we start looking at
+    * the tiling bits to determine how to clear. */
+   intel_prepare_render(intel);
+
    /* HW stencil */
    if (mask & BUFFER_BIT_STENCIL) {
       const struct intel_region *stencilRegion

commit 4b39a0da89f5b07d4a24bc9ce52693e6c2acfe99
Author: Dave Airlie <airlied@redhat.com>
Date:   Sat Apr 3 13:34:29 2010 +1000

    texenvprogram: fix for ARB_draw_buffers.
    
    piglit has a test called fbo-drawbuffers, this fails for me on r300g,
    and fixing the texenv program to use the DATA outputs fixes it.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
index 7b8a8b8..964ba13 100644
--- a/src/mesa/main/texenvprogram.c
+++ b/src/mesa/main/texenvprogram.c
@@ -1415,6 +1415,7 @@ create_new_program(GLcontext *ctx, struct state_key *key,
    struct texenv_fragment_program p;
    GLuint unit;
    struct ureg cf, out;
+   int i;
 
    memset(&p, 0, sizeof(p));
    p.state = key;
@@ -1436,7 +1437,13 @@ create_new_program(GLcontext *ctx, struct state_key *key,
    p.program->Base.NumAddressRegs = 0;
    p.program->Base.Parameters = _mesa_new_parameter_list();
    p.program->Base.InputsRead = 0x0;
-   p.program->Base.OutputsWritten = 1 << FRAG_RESULT_COLOR;
+
+   if (ctx->DrawBuffer->_NumColorDrawBuffers == 1)
+      p.program->Base.OutputsWritten = 1 << FRAG_RESULT_COLOR;
+   else {
+      for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++)
+	 p.program->Base.OutputsWritten |= (1 << (FRAG_RESULT_DATA0 + i));
+   }
 
    for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
       p.src_texture[unit] = undef;
@@ -1485,22 +1492,28 @@ create_new_program(GLcontext *ctx, struct state_key *key,
    }
 
    cf = get_source( &p, SRC_PREVIOUS, 0 );
-   out = make_ureg( PROGRAM_OUTPUT, FRAG_RESULT_COLOR );
 
-   if (key->separate_specular) {
-      /* Emit specular add.
-       */
-      struct ureg s = register_input(&p, FRAG_ATTRIB_COL1);
-      emit_arith( &p, OPCODE_ADD, out, WRITEMASK_XYZ, 0, cf, s, undef );
-      emit_arith( &p, OPCODE_MOV, out, WRITEMASK_W, 0, cf, undef, undef );
-   }
-   else if (memcmp(&cf, &out, sizeof(cf)) != 0) {
-      /* Will wind up in here if no texture enabled or a couple of
-       * other scenarios (GL_REPLACE for instance).
-       */
-      emit_arith( &p, OPCODE_MOV, out, WRITEMASK_XYZW, 0, cf, undef, undef );
-   }
+   for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
+      if (ctx->DrawBuffer->_NumColorDrawBuffers == 1)
+	 out = make_ureg( PROGRAM_OUTPUT, FRAG_RESULT_COLOR );
+      else {
+	 out = make_ureg( PROGRAM_OUTPUT, FRAG_RESULT_DATA0 + i );
+      }
 
+      if (key->separate_specular) {
+	 /* Emit specular add.
+	  */
+	 struct ureg s = register_input(&p, FRAG_ATTRIB_COL1);
+	 emit_arith( &p, OPCODE_ADD, out, WRITEMASK_XYZ, 0, cf, s, undef );
+	 emit_arith( &p, OPCODE_MOV, out, WRITEMASK_W, 0, cf, undef, undef );
+      }
+      else if (memcmp(&cf, &out, sizeof(cf)) != 0) {
+	 /* Will wind up in here if no texture enabled or a couple of
+	  * other scenarios (GL_REPLACE for instance).
+	  */
+	 emit_arith( &p, OPCODE_MOV, out, WRITEMASK_XYZW, 0, cf, undef, undef );
+      }
+   }
    /* Finish up:
     */
    emit_arith( &p, OPCODE_END, undef, WRITEMASK_XYZW, 0, undef, undef, undef);

commit 582e292a88ccb19bbaed8c4f313512a416b2076b
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Apr 5 12:45:20 2010 -0700

    docs: Update 7.8.1 release MD5 sums

diff --git a/docs/relnotes-7.8.1.html b/docs/relnotes-7.8.1.html
index 8ec34a3..1ba68fd 100644
--- a/docs/relnotes-7.8.1.html
+++ b/docs/relnotes-7.8.1.html
@@ -30,15 +30,15 @@ for DRI hardware acceleration.
 
 <h2>MD5 checksums</h2>
 <pre>
-b6db4bf400706ad5cbbae3b4286f5a44  MesaLib-7.8.1.tar.gz
-bb0acf866166093991bf18f7bff5063a  MesaLib-7.8.1.tar.bz2
-b54f18f807e0804983e39e0fbad07135  MesaLib-7.8.1.zip
-5c43de94ac20099d8b973ca59ea71a8e  MesaDemos-7.8.1.tar.gz
+62e8e47cbd63741b4bbe634dcdc8a56a  MesaLib-7.8.1.tar.gz
+25ec15f8e41fde6d206118cc786dbac4  MesaLib-7.8.1.tar.bz2
+22b1153010ffdf513836ea9931159e80  MesaLib-7.8.1.zip
+c9c0a830923d3820807a08c09d521b3e  MesaDemos-7.8.1.tar.gz
 9ef47f911869657c6bf2f43ebce86b61  MesaDemos-7.8.1.tar.bz2
 93720605eb3f784f9bcc289a4dd2ff52  MesaDemos-7.8.1.zip
-f26ea88429abf29e701ff4e517f17677  MesaGLUT-7.8.1.tar.gz
-7fbc77f2b56d4428f4da37640a00027a  MesaGLUT-7.8.1.tar.bz2
-4066ebfc962a3befadd631910356c64a  MesaGLUT-7.8.1.zip
+ed1d0b1e960afe6a3768eab747cbdbd3  MesaGLUT-7.8.1.tar.gz
+6bae516a44c6d26ff3152c960ab648e7  MesaGLUT-7.8.1.tar.bz2
+ba306f603ea73c30ee0e7efa14dc5581  MesaGLUT-7.8.1.zip
 </pre>
 
 

commit 5683d77b22b12129c4d715860671d331c760e362
Author: Brian Paul <brianp@vmware.com>
Date:   Mon Apr 5 11:22:32 2010 -0600

    mesa: bump MESA_TINY version

diff --git a/configs/default b/configs/default
index ad6d93c..47d6923 100644
--- a/configs/default
+++ b/configs/default
@@ -10,7 +10,7 @@ CONFIG_NAME = default
 # Version info
 MESA_MAJOR=7
 MESA_MINOR=8
-MESA_TINY=0
+MESA_TINY=1
 MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
 
 # external projects.  This should be useless now that we use libdrm.

commit 0e0de77f0e2583365f2c41bddee21526758b1bff
Author: Brian Paul <brianp@vmware.com>
Date:   Mon Apr 5 11:12:59 2010 -0600

    docs: added news item for 7.8.1 release

diff --git a/docs/news.html b/docs/news.html
index 4e4b697..b7731cd 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -11,6 +11,14 @@
 <H1>News</H1>
 
 
+<h2>April 5, 2010</h2>
+
+<p>
+<a href="relnotes-7.8.1.html">Mesa 7.8.1</a> is released.  This is a bug-fix
+release for a few critical issues in the 7.8 release.
+</p>
+
+
 <h2>March 28, 2010</h2>
 <p>
 <a href="relnotes-7.7.1.html">Mesa 7.7.1</a> is released.  This is a bug-fix

commit 659669d74cdb2c37b5e7a74bb56e6ef326ff7d62
Author: Brian Paul <brianp@vmware.com>
Date:   Mon Apr 5 11:10:51 2010 -0600

    docs: add link to 7.8.1 release notes

diff --git a/docs/relnotes.html b/docs/relnotes.html
index 3e17a1e..f7e2c69 100644
--- a/docs/relnotes.html
+++ b/docs/relnotes.html
@@ -13,6 +13,7 @@ The release notes summarize what's new or changed in each Mesa release.
 </p>
 
 <UL>
+<LI><A HREF="relnotes-7.8.1.html">7.8.1 release notes</A>
 <LI><A HREF="relnotes-7.8.html">7.8 release notes</A>
 <LI><A HREF="relnotes-7.7.1.html">7.7.1 release notes</A>
 <LI><A HREF="relnotes-7.7.html">7.7 release notes</A>

commit 0eea33b0696cee2cdea1e63a1714cec267d9b990
Author: Brian Paul <brianp@vmware.com>
Date:   Mon Apr 5 11:00:52 2010 -0600

    softpipe: index the correct blend/mask state index
    
    Need to check pipe_blend_state::independent_blend_enable to determine
    which render target/index to use when checking blend enable and colormask
    state.
    
    This is part of the fix for piglit/fbo-drawbuffers

diff --git a/src/gallium/drivers/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c
index d65307b..ead4893 100644
--- a/src/gallium/drivers/softpipe/sp_quad_blend.c
+++ b/src/gallium/drivers/softpipe/sp_quad_blend.c
@@ -744,6 +744,8 @@ blend_fallback(struct quad_stage *qs,
 
    for (cbuf = 0; cbuf < softpipe->framebuffer.nr_cbufs; cbuf++) 
    {
+      /* which blend/mask state index to use: */
+      const uint blend_buf = blend->independent_blend_enable ? cbuf : 0;
       float dest[4][QUAD_SIZE];
       struct softpipe_cached_tile *tile
          = sp_get_cached_tile(softpipe->cbuf_cache[cbuf],
@@ -771,11 +773,11 @@ blend_fallback(struct quad_stage *qs,
          if (blend->logicop_enable) {
             logicop_quad( qs, quadColor, dest );
          }
-         else if (blend->rt[cbuf].blend_enable) {
+         else if (blend->rt[blend_buf].blend_enable) {
             blend_quad( qs, quadColor, dest, cbuf );
          }
 
-         if (blend->rt[cbuf].colormask != 0xf)
+         if (blend->rt[blend_buf].colormask != 0xf)
             colormask_quad( blend->rt[cbuf].colormask, quadColor, dest);
    
          /* Output color values

commit 1ad1a51f140fcf6eba5a976f01e74e33d2b661d4
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Apr 5 09:51:18 2010 -0700

    docs: Add 7.8.1 release MD5 sums

diff --git a/docs/relnotes-7.8.1.html b/docs/relnotes-7.8.1.html
index db65a0d..8ec34a3 100644
--- a/docs/relnotes-7.8.1.html
+++ b/docs/relnotes-7.8.1.html
@@ -30,7 +30,15 @@ for DRI hardware acceleration.
 
 <h2>MD5 checksums</h2>
 <pre>
-tbd
+b6db4bf400706ad5cbbae3b4286f5a44  MesaLib-7.8.1.tar.gz
+bb0acf866166093991bf18f7bff5063a  MesaLib-7.8.1.tar.bz2
+b54f18f807e0804983e39e0fbad07135  MesaLib-7.8.1.zip
+5c43de94ac20099d8b973ca59ea71a8e  MesaDemos-7.8.1.tar.gz
+9ef47f911869657c6bf2f43ebce86b61  MesaDemos-7.8.1.tar.bz2
+93720605eb3f784f9bcc289a4dd2ff52  MesaDemos-7.8.1.zip
+f26ea88429abf29e701ff4e517f17677  MesaGLUT-7.8.1.tar.gz
+7fbc77f2b56d4428f4da37640a00027a  MesaGLUT-7.8.1.tar.bz2
+4066ebfc962a3befadd631910356c64a  MesaGLUT-7.8.1.zip
 </pre>
 
 

commit 88b7329cdd8f3fc22f18a84175822f81930b4d50
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Apr 5 09:49:08 2010 -0700

    mesa: set version string to 7.8.1

diff --git a/Makefile b/Makefile
index 6e64134..c81a2ec 100644
--- a/Makefile
+++ b/Makefile
@@ -180,7 +180,7 @@ ultrix-gcc:
 
 # Rules for making release tarballs
 
-VERSION=7.8
+VERSION=7.8.1
 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 2e1d70c..cd760be 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -34,8 +34,8 @@
 /* Mesa version */
 #define MESA_MAJOR 7
 #define MESA_MINOR 8
-#define MESA_PATCH 0
-#define MESA_VERSION_STRING "7.8"
+#define MESA_PATCH 1
+#define MESA_VERSION_STRING "7.8.1"
 
 /* To make version comparison easy */
 #define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

commit dcaa2c6e761ef3f910c94c0e4e4980626ab8e11e
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Apr 5 09:12:33 2010 -0700

    Initial 7.8.1 release notes

diff --git a/docs/relnotes-7.8.1.html b/docs/relnotes-7.8.1.html
new file mode 100644
index 0000000..db65a0d
--- /dev/null
+++ b/docs/relnotes-7.8.1.html
@@ -0,0 +1,54 @@
+<HTML>


Reply to: