summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/news.html8
-rw-r--r--docs/relnotes-7.8.1.html62
-rw-r--r--docs/relnotes.html1
-rw-r--r--src/gallium/drivers/softpipe/sp_quad_blend.c6
-rw-r--r--src/mesa/main/state.c5
-rw-r--r--src/mesa/main/texenvprogram.c43
6 files changed, 105 insertions, 20 deletions
diff --git a/docs/news.html b/docs/news.html
index 4e4b6976a88..b7731cdaf3f 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
diff --git a/docs/relnotes-7.8.1.html b/docs/relnotes-7.8.1.html
new file mode 100644
index 00000000000..1ba68fd41ac
--- /dev/null
+++ b/docs/relnotes-7.8.1.html
@@ -0,0 +1,62 @@
+<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.1 Release Notes / April, 5, 2010</H1>
+
+<p>
+Mesa 7.8.1 fixes a couple critical bugs in the recent Mesa 7.8 release. Even
+though this is a bug fix release, given its proximity to the 7.8 release, a
+new development release, it should also be considered new development release.
+People who are concerned with stability and reliability should stick
+with a previous release, such as 7.7.1, or wait for Mesa 7.8.2.
+</p>
+<p>
+Mesa 7.8.1 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>
+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
+ed1d0b1e960afe6a3768eab747cbdbd3 MesaGLUT-7.8.1.tar.gz
+6bae516a44c6d26ff3152c960ab648e7 MesaGLUT-7.8.1.tar.bz2
+ba306f603ea73c30ee0e7efa14dc5581 MesaGLUT-7.8.1.zip
+</pre>
+
+
+<h2>New features</h2>
+<p>None.</p>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fix incorrect enums for GLX_INTEL_swap_event by updating glxext.h to
+ version 27 from OpenGL.org.</li>
+<li>Fix compilation errors on non-GLX_DIRECT_RENDERING builds.</li>
+<li>Various fixes for building Mesa on OS X.</li>
+<li>Pass GLX drawable ID to dri2InvalidateBuffers. Fixes bug #27190.</li>
+</ul>
+
+
+<h2>Changes</h2>
+<p>None.</p>
+</body>
+</html>
diff --git a/docs/relnotes.html b/docs/relnotes.html
index 3e17a1e94ee..f7e2c691f72 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>
diff --git a/src/gallium/drivers/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c
index d65307b7f60..ead489393ef 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
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
index 589029db58b..b971cc976ee 100644
--- a/src/mesa/main/state.c
+++ b/src/mesa/main/state.c
@@ -582,9 +582,6 @@ _mesa_update_state_locked( GLcontext *ctx )
if (new_state & _DD_NEW_SEPARATE_SPECULAR)
update_separate_specular( ctx );
- if (new_state & (_NEW_ARRAY | _NEW_PROGRAM | _NEW_BUFFER_OBJECT))
- update_arrays( ctx );
-
if (new_state & (_NEW_BUFFERS | _NEW_VIEWPORT))
update_viewport_matrix(ctx);
@@ -620,6 +617,8 @@ _mesa_update_state_locked( GLcontext *ctx )
new_prog_state |= update_program( ctx );
}
+ if (new_state & (_NEW_ARRAY | _NEW_PROGRAM | _NEW_BUFFER_OBJECT))
+ update_arrays( ctx );
out:
new_prog_state |= update_program_constants(ctx);
diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
index 7b8a8b85f22..964ba13c700 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);