Merge remote branch 'origin/7.8'
authorDave Airlie <airlied@redhat.com>
Thu, 8 Apr 2010 06:48:41 +0000 (16:48 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 8 Apr 2010 06:48:41 +0000 (16:48 +1000)
Conflicts:
Makefile
configs/default
src/mesa/main/version.h

docs/news.html
docs/relnotes-7.8.1.html [new file with mode: 0644]
docs/relnotes.html
src/gallium/drivers/softpipe/sp_quad_blend.c
src/mesa/main/state.c
src/mesa/main/texenvprogram.c

index 4e4b6976a88c5d61849325420c90a74770f53998..b7731cdaf3fd3f541ba5991835f773a2a0cf01a3 100644 (file)
 <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 (file)
index 0000000..1ba68fd
--- /dev/null
@@ -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>
index 3e17a1e94eebd6493dff5428c1667fbb0f5004e2..f7e2c691f72b5ae584c3ce18e87bc13e50148b2b 100644 (file)
@@ -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>
index d65307b7f60498c0ddd844c958177968b35c83c8..ead489393ef9d80ae7c6806703d6ee0d59111eeb 100644 (file)
@@ -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
index 589029db58b594a836210dd9d8ef0314503dd675..b971cc976eed7116a8a17c71432e0c13dd35d982 100644 (file)
@@ -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);
index 7b8a8b85f2293ea5e9ca29285b23966911071c4d..964ba13c70068f95513c5c95fd1c1ee135cba7b0 100644 (file)
@@ -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);