]> git.pld-linux.org Git - packages/Mesa.git/commitdiff
- rel 2; updated from git auto/th/Mesa-8_0_2-2
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Sat, 28 Apr 2012 20:22:15 +0000 (20:22 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    Mesa-git.patch -> 1.21
    Mesa.spec -> 1.322

Mesa-git.patch
Mesa.spec

index 6b27c9f93c0084ab43e3a0828f95aeca128c164e..688591f63f1fc68b711ea05c760a5e317fceaedd 100644 (file)
@@ -1,3 +1,18 @@
+diff --git a/docs/relnotes-8.0.2.html b/docs/relnotes-8.0.2.html
+index ad1818c..d73ba9f 100644
+--- a/docs/relnotes-8.0.2.html
++++ b/docs/relnotes-8.0.2.html
+@@ -28,7 +28,9 @@ for DRI hardware acceleration.
+ <h2>MD5 checksums</h2>
+ <pre>
+-tdb
++70eb3dc74fbfcd72f6776268ee1db52e  MesaLib-8.0.2.tar.gz
++a368104e5700707048dc3e8691a9a7a1  MesaLib-8.0.2.tar.bz2
++d5e5cdb85d2afdbcd1c0623d3ed1c54d  MesaLib-8.0.2.zip
+ </pre>
+ <h2>New features</h2>
 diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c
 index d132638..920612b 100644
 --- a/src/gallium/drivers/r300/r300_blit.c
@@ -555,6 +570,214 @@ index d7d17dd..84a8655 100644
        $(MESA_TOP)/src/mapi \
        $(MESA_TOP)/src/mesa
  
+diff --git a/src/glx/apple/apple_glx_drawable.c b/src/glx/apple/apple_glx_drawable.c
+index 5530224..db28302 100644
+--- a/src/glx/apple/apple_glx_drawable.c
++++ b/src/glx/apple/apple_glx_drawable.c
+@@ -135,6 +135,7 @@ release_drawable(struct apple_glx_drawable *d)
+ static bool
+ destroy_drawable(struct apple_glx_drawable *d)
+ {
++   int err;
+    d->lock(d);
+@@ -172,6 +173,12 @@ destroy_drawable(struct apple_glx_drawable *d)
+    apple_glx_diagnostic("%s: freeing %p\n", __func__, (void *) d);
++   err = pthread_mutex_destroy(&d->mutex);
++   if (err) {
++      fprintf(stderr, "pthread_mutex_destroy error: %s\n", strerror(err));
++      abort();
++   }
++   
+    free(d);
+    /* So that the locks are balanced and the caller correctly unlocks. */
+diff --git a/src/glx/apple/apple_glx_surface.c b/src/glx/apple/apple_glx_surface.c
+index 39f5130..d42fa3b 100644
+--- a/src/glx/apple/apple_glx_surface.c
++++ b/src/glx/apple/apple_glx_surface.c
+@@ -206,6 +206,10 @@ apple_glx_surface_destroy(unsigned int uid)
+    if (d) {
+       d->types.surface.pending_destroy = true;
+       d->release(d);
++
++      /* apple_glx_drawable_find_by_uid returns a locked drawable */
++      d->unlock(d);
++
+       /* 
+        * We release 2 references to the surface.  One was acquired by
+        * the find, and the other was leftover from a context, or 
+@@ -217,7 +221,5 @@ apple_glx_surface_destroy(unsigned int uid)
+        * by a glViewport callback (see apple_glx_context_update()).
+        */
+       d->destroy(d);
+-
+-      d->unlock(d);
+    }
+ }
+diff --git a/src/mapi/glapi/glapi_gentable.c b/src/mapi/glapi/glapi_gentable.c
+index 5c04801..640c495 100644
+--- a/src/mapi/glapi/glapi_gentable.c
++++ b/src/mapi/glapi/glapi_gentable.c
+@@ -105,7 +105,7 @@ __glapi_gentable_set_remaining_noop(struct _glapi_table *disp) {
+ struct _glapi_table *
+ _glapi_create_table_from_handle(void *handle, const char *symbol_prefix) {
+-    struct _glapi_table *disp = calloc(1, sizeof(struct _glapi_table));
++    struct _glapi_table *disp = calloc(_glapi_get_dispatch_table_size(), sizeof(void *));
+     char symboln[512];
+     if(!disp)
+diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c
+index 36563ef..dc32292 100644
+--- a/src/mesa/drivers/dri/i915/i915_context.c
++++ b/src/mesa/drivers/dri/i915/i915_context.c
+@@ -76,6 +76,8 @@ i915InvalidateState(struct gl_context * ctx, GLuint new_state)
+        i915_update_provoking_vertex(ctx);
+    if (new_state & (_NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS))
+        i915_update_program(ctx);
++   if (new_state & (_NEW_PROGRAM | _NEW_POINT))
++       i915_update_sprite_point_enable(ctx);
+ }
+diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h
+index 8167137..7037465 100644
+--- a/src/mesa/drivers/dri/i915/i915_context.h
++++ b/src/mesa/drivers/dri/i915/i915_context.h
+@@ -40,6 +40,7 @@
+ #define I915_FALLBACK_POINT_SMOOTH     0x80000
+ #define I915_FALLBACK_POINT_SPRITE_COORD_ORIGIN        0x100000
+ #define I915_FALLBACK_DRAW_OFFSET      0x200000
++#define I915_FALLBACK_COORD_REPLACE    0x400000
+ #define I915_UPLOAD_CTX              0x1
+ #define I915_UPLOAD_BUFFERS          0x2
+@@ -338,6 +339,7 @@ extern void i915InitStateFunctions(struct dd_function_table *functions);
+ extern void i915InitState(struct i915_context *i915);
+ extern void i915_update_stencil(struct gl_context * ctx);
+ extern void i915_update_provoking_vertex(struct gl_context *ctx);
++extern void i915_update_sprite_point_enable(struct gl_context *ctx);
+ /*======================================================================
+diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c
+index 756001f..94c7327 100644
+--- a/src/mesa/drivers/dri/i915/i915_state.c
++++ b/src/mesa/drivers/dri/i915/i915_state.c
+@@ -652,6 +652,48 @@ i915PointParameterfv(struct gl_context * ctx, GLenum pname, const GLfloat *param
+    }
+ }
++void
++i915_update_sprite_point_enable(struct gl_context *ctx)
++{
++   struct intel_context *intel = intel_context(ctx);
++   /* _NEW_PROGRAM */
++   struct i915_fragment_program *p =
++      (struct i915_fragment_program *) ctx->FragmentProgram._Current;
++   const GLbitfield64 inputsRead = p->FragProg.Base.InputsRead;
++   struct i915_context *i915 = i915_context(ctx);
++   GLuint s4 = i915->state.Ctx[I915_CTXREG_LIS4] & ~S4_VFMT_MASK;
++   int i;
++   GLuint coord_replace_bits = 0x0;
++   GLuint tex_coord_unit_bits = 0x0;
++
++   for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
++      /* _NEW_POINT */
++      if (ctx->Point.CoordReplace[i] && ctx->Point.PointSprite)
++         coord_replace_bits |= (1 << i);
++      if (inputsRead & FRAG_BIT_TEX(i))
++         tex_coord_unit_bits |= (1 << i);
++   }
++
++   /*
++    * Here we can't enable the SPRITE_POINT_ENABLE bit when the mis-match
++    * of tex_coord_unit_bits and coord_replace_bits, or this will make all
++    * the other non-point-sprite coords(like varying inputs, as we now use
++    * tex coord to implement varying inputs) be replaced to value (0, 0)-(1, 1).
++    *
++    * Thus, do fallback when needed.
++    */
++   FALLBACK(intel, I915_FALLBACK_COORD_REPLACE,
++            coord_replace_bits && coord_replace_bits != tex_coord_unit_bits);
++
++   s4 &= ~S4_SPRITE_POINT_ENABLE;
++   s4 |= (coord_replace_bits && coord_replace_bits == tex_coord_unit_bits) ?
++         S4_SPRITE_POINT_ENABLE : 0;
++   if (s4 != i915->state.Ctx[I915_CTXREG_LIS4]) {
++      i915->state.Ctx[I915_CTXREG_LIS4] = s4;
++      I915_STATECHANGE(i915, I915_UPLOAD_CTX);
++   }
++}
++
+ /* =============================================================
+  * Color masks
+@@ -869,18 +911,7 @@ i915Enable(struct gl_context * ctx, GLenum cap, GLboolean state)
+       break;
+    case GL_POINT_SPRITE:
+-      /* This state change is handled in i915_reduced_primitive_state because
+-       * the hardware bit should only be set when rendering points.
+-       */
+-       dw = i915->state.Ctx[I915_CTXREG_LIS4];
+-      if (state)
+-       dw |= S4_SPRITE_POINT_ENABLE;
+-      else
+-       dw &= ~S4_SPRITE_POINT_ENABLE;
+-      if (dw != i915->state.Ctx[I915_CTXREG_LIS4]) {
+-       i915->state.Ctx[I915_CTXREG_LIS4] = dw;
+-       I915_STATECHANGE(i915, I915_UPLOAD_CTX);
+-      }
++      /* Handle it at i915_update_sprite_point_enable () */
+       break;
+    case GL_POINT_SMOOTH:
+diff --git a/src/mesa/drivers/dri/i915/intel_tris.c b/src/mesa/drivers/dri/i915/intel_tris.c
+index a36011a..68f0e05 100644
+--- a/src/mesa/drivers/dri/i915/intel_tris.c
++++ b/src/mesa/drivers/dri/i915/intel_tris.c
+@@ -1198,6 +1198,7 @@ static char *fallbackStrings[] = {
+    [19] = "Smooth point",
+    [20] = "point sprite coord origin",
+    [21] = "depth/color drawing offset",
++   [22] = "coord replace(SPRITE POINT ENABLE)",
+ };
+diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+index 0632052..cec1e95 100644
+--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
++++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+@@ -1921,7 +1921,10 @@ fs_visitor::emit_fb_writes()
+ {
+    this->current_annotation = "FB write header";
+    bool header_present = true;
+-   int base_mrf = 2;
++   /* We can potentially have a message length of up to 15, so we have to set
++    * base_mrf to either 0 or 1 in order to fit in m0..m15.
++    */
++   int base_mrf = 1;
+    int nr = base_mrf;
+    int reg_width = c->dispatch_width / 8;
+diff --git a/src/mesa/drivers/dri/i965/gen6_sampler_state.c b/src/mesa/drivers/dri/i965/gen6_sampler_state.c
+index 15cae0a..a9a9df5 100644
+--- a/src/mesa/drivers/dri/i965/gen6_sampler_state.c
++++ b/src/mesa/drivers/dri/i965/gen6_sampler_state.c
+@@ -41,7 +41,7 @@ upload_sampler_state_pointers(struct brw_context *brw)
+            GS_SAMPLER_STATE_CHANGE |
+            PS_SAMPLER_STATE_CHANGE |
+            (4 - 2));
+-   OUT_BATCH(0); /* VS */
++   OUT_BATCH(brw->sampler.offset); /* VS */
+    OUT_BATCH(0); /* GS */
+    OUT_BATCH(brw->sampler.offset);
+    ADVANCE_BATCH();
 diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
 index d3c0d70..9cdd804 100644
 --- a/src/mesa/drivers/dri/intel/intel_context.c
@@ -586,3 +809,85 @@ index d3c0d70..9cdd804 100644
        rb->mt->hiz_mt = mt;
     } else {
        rb->mt = mt;
+diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
+index 5b3c246..f3a0d10 100644
+--- a/src/mesa/main/readpix.c
++++ b/src/mesa/main/readpix.c
+@@ -196,6 +196,11 @@ read_stencil_pixels( struct gl_context *ctx,
+    ctx->Driver.UnmapRenderbuffer(ctx, rb);
+ }
++
++/**
++ * Try to do glReadPixels of RGBA data using a simple memcpy or swizzle.
++ * \return GL_TRUE if successful, GL_FALSE otherwise (use the slow path)
++ */
+ static GLboolean
+ fast_read_rgba_pixels_memcpy( struct gl_context *ctx,
+                             GLint x, GLint y,
+@@ -208,8 +213,20 @@ fast_read_rgba_pixels_memcpy( struct gl_context *ctx,
+    struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer;
+    GLubyte *dst, *map;
+    int dstStride, stride, j, texelBytes;
++   GLboolean swizzle_rb = GL_FALSE, copy_xrgb = GL_FALSE;
+-   if (!_mesa_format_matches_format_and_type(rb->Format, format, type))
++   /* XXX we could check for other swizzle/special cases here as needed */
++   if (rb->Format == MESA_FORMAT_RGBA8888_REV &&
++       format == GL_BGRA &&
++       type == GL_UNSIGNED_INT_8_8_8_8_REV) {
++      swizzle_rb = GL_TRUE;
++   }
++   else if (rb->Format == MESA_FORMAT_XRGB8888 &&
++            format == GL_BGRA &&
++            type == GL_UNSIGNED_INT_8_8_8_8_REV) {
++      copy_xrgb = GL_TRUE;
++   }
++   else if (!_mesa_format_matches_format_and_type(rb->Format, format, type))
+       return GL_FALSE;
+    /* check for things we can't handle here */
+@@ -240,10 +257,39 @@ fast_read_rgba_pixels_memcpy( struct gl_context *ctx,
+    }
+    texelBytes = _mesa_get_format_bytes(rb->Format);
+-   for (j = 0; j < height; j++) {
+-      memcpy(dst, map, width * texelBytes);
+-      dst += dstStride;
+-      map += stride;
++
++   if (swizzle_rb) {
++      /* swap R/B */
++      for (j = 0; j < height; j++) {
++         int i;
++         for (i = 0; i < width; i++) {
++            GLuint *dst4 = (GLuint *) dst, *map4 = (GLuint *) map;
++            GLuint pixel = map4[i];
++            dst4[i] = (pixel & 0xff00ff00)
++                   | ((pixel & 0x00ff0000) >> 16)
++                   | ((pixel & 0x000000ff) << 16);
++         }
++         dst += dstStride;
++         map += stride;
++      }
++   } else if (copy_xrgb) {
++      /* convert xrgb -> argb */
++      for (j = 0; j < height; j++) {
++         GLuint *dst4 = (GLuint *) dst, *map4 = (GLuint *) map;
++         int i;
++         for (i = 0; i < width; i++) {
++            dst4[i] = map4[i] | 0xff000000;  /* set A=0xff */
++         }
++         dst += dstStride;
++         map += stride;
++      }
++   } else {
++      /* just memcpy */
++      for (j = 0; j < height; j++) {
++         memcpy(dst, map, width * texelBytes);
++         dst += dstStride;
++         map += stride;
++      }
+    }
+    ctx->Driver.UnmapRenderbuffer(ctx, rb);
index 7d2be0c9bef94886256321f7d6084163c87ef47e..4e5a2028520acde2130dd3d1902d618f77b02e43 100644 (file)
--- a/Mesa.spec
+++ b/Mesa.spec
@@ -31,7 +31,7 @@ Summary:      Free OpenGL implementation
 Summary(pl.UTF-8):     Wolnodostępna implementacja standardu OpenGL
 Name:          Mesa
 Version:       8.0.2
-Release:       1
+Release:       2
 License:       MIT (core), SGI (GLU) and others - see license.html file
 Group:         X11/Libraries
 Source0:       ftp://ftp.freedesktop.org/pub/mesa/%{version}/%{name}Lib-%{version}.tar.bz2
This page took 0.25075 seconds and 4 git commands to generate.