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: