Mesa (mesa_7_7_branch): r200: Add the polygon stipple state to the state list.

2010-02-04 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: c8ea0212fec0551d7101c92ae76809b29eb51e57
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c8ea0212fec0551d7101c92ae76809b29eb51e57

Author: Pauli Nieminen 
Date:   Thu Feb  4 23:53:22 2010 +0200

r200: Add the polygon stipple state to the state list.

This fixes glean paths test case.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 1d1bea6..d545363 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -92,6 +92,7 @@ void r200SetUpAtomList( r200ContextPtr rmesa )
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.pix[i] );
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.afs[0] );
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.afs[1] );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.stp );
for (i = 0; i < 8; ++i)
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.lit[i] );
for (i = 0; i < 3 + mtu; ++i)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Make debugging automaticaly increase logging verbosity for debug build.

2010-02-04 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 66229ea1845a6c19fd292c16e6dafeb9be94173d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=66229ea1845a6c19fd292c16e6dafeb9be94173d

Author: Pauli Nieminen 
Date:   Thu Feb  4 23:42:39 2010 +0200

radeon: Make debugging automaticaly increase logging verbosity for debug build.

DEBUG preprocessor macro is set by configure script when
--enable-debug is passed for configure. Radeon then just
increase debugging verbosity if DEBUG is set in compile
time.

---

 src/mesa/drivers/dri/radeon/radeon_debug.h |6 +-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index 26da31c..ef8b967 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -47,7 +47,11 @@ typedef enum radeon_debug_levels {
  * errors.
  */
 #ifndef RADEON_DEBUG_LEVEL
-#define RADEON_DEBUG_LEVEL RADEON_VERBOSE
+# ifdef DEBUG
+#  define RADEON_DEBUG_LEVEL RADEON_TRACE
+# else
+#  define RADEON_DEBUG_LEVEL RADEON_VERBOSE
+# endif
 #endif
 
 typedef enum radeon_debug_types {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Add the polygon stipple state to the state list.

2010-02-04 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 0f763c5b000ad87c43da12bec014d5e367ae64fe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f763c5b000ad87c43da12bec014d5e367ae64fe

Author: Pauli Nieminen 
Date:   Thu Feb  4 23:53:22 2010 +0200

r200: Add the polygon stipple state to the state list.

This fixes glean paths test case.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 3135d53..2f2b8d9 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -88,6 +88,7 @@ void r200SetUpAtomList( r200ContextPtr rmesa )
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.pix[i] );
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.afs[0] );
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.afs[1] );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.stp );
for (i = 0; i < 8; ++i)
insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.lit[i] );
for (i = 0; i < 3 + mtu; ++i)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Add logging for glPolygonStripple.

2010-02-04 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 77768cdd73acc512a6d3171731a9c1b20c996f3f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=77768cdd73acc512a6d3171731a9c1b20c996f3f

Author: Pauli Nieminen 
Date:   Thu Feb  4 23:47:55 2010 +0200

r200: Add logging for glPolygonStripple.

---

 src/mesa/drivers/dri/r200/r200_state.c |6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state.c 
b/src/mesa/drivers/dri/r200/r200_state.c
index d9bf31b..d696448 100644
--- a/src/mesa/drivers/dri/r200/r200_state.c
+++ b/src/mesa/drivers/dri/r200/r200_state.c
@@ -2464,6 +2464,12 @@ static void r200PolygonStipple( GLcontext *ctx, const 
GLubyte *mask )
 
radeon_firevertices(&r200->radeon);
 
+   radeon_print(RADEON_STATE, RADEON_TRACE,
+  "%s(%p) first 32 bits are %x.\n",
+  __func__,
+  ctx,
+  *(uint32_t*)mask);
+
R200_STATECHANGE(r200, stp);
 
/* Must flip pattern upside down.

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r100: Add the polygon stipple state to the state list.

2010-02-05 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 34b36277b70aaef733f59725b6784b129e180a2a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=34b36277b70aaef733f59725b6784b129e180a2a

Author: Pauli Nieminen 
Date:   Thu Feb  4 23:53:22 2010 +0200

r100: Add the polygon stipple state to the state list.

This fixes glean paths test case.

---

 src/mesa/drivers/dri/radeon/radeon_ioctl.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c 
b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
index a0106d0..274fef9 100644
--- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
@@ -107,6 +107,7 @@ void radeonSetUpAtomList( r100ContextPtr rmesa )
   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.lit[i]);
for (i = 0; i < 6; ++i)
   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.ucp[i]);
+   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.stp);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.eye);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.grd);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.fog);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r100: Add the polygon stipple state to the state list.

2010-02-05 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 69f20294cd8bed52e4a9b648158423c5f0754941
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=69f20294cd8bed52e4a9b648158423c5f0754941

Author: Pauli Nieminen 
Date:   Thu Feb  4 23:53:22 2010 +0200

r100: Add the polygon stipple state to the state list.

This fixes glean paths test case.

---

 src/mesa/drivers/dri/radeon/radeon_ioctl.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c 
b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
index 4fd60ac..db0e4f2 100644
--- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
@@ -92,6 +92,7 @@ void radeonSetUpAtomList( r100ContextPtr rmesa )
   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.lit[i]);
for (i = 0; i < 6; ++i)
   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.ucp[i]);
+   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.stp);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.eye);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.grd);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.fog);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Add trace logging to r200PointSize.

2010-02-05 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 05b04084892cc54e52010837de8fd85cd64d3b7a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=05b04084892cc54e52010837de8fd85cd64d3b7a

Author: Pauli Nieminen 
Date:   Fri Feb  5 15:19:29 2010 +0200

r200: Add trace logging to r200PointSize.

---

 src/mesa/drivers/dri/r200/r200_state.c |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state.c 
b/src/mesa/drivers/dri/r200/r200_state.c
index d696448..b9ec6f4 100644
--- a/src/mesa/drivers/dri/r200/r200_state.c
+++ b/src/mesa/drivers/dri/r200/r200_state.c
@@ -595,6 +595,13 @@ static void r200PointSize( GLcontext *ctx, GLfloat size )
r200ContextPtr rmesa = R200_CONTEXT(ctx);
GLfloat *fcmd = (GLfloat *)rmesa->hw.ptp.cmd;
 
+   radeon_print(RADEON_STATE, RADEON_TRACE,
+   "%s(%p) size: %f, fixed point result: %d.%d (%d/16)\n",
+   __func__, ctx, size,
+   ((GLuint)(ctx->Point.Size * 16.0))/16,
+   (((GLuint)(ctx->Point.Size * 16.0))&15)*100/16,
+   ((GLuint)(ctx->Point.Size * 16.0))&15);
+
R200_STATECHANGE( rmesa, cst );
R200_STATECHANGE( rmesa, ptp );
rmesa->hw.cst.cmd[CST_RE_POINTSIZE] &= ~0x;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Optimize polygon stipple emit.

2010-02-05 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 6785a8aaf4bff5f607731fdc6f19189c1088112f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6785a8aaf4bff5f607731fdc6f19189c1088112f

Author: Pauli Nieminen 
Date:   Fri Feb  5 15:21:55 2010 +0200

r200: Optimize polygon stipple emit.

Only emit polygon stipple when the state is enabled.

---

 src/mesa/drivers/dri/r200/r200_state_init.c |   11 ++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c 
b/src/mesa/drivers/dri/r200/r200_state_init.c
index 4e8075e..51e8ac5 100644
--- a/src/mesa/drivers/dri/r200/r200_state_init.c
+++ b/src/mesa/drivers/dri/r200/r200_state_init.c
@@ -347,6 +347,15 @@ static int check_rrb(GLcontext *ctx, struct 
radeon_state_atom *atom)
return atom->cmd_size;
 }
 
+static int check_polygon_stipple(GLcontext *ctx,
+   struct radeon_state_atom *atom)
+{
+   r200ContextPtr r200 = R200_CONTEXT(ctx);
+   if (r200->hw.set.cmd[SET_RE_CNTL] & R200_STIPPLE_ENABLE)
+  return atom->cmd_size;
+   return 0;
+}
+
 static void mtl_emit(GLcontext *ctx, struct radeon_state_atom *atom)
 {
r200ContextPtr r200 = R200_CONTEXT(ctx);
@@ -885,7 +894,7 @@ void r200InitState( r200ContextPtr rmesa )
   }
}
 
-   ALLOC_STATE( stp, always, STP_STATE_SIZE, "STP/stp", 0 );
+   ALLOC_STATE( stp, polygon_stipple, STP_STATE_SIZE, "STP/stp", 0 );
 
for (i = 0; i < 6; i++)
   if (rmesa->radeon.radeonScreen->kernel_mm)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Remove the loop from stride size calculation.

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 9d5f88250379666961f92a7e20cf0d48907c38e2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d5f88250379666961f92a7e20cf0d48907c38e2

Author: Pauli Nieminen 
Date:   Sat Feb  6 03:01:57 2010 +0200

radeon: Remove the loop from stride size calculation.

Changed stride size calculation to do the math by rounding
the value instead of loop. r600 minimum stride is 256 which
might might cause up to about 60 rounds of the loop.

---

 src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c |   22 ++
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c 
b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
index 90a4e4f..836b042 100644
--- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
+++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
@@ -41,18 +41,24 @@ static unsigned get_aligned_compressed_row_stride(
unsigned width,
unsigned minStride)
 {
-   const unsigned blockSize = _mesa_get_format_bytes(format);
-   unsigned blockWidth, blockHeight, numXBlocks;
+   const unsigned blockBytes = _mesa_get_format_bytes(format);
+   unsigned blockWidth, blockHeight;
+   unsigned stride;
 
_mesa_get_format_block_size(format, &blockWidth, &blockHeight);
-   numXBlocks = (width + blockWidth - 1) / blockWidth;
 
-   while (numXBlocks * blockSize < minStride)
-   {
-   ++numXBlocks;
-   }
+   /* Count number of blocks required to store the given width.
+* And then multiple it with bytes required to store a block.
+*/
+   stride = (width + blockWidth - 1) / blockWidth * blockBytes;
+
+   /* Round the given minimum stride to the next full blocksize.
+* (minStride + blockBytes - 1) / blockBytes * blockBytes
+*/
+   if ( stride < minStride )
+   stride = (minStride + blockBytes - 1) / blockBytes * blockBytes;
 
-   return numXBlocks * blockSize;
+   return stride;
 }
 
 static unsigned get_compressed_image_size(

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add some debug output to miptree code.

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: f8969dd24ff4264c0c11ea5266093b6ce2ef221a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f8969dd24ff4264c0c11ea5266093b6ce2ef221a

Author: Pauli Nieminen 
Date:   Sat Feb  6 05:12:44 2010 +0200

radeon: Add some debug output to miptree code.

---

 src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c |   85 --
 1 files changed, 62 insertions(+), 23 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c 
b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
index 836b042..9ef3a84 100644
--- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
+++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
@@ -34,6 +34,7 @@
 #include "main/simple_list.h"
 #include "main/teximage.h"
 #include "main/texobj.h"
+#include "main/enums.h"
 #include "radeon_texture.h"
 
 static unsigned get_aligned_compressed_row_stride(
@@ -58,6 +59,13 @@ static unsigned get_aligned_compressed_row_stride(
if ( stride < minStride )
stride = (minStride + blockBytes - 1) / blockBytes * blockBytes;
 
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s width %u, minStride %u, block(bytes %u, width %u):"
+   "stride %u\n",
+   __func__, width, minStride,
+   blockBytes, blockWidth,
+   stride);
+
return stride;
 }
 
@@ -128,10 +136,11 @@ static void compute_tex_image_offset(radeonContextPtr 
rmesa, radeon_mipmap_tree
lvl->faces[face].offset = *curOffset;
*curOffset += lvl->size;
 
-   if (RADEON_DEBUG & RADEON_TEXTURE)
- fprintf(stderr,
- "level %d, face %d: rs:%d %dx%d at %d\n",
- level, face, lvl->rowstride, lvl->width, height, 
lvl->faces[face].offset);
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p) level %d, face %d: rs:%d %dx%d at %d\n",
+   __func__, rmesa,
+   level, face,
+   lvl->rowstride, lvl->width, height, 
lvl->faces[face].offset);
 }
 
 static GLuint minify(GLuint size, GLuint levels)
@@ -163,6 +172,10 @@ static void calculate_miptree_layout_r100(radeonContextPtr 
rmesa, radeon_mipmap_
 
/* Note the required size in memory */
mt->totalsize = (curOffset + RADEON_OFFSET_MASK) & ~RADEON_OFFSET_MASK;
+
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, %p) total size %d\n",
+   __func__, rmesa, mt, mt->totalsize);
 }
 
 static void calculate_miptree_layout_r300(radeonContextPtr rmesa, 
radeon_mipmap_tree *mt)
@@ -192,6 +205,10 @@ static void calculate_miptree_layout_r300(radeonContextPtr 
rmesa, radeon_mipmap_
 
/* Note the required size in memory */
mt->totalsize = (curOffset + RADEON_OFFSET_MASK) & ~RADEON_OFFSET_MASK;
+
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, %p) total size %d\n",
+   __func__, rmesa, mt, mt->totalsize);
 }
 
 /**
@@ -203,6 +220,10 @@ static radeon_mipmap_tree* 
radeon_miptree_create(radeonContextPtr rmesa,
 {
radeon_mipmap_tree *mt = CALLOC_STRUCT(_radeon_mipmap_tree);
 
+   radeon_print(RADEON_TEXTURE, RADEON_NORMAL,
+   "%s(%p) new tree is %p.\n",
+   __func__, rmesa, mt);
+
mt->mesaFormat = mesaFormat;
mt->refcount = 1;
mt->target = target;
@@ -293,6 +314,12 @@ static void calculate_min_max_lod(struct gl_texture_object 
*tObj,
return;
}
 
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p) target %s, min %d, max %d.\n",
+   __func__, tObj,
+   _mesa_lookup_enum_by_nr(tObj->Target),
+   minLod, maxLod);
+
/* save these values */
*pminLod = minLod;
*pmaxLod = maxLod;
@@ -339,7 +366,7 @@ static GLboolean 
radeon_miptree_matches_texture(radeon_mipmap_tree *mt, struct g
firstImage = texObj->Image[0][texObj->BaseLevel];
numLevels = MIN2(texObj->MaxLevel - texObj->BaseLevel + 1, 
firstImage->MaxLog2 + 1);
 
-   if (RADEON_DEBUG & RADEON_TEXTURE) {
+   if (radeon_is_debug_enabled(RADEON_TEXTURE,RADEON_TRACE)) {
fprintf(stderr, "Checking if miptree %p matches texObj %p\n", 
mt, texObj);
fprintf(stderr, "target %d vs %d\n", mt->target, 
texObj->Target);
fprintf(stderr, "format %d vs %d\n", mt->mesaFormat, 
firstImage->TexFormat);
@@ -380,8 +407,12 @@ void radeon_try_alloc_miptree(radeonContextPtr rmesa, 
radeonTexObj *t)
 
assert(!t->mt);
 
-   if (!texImg)
+   if (!texImg) 

Mesa (master): mesa/main: Add function to find next higher power of two.

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: d41740e969ce1ef084fa7a51208d43ac6883adf8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d41740e969ce1ef084fa7a51208d43ac6883adf8

Author: Pauli Nieminen 
Date:   Sat Feb  6 06:32:40 2010 +0200

mesa/main: Add function to find next higher power of two.

With gcc implementation uses __builtin_clr which counts number of
leading zeros.

Fallback implementation uses bit manipulation. First it duplicates
the highest bit to all lower bits and then adds one to get the power
of two number.

---

 src/mesa/main/imports.h |   46 ++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index b01fe5b..81cb396 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -405,6 +405,52 @@ _mesa_is_pow_two(int x)
return !(x & (x - 1));
 }
 
+/**
+ * Round given integer to next higer power of two
+ * If X is zero result is undefined.
+ *
+ * Source for the fallback implementation is
+ * Sean Eron Anderson's webpage "Bit Twiddling Hacks"
+ * http://graphics.stanford.edu/~seander/bithacks.html
+ */
+static INLINE int32_t
+_mesa_next_pow_two_32(uint32_t x)
+{
+#ifdef __GNUC__
+   return 1 << (__builtin_clz(x) ^ 31);
+#else
+   x--;
+   x |= x >> 1;
+   x |= x >> 2;
+   x |= x >> 4;
+   x |= x >> 8;
+   x |= x >> 16;
+   x++;
+   return x;
+#endif
+}
+
+static INLINE int64_t
+_mesa_next_pow_two_64(uint64_t x)
+{
+#ifdef __GNUC__
+   if (sizeof(x) == sizeof(long))
+   return 1 << (__builtin_clzl(x) ^ 63);
+   else
+   return 1 << (__builtin_clzll(x) ^ 63);
+#else
+   x--;
+   x |= x >> 1;
+   x |= x >> 2;
+   x |= x >> 4;
+   x |= x >> 8;
+   x |= x >> 16;
+   x |= x >> 32;
+   x++;
+   return x;
+#endif
+}
+
 
 /***
  *** UNCLAMPED_FLOAT_TO_UBYTE: clamp float to [0,1] and map to ubyte in [0,255]

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Use _mesa_next_pow_two_32 instead of own implementation.

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: e6f2819e7af8222ac443c76e91803f2c282fc1e7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e6f2819e7af8222ac443c76e91803f2c282fc1e7

Author: Pauli Nieminen 
Date:   Sat Feb  6 06:35:49 2010 +0200

radeon: Use _mesa_next_pow_two_32 instead of own implementation.

---

 src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c |   15 +--
 1 files changed, 1 insertions(+), 14 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c 
b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
index 9ef3a84..cd843d9 100644
--- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
+++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
@@ -81,19 +81,6 @@ static unsigned get_compressed_image_size(
return rowStride * ((height + blockHeight - 1) / blockHeight);
 }
 
-static int find_next_power_of_two(GLuint value)
-{
-   int i, tmp;
-
-   i = 0;
-   tmp = value - 1;
-   while (tmp) {
-   tmp >>= 1;
-   i++;
-   }
-   return (1 << i);
-}
-
 /**
  * Compute sizes and fill in offset and blit information for the given
  * image (determined by \p face and \p level).
@@ -108,7 +95,7 @@ static void compute_tex_image_offset(radeonContextPtr rmesa, 
radeon_mipmap_tree
uint32_t row_align;
GLuint height;
 
-   height = find_next_power_of_two(lvl->height);
+   height = _mesa_next_pow_two_32(lvl->height);
 
/* Find image size in bytes */
if (_mesa_is_format_compressed(mt->mesaFormat)) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r300: Fix emit size prediction to know about primitive splitting.

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: db3460e31cd4a2ccc9674715e8074f549f953676
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=db3460e31cd4a2ccc9674715e8074f549f953676

Author: Pauli Nieminen 
Date:   Sat Feb  6 14:47:27 2010 +0200

r300: Fix emit size prediction to know about primitive splitting.

Fixes ut2004 warnings about overflowing command buffer.

---

 src/mesa/drivers/dri/r300/r300_draw.c |   14 --
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_draw.c 
b/src/mesa/drivers/dri/r300/r300_draw.c
index 813495a..4ae0d6f 100644
--- a/src/mesa/drivers/dri/r300/r300_draw.c
+++ b/src/mesa/drivers/dri/r300/r300_draw.c
@@ -605,13 +605,23 @@ static void r300FreeData(GLcontext *ctx)
}
 }
 
-static GLuint r300PredictTryDrawPrimsSize(GLcontext *ctx, GLuint nr_prims)
+static GLuint r300PredictTryDrawPrimsSize(GLcontext *ctx,
+   GLuint nr_prims, const struct _mesa_prim *prim)
 {
struct r300_context *r300 = R300_CONTEXT(ctx);
struct r300_vertex_buffer *vbuf = &r300->vbuf;
GLboolean flushed;
GLuint dwords;
GLuint state_size;
+   int i;
+   GLuint extra_prims = 0;
+
+   /* Check for primitive splitting. */
+   for (i = 0; i < nr_prims; ++i) {
+   const GLuint num_verts =  r300NumVerts(r300, prim[i].count, 
prim[i].mode);
+   extra_prims += num_verts/(65535 - 32);
+   }
+   nr_prims += extra_prims;
 
dwords = 2*CACHE_FLUSH_BUFSZ;
dwords += PRE_EMIT_STATE_BUFSZ;
@@ -667,7 +677,7 @@ static GLboolean r300TryDrawPrims(GLcontext *ctx,
 
/* ensure we have the cmd buf space in advance to cover
 * the state + DMA AOS pointers */
-   GLuint emit_end = r300PredictTryDrawPrimsSize(ctx, nr_prims)
+   GLuint emit_end = r300PredictTryDrawPrimsSize(ctx, nr_prims, prim)
+ r300->radeon.cmdbuf.cs->cdw;
 
r300SetupIndexBuffer(ctx, ib);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add some debug output to texture function.\n

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: cdb0a51e8a8de605c4f2155396609fbb98ada65d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cdb0a51e8a8de605c4f2155396609fbb98ada65d

Author: Pauli Nieminen 
Date:   Sat Feb  6 13:13:18 2010 +0200

radeon: Add some debug output to texture function.\n

---

 src/mesa/drivers/dri/radeon/radeon_texture.c |  110 --
 1 files changed, 84 insertions(+), 26 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c 
b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 4538e74..86b213c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -33,6 +33,7 @@
 #include "main/imports.h"
 #include "main/context.h"
 #include "main/convolve.h"
+#include "main/enums.h"
 #include "main/mipmap.h"
 #include "main/texcompress.h"
 #include "main/texstore.h"
@@ -53,6 +54,13 @@ void copy_rows(void* dst, GLuint dststride, const void* src, 
GLuint srcstride,
assert(rowsize <= dststride);
assert(rowsize <= srcstride);
 
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s dst %p, stride %u, src %p, stride %u, "
+   "numrows %u, rowsize %u.\n",
+   __func__, dst, dststride,
+   src, srcstride,
+   numrows, rowsize);
+
if (rowsize == srcstride && rowsize == dststride) {
memcpy(dst, src, numrows*rowsize);
} else {
@@ -102,8 +110,12 @@ static void teximage_set_map_data(radeon_texture_image 
*image)
 {
radeon_mipmap_level *lvl;
 
-   if (!image->mt)
+   if (!image->mt) {
+   radeon_warning("%s(%p) Trying to set map data without 
miptree.\n",
+   __func__, image);
+
return;
+   }
 
lvl = &image->mt->levels[image->mtlevel];
 
@@ -162,15 +174,31 @@ void radeonMapTexture(GLcontext *ctx, struct 
gl_texture_object *texObj)
radeonTexObj* t = radeon_tex_obj(texObj);
int face, level;
 
-   if (!radeon_validate_texture_miptree(ctx, texObj))
- return;
+   radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
+   "%s(%p, tex %p)\n",
+   __func__, ctx, texObj);
+
+   if (!radeon_validate_texture_miptree(ctx, texObj)) {
+   radeon_error("%s(%p, tex %p) Failed to validate miptree for "
+   "sw fallback.\n",
+   __func__, ctx, texObj);
+   return;
+   }
+
+   if (t->image_override && t->bo) {
+   radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
+   "%s(%p, tex %p) Work around for missing miptree in 
r100.\n",
+   __func__, ctx, texObj);
 
-   /* for r100 3D sw fallbacks don't have mt */
-   if (t->image_override && t->bo)
map_override(ctx, t);
+   }
 
-   if (!t->mt)
+   /* for r100 3D sw fallbacks don't have mt */
+   if (!t->mt) {
+   radeon_warning("%s(%p, tex %p) No miptree in texture.\n",
+   __func__, ctx, texObj);
return;
+   }
 
radeon_bo_map(t->mt->bo, GL_FALSE);
for(face = 0; face < t->mt->faces; ++face) {
@@ -184,6 +212,10 @@ void radeonUnmapTexture(GLcontext *ctx, struct 
gl_texture_object *texObj)
radeonTexObj* t = radeon_tex_obj(texObj);
int face, level;
 
+   radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
+   "%s(%p, tex %p)\n",
+   __func__, ctx, texObj);
+
if (t->image_override && t->bo)
unmap_override(ctx, t);
/* for r100 3D sw fallbacks don't have mt */
@@ -210,6 +242,10 @@ static void radeon_generate_mipmap(GLcontext *ctx, GLenum 
target,
GLuint nr_faces = (t->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
int i, face;
 
+   radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
+   "%s(%p, tex %p) Target type %s.\n",
+   __func__, ctx, texObj,
+   _mesa_lookup_enum_by_nr(target));
 
_mesa_generate_mipmap(ctx, target, texObj);
 
@@ -240,6 +276,10 @@ void radeonGenerateMipmap(GLcontext* ctx, GLenum target, 
struct gl_texture_objec
bo = !baseimage->mt ? baseimage->bo : baseimage->mt->bo;
 
if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {
+   radeon_print(RADEON_TEXTURE, RADEON_NORMAL,
+   "%s(%p, tex %p) Trying to generate mipmap for texture "
+   "in processing by GPU.\n",
+   __func__, ctx, texObj);
radeon_f

Mesa (master): r200: Add some debug output to texture function.

2010-02-06 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 198e810a200eab06c662888c7ec85ae2459ec85a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=198e810a200eab06c662888c7ec85ae2459ec85a

Author: Pauli Nieminen 
Date:   Sat Feb  6 16:23:48 2010 +0200

r200: Add some debug output to texture function.

---

 src/mesa/drivers/dri/r200/r200_tex.c |   45 ++---
 1 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tex.c 
b/src/mesa/drivers/dri/r200/r200_tex.c
index cea5890..85283a9 100644
--- a/src/mesa/drivers/dri/r200/r200_tex.c
+++ b/src/mesa/drivers/dri/r200/r200_tex.c
@@ -65,6 +65,13 @@ static void r200SetTexWrap( radeonTexObjPtr t, GLenum swrap, 
GLenum twrap, GLenu
GLboolean  is_clamp_to_border = GL_FALSE;
struct gl_texture_object *tObj = &t->base;
 
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(tex %p) sw %s, tw %s, rw %s\n",
+   __func__, t,
+   _mesa_lookup_enum_by_nr(swrap),
+   _mesa_lookup_enum_by_nr(twrap),
+   _mesa_lookup_enum_by_nr(rwrap));
+
t->pp_txfilter &= ~(R200_CLAMP_S_MASK | R200_CLAMP_T_MASK | 
R200_BORDER_MODE_D3D);
 
switch ( swrap ) {
@@ -180,6 +187,9 @@ static void r200SetTexWrap( radeonTexObjPtr t, GLenum 
swrap, GLenum twrap, GLenu
 static void r200SetTexMaxAnisotropy( radeonTexObjPtr t, GLfloat max )
 {
t->pp_txfilter &= ~R200_MAX_ANISO_MASK;
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(tex %p) max %f.\n",
+   __func__, t, max);
 
if ( max <= 1.0 ) {
   t->pp_txfilter |= R200_MAX_ANISO_1_TO_1;
@@ -212,6 +222,13 @@ static void r200SetTexFilter( radeonTexObjPtr t, GLenum 
minf, GLenum magf )
t->pp_txfilter &= ~(R200_MIN_FILTER_MASK | R200_MAG_FILTER_MASK);
t->pp_txformat_x &= ~R200_VOLUME_FILTER_MASK;
 
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(tex %p) minf %s, maxf %s, anisotropy %d.\n",
+   __func__, t,
+   _mesa_lookup_enum_by_nr(minf),
+   _mesa_lookup_enum_by_nr(magf),
+   anisotropy);
+
if ( anisotropy == R200_MAX_ANISO_1_TO_1 ) {
   switch ( minf ) {
   case GL_NEAREST:
@@ -284,10 +301,8 @@ static void r200TexEnv( GLcontext *ctx, GLenum target,
GLuint unit = ctx->Texture.CurrentUnit;
struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
 
-   if ( R200_DEBUG & RADEON_STATE ) {
-  fprintf( stderr, "%s( %s )\n",
+   radeon_print(RADEON_TEXTURE | RADEON_STATE, RADEON_VERBOSE, "%s( %s )\n",
   __FUNCTION__, _mesa_lookup_enum_by_nr( pname ) );
-   }
 
/* This is incorrect: Need to maintain this data for each of
 * GL_TEXTURE_{123}D, GL_TEXTURE_RECTANGLE_NV, etc, and switch
@@ -356,10 +371,11 @@ static void r200TexParameter( GLcontext *ctx, GLenum 
target,
 {
radeonTexObj* t = radeon_tex_obj(texObj);
 
-   if ( R200_DEBUG & (RADEON_STATE|RADEON_TEXTURE) ) {
-  fprintf( stderr, "%s( %s )\n", __FUNCTION__,
+   radeon_print(RADEON_TEXTURE | RADEON_STATE, RADEON_VERBOSE,
+   "%s(%p, tex %p)  target %s, pname %s\n",
+   __FUNCTION__, ctx, texObj,
+   _mesa_lookup_enum_by_nr( target ),
   _mesa_lookup_enum_by_nr( pname ) );
-   }
 
switch ( pname ) {
case GL_TEXTURE_MIN_FILTER:
@@ -397,11 +413,10 @@ static void r200DeleteTexture(GLcontext * ctx, struct 
gl_texture_object *texObj)
r200ContextPtr rmesa = R200_CONTEXT(ctx);
radeonTexObj* t = radeon_tex_obj(texObj);
 
-   if (RADEON_DEBUG & (RADEON_STATE | RADEON_TEXTURE)) {
-  fprintf(stderr, "%s( %p (target = %s) )\n", __FUNCTION__,
- (void *)texObj,
- _mesa_lookup_enum_by_nr(texObj->Target));
-   }
+   radeon_print(RADEON_TEXTURE | RADEON_STATE, RADEON_NORMAL,
+   "%s( %p (target = %s) )\n", __FUNCTION__,
+  (void *)texObj,
+  _mesa_lookup_enum_by_nr(texObj->Target));
 
if (rmesa) {
   int i;
@@ -456,10 +471,10 @@ static struct gl_texture_object 
*r200NewTextureObject(GLcontext * ctx,
radeonTexObj* t = CALLOC_STRUCT(radeon_tex_obj);
 
 
-   if (RADEON_DEBUG & (RADEON_STATE | RADEON_TEXTURE)) {
- fprintf(stderr, "%s( %p (target = %s) )\n", __FUNCTION__,
-t, _mesa_lookup_enum_by_nr(target));
-   }
+   radeon_print(RADEON_STATE | RADEON_TEXTURE, RADEON_NORMAL,
+   "%s(%p) target %s, new texture %p.\n",
+  __FUNCTION__, ctx,
+  _mesa_lookup_enum_by_nr(target), t);
 
_mesa_initialize_texture_object(&t->base, name, target);
t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Fix lod bias correction.

2010-02-07 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 76a9831b2b20d59c49b5f25ba5275f17b4e2067b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=76a9831b2b20d59c49b5f25ba5275f17b4e2067b

Author: Pauli Nieminen 
Date:   Sun Feb  7 02:50:48 2010 +0200

r200: Fix lod bias correction.

glean/pointSprite shows that rv280 is trying to read from better
quality mipmap level. We have to correct default lod bias to match
required texture selection.

---

 src/mesa/drivers/dri/r200/r200_reg.h|2 ++
 src/mesa/drivers/dri/r200/r200_state_init.c |2 +-
 src/mesa/drivers/dri/r200/r200_tex.c|7 ---
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_reg.h 
b/src/mesa/drivers/dri/r200/r200_reg.h
index 526a624..e676869 100644
--- a/src/mesa/drivers/dri/r200/r200_reg.h
+++ b/src/mesa/drivers/dri/r200/r200_reg.h
@@ -950,6 +950,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 #define R200_TEXCOORD_ZERO(7  << 16)
 #define R200_TEXCOORD_MASK(7  << 16)
 #define R200_LOD_BIAS_MASK(0xfff8)
+#define R200_LOD_BIAS_FIXED_ONE   (0x0800)
+#define R200_LOD_BIAS_CORRECTION  (0x0060)
 #define R200_LOD_BIAS_SHIFT   19
 #define R200_PP_TXSIZE_0  0x2c0c /* NPOT only */
 #define R200_PP_TX_WIDTHMASK_SHIFT 0
diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c 
b/src/mesa/drivers/dri/r200/r200_state_init.c
index 51e8ac5..e06437b 100644
--- a/src/mesa/drivers/dri/r200/r200_state_init.c
+++ b/src/mesa/drivers/dri/r200/r200_state_init.c
@@ -1386,7 +1386,7 @@ void r200InitState( r200ContextPtr rmesa )
   rmesa->hw.tex[i].cmd[TEX_PP_BORDER_COLOR] = 0;
   rmesa->hw.tex[i].cmd[TEX_PP_TXFORMAT_X] =
  (/* R200_TEXCOORD_PROJ | */
-  0x10);   /* Small default bias */
+  R200_LOD_BIAS_CORRECTION);   /* Small default bias */
   if (rmesa->radeon.radeonScreen->drmSupportsFragShader) {
 rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET_NEWDRM] =
 rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP];
diff --git a/src/mesa/drivers/dri/r200/r200_tex.c 
b/src/mesa/drivers/dri/r200/r200_tex.c
index 85283a9..6723b12 100644
--- a/src/mesa/drivers/dri/r200/r200_tex.c
+++ b/src/mesa/drivers/dri/r200/r200_tex.c
@@ -324,18 +324,19 @@ static void r200TexEnv( GLcontext *ctx, GLenum target,
case GL_TEXTURE_LOD_BIAS_EXT: {
   GLfloat bias, min;
   GLuint b;
-  const int fixed_one = 0x800;
+  const int fixed_one = R200_LOD_BIAS_FIXED_ONE;
 
   /* The R200's LOD bias is a signed 2's complement value with a
* range of -16.0 <= bias < 16.0. 
*
* NOTE: Add a small bias to the bias for conform mipsel.c test.
*/
-  bias = *param + .01;
+  bias = *param;
   min = driQueryOptionb (&rmesa->radeon.optionCache, "no_neg_lod_bias") ?
  0.0 : -16.0;
   bias = CLAMP( bias, min, 16.0 );
-  b = (int)(bias * fixed_one) & R200_LOD_BIAS_MASK;
+  b = ((int)(bias * fixed_one)
+   + R200_LOD_BIAS_CORRECTION) & R200_LOD_BIAS_MASK;
   
   if ( (rmesa->hw.tex[unit].cmd[TEX_PP_TXFORMAT_X] & R200_LOD_BIAS_MASK) 
!= b ) {
 R200_STATECHANGE( rmesa, tex[unit] );

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r100/r200/r300/r600: Set MaxCombinedTextureImageunits.

2010-02-07 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 0943706d35e3955cacbc3b690cfb1e2dfb78d639
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0943706d35e3955cacbc3b690cfb1e2dfb78d639

Author: Pauli Nieminen 
Date:   Sun Feb  7 03:06:27 2010 +0200

r100/r200/r300/r600: Set MaxCombinedTextureImageunits.

Fixes glActiveTexture to set GL_INVALID_ENUM when trying
to activate texture unit that is not available.

piglit test case general/texunit passes now.

---

 src/mesa/drivers/dri/r200/r200_context.c |2 ++
 src/mesa/drivers/dri/r300/r300_context.c |4 
 src/mesa/drivers/dri/r600/r600_context.c |4 
 src/mesa/drivers/dri/radeon/radeon_context.c |1 +
 4 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_context.c 
b/src/mesa/drivers/dri/r200/r200_context.c
index 3191025..8986191 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -350,6 +350,8 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits;
ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits;
 
+   ctx->Const.MaxCombinedTextureImageUnits = ctx->Const.MaxTextureUnits;
+
i = driQueryOptioni( &rmesa->radeon.optionCache, "allow_large_textures");
 
/* FIXME: When no memory manager is available we should set this 
diff --git a/src/mesa/drivers/dri/r300/r300_context.c 
b/src/mesa/drivers/dri/r300/r300_context.c
index eedb7b6..7c21efb 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -333,6 +333,10 @@ static void r300InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
driQueryOptioni(&r300->radeon.optionCache, "texture_coord_units");
ctx->Const.MaxTextureUnits = MIN2(ctx->Const.MaxTextureImageUnits,
 ctx->Const.MaxTextureCoordUnits);
+   ctx->Const.MaxCombinedTextureImageUnits =
+   ctx->Const.MaxVertexTextureImageUnits +
+   ctx->Const.MaxTextureImageUnits;
+
 
ctx->Const.MaxTextureMaxAnisotropy = 16.0;
ctx->Const.MaxTextureLodBias = 16.0;
diff --git a/src/mesa/drivers/dri/r600/r600_context.c 
b/src/mesa/drivers/dri/r600/r600_context.c
index 15f65ba..5b7d7c2 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -249,6 +249,10 @@ static void r600InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxTextureUnits =
MIN2(ctx->Const.MaxTextureImageUnits,
 ctx->Const.MaxTextureCoordUnits);
+   ctx->Const.MaxCombinedTextureImageUnits =
+   ctx->Const.MaxVertexTextureImageUnits +
+   ctx->Const.MaxTextureImageUnits;
+
ctx->Const.MaxTextureMaxAnisotropy = 16.0;
ctx->Const.MaxTextureLodBias = 16.0;
 
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c 
b/src/mesa/drivers/dri/radeon/radeon_context.c
index 86c91f1..475e93b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -279,6 +279,7 @@ r100CreateContext( const __GLcontextModes *glVisual,
 "texture_units");
ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits;
ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits;
+   ctx->Const.MaxCombinedTextureImageUnits = ctx->Const.MaxTextureUnits;
 
i = driQueryOptioni( &rmesa->radeon.optionCache, "allow_large_textures");
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Fix LOD min/max emit.

2010-02-07 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: ce1f351963ae1de1218c83c9f846a17c2e3db65e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce1f351963ae1de1218c83c9f846a17c2e3db65e

Author: Pauli Nieminen 
Date:   Sun Feb  7 06:41:12 2010 +0200

r200: Fix LOD min/max emit.

Just emit minLod and maxLod to correct reisters.

Fixes lodclamp and levelclamp test cases from piglit.

---

 src/mesa/drivers/dri/r200/r200_reg.h  |2 +-
 src/mesa/drivers/dri/r200/r200_texstate.c |   35 -
 2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_reg.h 
b/src/mesa/drivers/dri/r200/r200_reg.h
index e676869..5911521 100644
--- a/src/mesa/drivers/dri/r200/r200_reg.h
+++ b/src/mesa/drivers/dri/r200/r200_reg.h
@@ -938,7 +938,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 #define R200_CLAMP_Q_CLAMP_GL (6  << 9)
 #define R200_CLAMP_Q_MIRROR_CLAMP_GL  (7  << 9)
 #define R200_CLAMP_Q_MASK (7  << 9)
-#define R200_MIN_MIP_LEVEL_MASK   (0xff << 12)
+#define R200_MIN_MIP_LEVEL_MASK   (0x0f << 12)
 #define R200_MIN_MIP_LEVEL_SHIFT  12
 #define R200_TEXCOORD_NONPROJ (0  << 16)
 #define R200_TEXCOORD_CUBIC_ENV   (1  << 16)
diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c 
b/src/mesa/drivers/dri/r200/r200_texstate.c
index e2f9cf0..458de08 100644
--- a/src/mesa/drivers/dri/r200/r200_texstate.c
+++ b/src/mesa/drivers/dri/r200/r200_texstate.c
@@ -1055,6 +1055,7 @@ static GLboolean r200UpdateAllTexEnv( GLcontext *ctx )
 
 #define TEXOBJ_TXFORMAT_X_MASK (R200_DEPTH_LOG2_MASK | \
 R200_TEXCOORD_MASK |   \
+R200_MIN_MIP_LEVEL_MASK |  \
 R200_CLAMP_Q_MASK |\
 R200_VOLUME_FILTER_MASK)
 
@@ -1410,6 +1411,7 @@ static void setup_hardware_state(r200ContextPtr rmesa, 
radeonTexObj *t)
 {
const struct gl_texture_image *firstImage = t->base.Image[0][t->minLod];
GLint log2Width, log2Height, log2Depth, texelBytes;
+   uint extra_size = 0;
 
if ( t->bo ) {
return;
@@ -1420,6 +1422,10 @@ static void setup_hardware_state(r200ContextPtr rmesa, 
radeonTexObj *t)
log2Depth  = firstImage->DepthLog2;
texelBytes = _mesa_get_format_bytes(firstImage->TexFormat);
 
+   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, tex %p) log2(w %d, h %d, d %d), texelBytes %d. format %d\n",
+   __func__, rmesa, t, log2Width, log2Height,
+   log2Depth, texelBytes, firstImage->TexFormat);
 
if (!t->image_override) {
   if (VALID_FORMAT(firstImage->TexFormat)) {
@@ -1432,6 +1438,8 @@ static void setup_hardware_state(r200ContextPtr rmesa, 
radeonTexObj *t)
 
 t->pp_txformat |= table[ firstImage->TexFormat ].format;
 t->pp_txfilter |= table[ firstImage->TexFormat ].filter;
+
+
   } else {
 _mesa_problem(NULL, "unexpected texture format in %s",
   __FUNCTION__);
@@ -1440,19 +1448,34 @@ static void setup_hardware_state(r200ContextPtr rmesa, 
radeonTexObj *t)
}
 
t->pp_txfilter &= ~R200_MAX_MIP_LEVEL_MASK;
-   t->pp_txfilter |= (t->maxLod - t->minLod) << R200_MAX_MIP_LEVEL_SHIFT;
-   
+   t->pp_txfilter |= ((t->maxLod) << R200_MAX_MIP_LEVEL_SHIFT)
+  & R200_MAX_MIP_LEVEL_MASK;
+
+   if ( t->pp_txfilter &
+   (R200_MIN_FILTER_NEAREST_MIP_NEAREST
+| R200_MIN_FILTER_NEAREST_MIP_LINEAR
+| R200_MIN_FILTER_LINEAR_MIP_NEAREST
+| R200_MIN_FILTER_LINEAR_MIP_LINEAR
+| R200_MIN_FILTER_ANISO_NEAREST_MIP_NEAREST
+| R200_MIN_FILTER_ANISO_NEAREST_MIP_LINEAR))
+extra_size = t->minLod;
+
t->pp_txformat &= ~(R200_TXFORMAT_WIDTH_MASK |
   R200_TXFORMAT_HEIGHT_MASK |
   R200_TXFORMAT_CUBIC_MAP_ENABLE |
   R200_TXFORMAT_F5_WIDTH_MASK |
   R200_TXFORMAT_F5_HEIGHT_MASK);
-   t->pp_txformat |= ((log2Width << R200_TXFORMAT_WIDTH_SHIFT) |
- (log2Height << R200_TXFORMAT_HEIGHT_SHIFT));
+   t->pp_txformat |= (((log2Width + extra_size) << R200_TXFORMAT_WIDTH_SHIFT) |
+ ((log2Height + extra_size)<< R200_TXFORMAT_HEIGHT_SHIFT));

t->tile_bits = 0;

-   t->pp_txformat_x &= ~(R200_DEPTH_LOG2_MASK | R200_TEXCOORD_MASK);
+   t->pp_txformat_x &= ~(R200_DEPTH_LOG2_MASK | R200_TEXCOORD_MASK
+  | R200_MIN_MIP_LEVEL_MASK);
+
+   t->pp_txformat_x |= (t->minLod << R200_MIN_MIP_LEVEL_SHIFT)
+  & R

Mesa (master): mesa: Fix mesa_next_pow_two to return same value if parameter is pow2.

2010-02-07 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 1a45c2bce7480ef1d125439aed8413bcff0ab468
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a45c2bce7480ef1d125439aed8413bcff0ab468

Author: Pauli Nieminen 
Date:   Sun Feb  7 07:36:13 2010 +0200

mesa: Fix mesa_next_pow_two to return same value if parameter is pow2.

Without subtracting one pow2 value would be rounded up to next pow2
which is not correct behaviour for the function.

---

 src/mesa/main/imports.h |8 +---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index 81cb396..3843f50 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -417,7 +417,8 @@ static INLINE int32_t
 _mesa_next_pow_two_32(uint32_t x)
 {
 #ifdef __GNUC__
-   return 1 << (__builtin_clz(x) ^ 31);
+   x--;
+   return 1 << ((__builtin_clz(x) ^ 31) + 1);
 #else
x--;
x |= x >> 1;
@@ -434,10 +435,11 @@ static INLINE int64_t
 _mesa_next_pow_two_64(uint64_t x)
 {
 #ifdef __GNUC__
+   x--;
if (sizeof(x) == sizeof(long))
-   return 1 << (__builtin_clzl(x) ^ 63);
+   return 1 << ((__builtin_clzl(x) ^ 63) + 1);
else
-   return 1 << (__builtin_clzll(x) ^ 63);
+   return 1 << ((__builtin_clzll(x) ^ 63) + 1);
 #else
x--;
x |= x >> 1;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r200: Fix UMS notto emit stp.

2010-02-08 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 4be7922a8e40aebaea5948927b29b94363a208b5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4be7922a8e40aebaea5948927b29b94363a208b5

Author: Pauli Nieminen 
Date:   Mon Feb  8 11:49:10 2010 +0200

r200: Fix UMS notto emit stp.

Polgon stipples are handled by kernel in UMS. Mark the
state as never to be emited for UMS.

---

 src/mesa/drivers/dri/r200/r200_state_init.c |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c 
b/src/mesa/drivers/dri/r200/r200_state_init.c
index 80b08dc..5a1e653 100644
--- a/src/mesa/drivers/dri/r200/r200_state_init.c
+++ b/src/mesa/drivers/dri/r200/r200_state_init.c
@@ -889,7 +889,10 @@ void r200InitState( r200ContextPtr rmesa )
   }
}
 
-   ALLOC_STATE( stp, always, STP_STATE_SIZE, "STP/stp", 0 );
+   if (rmesa->radeon.radeonScreen->kernel_mm)
+  ALLOC_STATE( stp, always, STP_STATE_SIZE, "STP/stp", 0 );
+   else
+  ALLOC_STATE( stp, never, STP_STATE_SIZE, "STP/stp", 0 );
 
for (i = 0; i < 6; i++)
   if (rmesa->radeon.radeonScreen->kernel_mm)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): radeon: fix UMS since stp addition.

2010-02-08 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: d87fb5e0031be4cd33d79cba9b702176390347d9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d87fb5e0031be4cd33d79cba9b702176390347d9

Author: Dave Airlie 
Date:   Mon Feb  8 17:17:34 2010 +1000

radeon: fix UMS since stp addition.

UMS doesn't need the STP atom.

Signed-off-by: Dave Airlie 

---

 src/mesa/drivers/dri/radeon/radeon_ioctl.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c 
b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
index 274fef9..674b72d 100644
--- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
@@ -107,7 +107,8 @@ void radeonSetUpAtomList( r100ContextPtr rmesa )
   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.lit[i]);
for (i = 0; i < 6; ++i)
   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.ucp[i]);
-   insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.stp);
+   if (rmesa->radeon.radeonScreen->kernel_mm)
+  insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.stp);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.eye);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.grd);
insert_at_tail(&rmesa->radeon.hw.atomlist, &rmesa->hw.fog);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add some debug output for fbo support

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 4767d27ee32cc30ee00ab5265ecbb8eeefcab8c9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4767d27ee32cc30ee00ab5265ecbb8eeefcab8c9

Author: Pauli Nieminen 
Date:   Tue Feb  9 21:37:19 2010 +0200

radeon: Add some debug output for fbo support

---

 src/mesa/drivers/dri/radeon/radeon_common.h  |7 +++
 src/mesa/drivers/dri/radeon/radeon_fbo.c |   53 ++
 src/mesa/drivers/dri/radeon/radeon_span.c|8 
 src/mesa/drivers/dri/radeon/radeon_texture.c |   12 ++
 4 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h 
b/src/mesa/drivers/dri/radeon/radeon_common.h
index f31f08e..cd01c99 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.h
+++ b/src/mesa/drivers/dri/radeon/radeon_common.h
@@ -48,6 +48,9 @@ void radeon_check_front_buffer_rendering(GLcontext *ctx);
 static inline struct radeon_renderbuffer *radeon_renderbuffer(struct 
gl_renderbuffer *rb)
 {
struct radeon_renderbuffer *rrb = (struct radeon_renderbuffer *)rb;
+   radeon_print(RADEON_MEMORY, RADEON_TRACE,
+   "%s(rb %p)\n",
+   __func__, rb);
if (rrb && rrb->base.ClassID == RADEON_RB_CLASS)
return rrb;
else
@@ -56,6 +59,10 @@ static inline struct radeon_renderbuffer 
*radeon_renderbuffer(struct gl_renderbu
 
 static inline struct radeon_renderbuffer *radeon_get_renderbuffer(struct 
gl_framebuffer *fb, int att_index)
 {
+   radeon_print(RADEON_MEMORY, RADEON_TRACE,
+   "%s(fb %p, index %d)\n",
+   __func__, fb, att_index);
+
if (att_index >= 0)
return 
radeon_renderbuffer(fb->Attachment[att_index].Renderbuffer);
else
diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c 
b/src/mesa/drivers/dri/radeon/radeon_fbo.c
index e780b9e..01fe933 100644
--- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
+++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
@@ -29,6 +29,7 @@
 #include "main/imports.h"
 #include "main/macros.h"
 #include "main/mtypes.h"
+#include "main/enums.h"
 #include "main/fbobject.h"
 #include "main/framebuffer.h"
 #include "main/renderbuffer.h"
@@ -56,6 +57,10 @@ radeon_delete_renderbuffer(struct gl_renderbuffer *rb)
 {
   struct radeon_renderbuffer *rrb = radeon_renderbuffer(rb);
 
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(rb %p, rrb %p) \n",
+   __func__, rb, rrb);
+
   ASSERT(rrb);
 
   if (rrb && rrb->bo) {
@@ -68,6 +73,10 @@ static void *
 radeon_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb,
   GLint x, GLint y)
 {
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rb %p) \n",
+   __func__, ctx, rb);
+
   return NULL;
 }
 
@@ -85,6 +94,10 @@ radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
   GLboolean software_buffer = GL_FALSE;
   int cpp;
 
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rb %p) \n",
+   __func__, ctx, rb);
+
ASSERT(rb->Name != 0);
   switch (internalFormat) {
case GL_R3_G3_B2:
@@ -200,6 +213,10 @@ radeon_alloc_window_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
rb->Width = width;
rb->Height = height;
rb->InternalFormat = internalFormat;
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rb %p) \n",
+   __func__, ctx, rb);
+
 
return GL_TRUE;
 }
@@ -212,6 +229,10 @@ radeon_resize_buffers(GLcontext *ctx, struct 
gl_framebuffer *fb,
  struct radeon_framebuffer *radeon_fb = (struct radeon_framebuffer*)fb;
int i;
 
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, fb %p) \n",
+   __func__, ctx, fb);
+
_mesa_resize_framebuffer(ctx, fb, width, height);
 
fb->Initialized = GL_TRUE; /* XXX remove someday */
@@ -252,6 +273,11 @@ radeon_create_renderbuffer(gl_format format, __DRIdrawable 
*driDrawPriv)
 struct radeon_renderbuffer *rrb;
 
 rrb = CALLOC_STRUCT(radeon_renderbuffer);
+
+radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s( rrb %p ) \n",
+   __func__, rrb);
+
 if (!rrb)
return NULL;
 
@@ -331,6 +357,11 @@ radeon_new_renderbuffer(GLcontext * ctx, GLuint name)
   struct radeon_renderbuffer *rrb;
 
   rrb = CALLOC_STRUCT(radeon_renderbuffer);
+
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rrb %p) \n",
+   __func__, ctx, rrb);
+
   if (!rrb)
 return NULL;
 
@@ -348,6 +379,11 @@ static void
 radeon_bind_framebuffer(GLcontext * ctx, GLenum target,
struct gl_framebuffer *fb, struct gl_framebuffer 
*fbread)
 {
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, fb %p, t

Mesa (master): r200: Fix UMS notto emit stp.

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 9e587dbd78bdcf8608bce7cb3dcd05d9527b641e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e587dbd78bdcf8608bce7cb3dcd05d9527b641e

Author: Pauli Nieminen 
Date:   Mon Feb  8 11:49:10 2010 +0200

r200: Fix UMS notto emit stp.

Polgon stipples are handled by kernel in UMS. Mark the
state as never to be emited for UMS.

---

 src/mesa/drivers/dri/r200/r200_state_init.c |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c 
b/src/mesa/drivers/dri/r200/r200_state_init.c
index e06437b..1606553 100644
--- a/src/mesa/drivers/dri/r200/r200_state_init.c
+++ b/src/mesa/drivers/dri/r200/r200_state_init.c
@@ -894,7 +894,10 @@ void r200InitState( r200ContextPtr rmesa )
   }
}
 
-   ALLOC_STATE( stp, polygon_stipple, STP_STATE_SIZE, "STP/stp", 0 );
+   if (rmesa->radeon.radeonScreen->kernel_mm)
+  ALLOC_STATE( stp, polygon_stipple, STP_STATE_SIZE, "STP/stp", 0 );
+   else
+  ALLOC_STATE( stp, never, STP_STATE_SIZE, "STP/stp", 0 );
 
for (i = 0; i < 6; i++)
   if (rmesa->radeon.radeonScreen->kernel_mm)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Define EXT_framebuffer_object constants to match hw.

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 42026a8ccf4f02d4648d65763e18d8bf98eb9bfd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=42026a8ccf4f02d4648d65763e18d8bf98eb9bfd

Author: Pauli Nieminen 
Date:   Wed Feb 10 03:00:12 2010 +0200

radeon: Define EXT_framebuffer_object constants to match hw.

This hides the assertion failure in glean/fbo test. Underlying
problem when same texture is set twice to different attachments
will cause assertion.

---

 src/mesa/drivers/dri/r200/r200_context.c |2 ++
 src/mesa/drivers/dri/r300/r300_context.c |3 +++
 src/mesa/drivers/dri/r600/r600_context.c |2 ++
 src/mesa/drivers/dri/radeon/radeon_context.c |2 ++
 4 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_context.c 
b/src/mesa/drivers/dri/r200/r200_context.c
index 8986191..6ecd46e 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -360,6 +360,7 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
ctx->Const.Max3DTextureLevels = 9;
ctx->Const.MaxCubeTextureLevels = 12;
ctx->Const.MaxTextureRectSize = 2048;
+   ctx->Const.MaxRenderbufferSize = 2048;
 
ctx->Const.MaxTextureMaxAnisotropy = 16.0;
 
@@ -390,6 +391,7 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
ctx->Const.VertexProgram.MaxNativeAddressRegs = 1;
 
ctx->Const.MaxDrawBuffers = 1;
+   ctx->Const.MaxColorAttachments = 1;
 
_mesa_set_mvp_with_dp4( ctx, GL_TRUE );
 
diff --git a/src/mesa/drivers/dri/r300/r300_context.c 
b/src/mesa/drivers/dri/r300/r300_context.c
index 7c21efb..fe2ed22 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -345,11 +345,13 @@ static void r300InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxTextureLevels = 13;
ctx->Const.MaxCubeTextureLevels = 13;
ctx->Const.MaxTextureRectSize = 4096;
+   ctx->Const.MaxRenderbufferSize = 4096;
}
else {
ctx->Const.MaxTextureLevels = 12;
ctx->Const.MaxCubeTextureLevels = 12;
ctx->Const.MaxTextureRectSize = 2048;
+   ctx->Const.MaxRenderbufferSize = 2048;
}
 
ctx->Const.MinPointSize = 1.0;
@@ -363,6 +365,7 @@ static void r300InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxLineWidthAA = R300_LINESIZE_MAX;
 
ctx->Const.MaxDrawBuffers = 1;
+   ctx->Const.MaxColorAttachments = 1;
 
/* currently bogus data */
if (r300->options.hw_tcl_enabled) {
diff --git a/src/mesa/drivers/dri/r600/r600_context.c 
b/src/mesa/drivers/dri/r600/r600_context.c
index 5b7d7c2..f575e74 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -270,6 +270,8 @@ static void r600InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxLineWidthAA = 0x / 8.0;
 
ctx->Const.MaxDrawBuffers = 1; /* hw supports 8 */
+   ctx->Const.MaxColorAttachments = 1;
+   ctx->Const.MaxRenderbufferSize = 4096;
 
/* 256 for reg-based consts, inline consts also supported */
ctx->Const.VertexProgram.MaxInstructions = 8192; /* in theory no limit 
*/
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c 
b/src/mesa/drivers/dri/radeon/radeon_context.c
index 475e93b..4625af1 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -317,6 +317,8 @@ r100CreateContext( const __GLcontextModes *glVisual,
rmesa->boxes = 0;
 
ctx->Const.MaxDrawBuffers = 1;
+   ctx->Const.MaxColorAttachments = 1;
+   ctx->Const.MaxRenderbufferSize = 2048;
 
_mesa_set_mvp_with_dp4( ctx, GL_TRUE );
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix printf formatings to match te values.

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 77e6fb17d96ed9d9b3c2f52999e93da12a466405
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=77e6fb17d96ed9d9b3c2f52999e93da12a466405

Author: Pauli Nieminen 
Date:   Wed Feb 10 03:20:02 2010 +0200

radeon: Fix printf formatings to match te values.

---

 src/mesa/drivers/dri/radeon/radeon_fbo.c |2 +-
 src/mesa/drivers/dri/radeon/radeon_texture.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c 
b/src/mesa/drivers/dri/radeon/radeon_fbo.c
index 01fe933..56dcc50 100644
--- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
+++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
@@ -530,7 +530,7 @@ radeon_render_texture(GLcontext * ctx,
GLuint imageOffset;
 
   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
-   "%s(%p, fb %p, rrb %p, att att)\n",
+   "%s(%p, fb %p, rrb %p, att %p)\n",
__func__, ctx, fb, rrb, att);
 
(void) fb;
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c 
b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 9179a3f..9b9d90b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -284,7 +284,7 @@ void radeonGenerateMipmap(GLcontext* ctx, GLenum target, 
struct gl_texture_objec
 
radeon_print(RADEON_TEXTURE, RADEON_TRACE,
"%s(%p, target %s, tex %p)\n",
-   __func__, _mesa_lookup_enum_by_nr(target),
+   __func__, ctx, _mesa_lookup_enum_by_nr(target),
texObj);
 
if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Don' t pass paramter to __builtin_clz which would hve undefined result.

2010-02-14 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 6e958832afe9544973528bed78dd3a340b8686f3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e958832afe9544973528bed78dd3a340b8686f3

Author: Pauli Nieminen 
Date:   Sun Feb 14 14:16:20 2010 +0200

mesa: Don't pass paramter to __builtin_clz which would hve undefined result.

__builtin_clz with parameter 0 has undefined value. When
using -O3 optimizing this would result to too large next
power of two value.

Fix is to check if passed value is 1 and modify formula
for that case.

---

 src/mesa/main/imports.h |   16 +++-
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index 3843f50..e3d2ac9 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -412,13 +412,19 @@ _mesa_is_pow_two(int x)
  * Source for the fallback implementation is
  * Sean Eron Anderson's webpage "Bit Twiddling Hacks"
  * http://graphics.stanford.edu/~seander/bithacks.html
+ *
+ * When using builtin function have to do some work
+ * for case when passed values 1 to prevent hiting
+ * undefined result from __builtin_clz. Undefined
+ * results would be different depending on optimization
+ * level used for build.
  */
 static INLINE int32_t
 _mesa_next_pow_two_32(uint32_t x)
 {
 #ifdef __GNUC__
-   x--;
-   return 1 << ((__builtin_clz(x) ^ 31) + 1);
+   uint32_t y = (x != 1);
+   return (1 + y) << ((__builtin_clz(x - y) ^ 31) );
 #else
x--;
x |= x >> 1;
@@ -435,11 +441,11 @@ static INLINE int64_t
 _mesa_next_pow_two_64(uint64_t x)
 {
 #ifdef __GNUC__
-   x--;
+   uint64_t y = (x != 1);
if (sizeof(x) == sizeof(long))
-   return 1 << ((__builtin_clzl(x) ^ 63) + 1);
+   return (1 + y) << ((__builtin_clzl(x - y) ^ 63));
else
-   return 1 << ((__builtin_clzll(x) ^ 63) + 1);
+   return (1 + y) << ((__builtin_clzll(x - y) ^ 63));
 #else
x--;
x |= x >> 1;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Reduce number of radeon_bo_map calls that require kernel entry.

2010-03-01 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 9a7776696b786180f1d384eb22b928707e74dfca
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a7776696b786180f1d384eb22b928707e74dfca

Author: Pauli Nieminen 
Date:   Mon Mar  1 23:47:35 2010 +0200

radeon: Reduce number of radeon_bo_map calls that require kernel entry.

DMA buffers are often remapped many times for singel cs. To reduce number of
mapping calls ending to kernel dma buffers are mapped when allocated and 
unmapped
when full or in cs flush. This makes indifual mapping calls in other parts of
code simple increment/decrement reference count which is faster than entering
kernel.

This improves Anholt's openarena benchmark from 36 fps to 44 fps.

---

 src/mesa/drivers/dri/radeon/radeon_dma.c |   16 +---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c 
b/src/mesa/drivers/dri/radeon/radeon_dma.c
index d31e4e4..22499bc 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -184,6 +184,8 @@ void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, 
int size)
radeon_print(RADEON_DMA, RADEON_NORMAL, "%s size %d minimum_size %d\n",
__FUNCTION__, size, rmesa->dma.minimum_size);
 
+   if (!is_empty_list(&rmesa->dma.reserved))
+   radeon_bo_unmap(first_elem(&rmesa->dma.reserved)->bo);
 
if (is_empty_list(&rmesa->dma.free)
  || last_elem(&rmesa->dma.free)->bo->size < size) {
@@ -211,7 +213,7 @@ again_alloc:
 
rmesa->dma.current_used = 0;
rmesa->dma.current_vertexptr = 0;
-   
+
if (radeon_cs_space_check_with_bo(rmesa->cmdbuf.cs,
  first_elem(&rmesa->dma.reserved)->bo,
  RADEON_GEM_DOMAIN_GTT, 0))
@@ -221,6 +223,7 @@ again_alloc:
 /* Cmd buff have been flushed in radeon_revalidate_bos */
goto again_alloc;
}
+   radeon_bo_map(first_elem(&rmesa->dma.reserved)->bo, 1);
 }
 
 /* Allocates a region from rmesa->dma.current.  If there isn't enough
@@ -332,6 +335,10 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
/* request updated cs processing information from kernel */
legacy_track_pending(rmesa->radeonScreen->bom, 0);
}
+
+   if (!is_empty_list(&rmesa->dma.reserved))
+   radeon_bo_unmap(first_elem(&rmesa->dma.reserved)->bo);
+
/* move waiting bos to free list.
   wait list provides gpu time to handle data before reuse */
foreach_s(dma_bo, temp, &rmesa->dma.wait) {
@@ -349,8 +356,11 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
   FREE(dma_bo);
   continue;
}
-   if (!radeon_bo_is_idle(dma_bo->bo))
+   if (!radeon_bo_is_idle(dma_bo->bo)) {
+   if (rmesa->radeonScreen->driScreen->dri2.enabled)
+   break;
continue;
+   }
remove_from_list(dma_bo);
dma_bo->expire_counter = expire_at;
insert_at_tail(&rmesa->dma.free, dma_bo);
@@ -388,7 +398,7 @@ void rcommon_flush_last_swtcl_prim( GLcontext *ctx  )
 {
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
struct radeon_dma *dma = &rmesa->dma;
-   
+
if (RADEON_DEBUG & RADEON_IOCTL)
fprintf(stderr, "%s\n", __FUNCTION__);
dma->flush = NULL;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): radeon: Fix buffer object unmap to be called only once for dma buffers.

2010-03-16 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: e9c2c4a76466fc1ccfbf4d5de048414f7126b940
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9c2c4a76466fc1ccfbf4d5de048414f7126b940

Author: Pauli Nieminen 
Date:   Mon Mar 15 10:30:18 2010 +0200

radeon: Fix buffer object unmap to be called only once for dma buffers.

If flush happens inside radeonRefillCurrentMaRegion the last dma buffer would
be unmapped twice. Unmapping buffer when moving buffer to wait list fixes the
mapping error.

---

 src/mesa/drivers/dri/radeon/radeon_dma.c |7 +--
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c 
b/src/mesa/drivers/dri/radeon/radeon_dma.c
index 22499bc..6b7690c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -184,9 +184,6 @@ void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, 
int size)
radeon_print(RADEON_DMA, RADEON_NORMAL, "%s size %d minimum_size %d\n",
__FUNCTION__, size, rmesa->dma.minimum_size);
 
-   if (!is_empty_list(&rmesa->dma.reserved))
-   radeon_bo_unmap(first_elem(&rmesa->dma.reserved)->bo);
-
if (is_empty_list(&rmesa->dma.free)
  || last_elem(&rmesa->dma.free)->bo->size < size) {
dma_bo = CALLOC_STRUCT(radeon_dma_bo);
@@ -336,9 +333,6 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
legacy_track_pending(rmesa->radeonScreen->bom, 0);
}
 
-   if (!is_empty_list(&rmesa->dma.reserved))
-   radeon_bo_unmap(first_elem(&rmesa->dma.reserved)->bo);
-
/* move waiting bos to free list.
   wait list provides gpu time to handle data before reuse */
foreach_s(dma_bo, temp, &rmesa->dma.wait) {
@@ -368,6 +362,7 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
 
/* move reserved to wait list */
foreach_s(dma_bo, temp, &rmesa->dma.reserved) {
+   radeon_bo_unmap(dma_bo->bo);
/* free objects that are too small to be used because of large 
request */
if (dma_bo->bo->size < rmesa->dma.minimum_size) {
   radeon_bo_unref(dma_bo->bo);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Fix memory leak in decompress-with-blit.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 63af29bfbe265318bcf5be69e420de361b900321
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=63af29bfbe265318bcf5be69e420de361b900321

Author: Keith Whitwell 
Date:   Fri Mar 12 18:32:10 2010 +

mesa: Fix memory leak in decompress-with-blit.
(cherry picked from commit f05a4ee6f2840590c90da4be2fe5c6295410a5af)

---

 src/mesa/state_tracker/st_cb_texture.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_texture.c 
b/src/mesa/state_tracker/st_cb_texture.c
index c849132..92eefca 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -880,6 +880,8 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint 
level,
 
_mesa_unmap_pbo_dest(ctx, &ctx->Pack);
 
+   screen->tex_transfer_destroy(tex_xfer);
+
/* destroy the temp / dest surface */
util_destroy_rgba_surface(dst_texture, dst_surface);
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Replace _mesa_strtod with _mesa_strtof.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 346298c7658f2ec8b105e5e53101637af232724f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=346298c7658f2ec8b105e5e53101637af232724f

Author: Marcin Baczyński 
Date:   Sat Mar 13 14:26:45 2010 +0100

Replace _mesa_strtod with _mesa_strtof.

Reviewed-by: Ian Romanick 

---

 src/mesa/main/imports.c   |   12 +++-
 src/mesa/main/imports.h   |4 ++--
 src/mesa/shader/lex.yy.c  |8 
 src/mesa/shader/nvfragparse.c |2 +-
 src/mesa/shader/program_lexer.l   |8 
 src/mesa/shader/slang/slang_compile.c |4 ++--
 6 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c
index 56e8195..1ae0853 100644
--- a/src/mesa/main/imports.c
+++ b/src/mesa/main/imports.c
@@ -795,18 +795,20 @@ _mesa_strdup( const char *s )
}
 }
 
-/** Wrapper around strtod() */
-double
-_mesa_strtod( const char *s, char **end )
+/** Wrapper around strtof() */
+float
+_mesa_strtof( const char *s, char **end )
 {
 #ifdef _GNU_SOURCE
static locale_t loc = NULL;
if (!loc) {
   loc = newlocale(LC_CTYPE_MASK, "C", NULL);
}
-   return strtod_l(s, end, loc);
+   return strtof_l(s, end, loc);
+#elif defined(_ISOC99_SOURCE) || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 
600)
+   return strtof(s, end);
 #else
-   return strtod(s, end);
+   return (float)strtod(s, end);
 #endif
 }
 
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index fb4a00e..d28f4ad 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -575,8 +575,8 @@ _mesa_getenv( const char *var );
 extern char *
 _mesa_strdup( const char *s );
 
-extern double
-_mesa_strtod( const char *s, char **end );
+extern float
+_mesa_strtof( const char *s, char **end );
 
 extern unsigned int
 _mesa_str_checksum(const char *str);
diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c
index a08617f..4c5c644 100644
--- a/src/mesa/shader/lex.yy.c
+++ b/src/mesa/shader/lex.yy.c
@@ -2198,7 +2198,7 @@ case 142:
 YY_RULE_SETUP
 #line 326 "program_lexer.l"
 {
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
YY_BREAK
@@ -2210,7 +2210,7 @@ YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
 #line 330 "program_lexer.l"
 {
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
YY_BREAK
@@ -2218,7 +2218,7 @@ case 144:
 YY_RULE_SETUP
 #line 334 "program_lexer.l"
 {
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
YY_BREAK
@@ -2226,7 +2226,7 @@ case 145:
 YY_RULE_SETUP
 #line 338 "program_lexer.l"
 {
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
YY_BREAK
diff --git a/src/mesa/shader/nvfragparse.c b/src/mesa/shader/nvfragparse.c
index d03cb4e..0de3c58 100644
--- a/src/mesa/shader/nvfragparse.c
+++ b/src/mesa/shader/nvfragparse.c
@@ -456,7 +456,7 @@ Parse_ScalarConstant(struct parse_state *parseState, 
GLfloat *number)
 {
char *end = NULL;
 
-   *number = (GLfloat) _mesa_strtod((const char *) parseState->pos, &end);
+   *number = (GLfloat) _mesa_strtof((const char *) parseState->pos, &end);
 
if (end && end > (char *) parseState->pos) {
   /* got a number */
diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l
index b007657..fe18272 100644
--- a/src/mesa/shader/program_lexer.l
+++ b/src/mesa/shader/program_lexer.l
@@ -324,19 +324,19 @@ ARRAYSHADOW2D { 
return_token_or_IDENTIFIER(require_ARB_fp && require
return INTEGER;
 }
 {num}?{frac}{exp}?{
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
 {num}"."/[^.] {
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
 {num}{exp}{
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
 {num}"."{exp} {
-   yylval->real = (float) _mesa_strtod(yytext, NULL);
+   yylval->real = _mesa_strtof(yytext, NULL);
return REAL;
 }
 
diff --git a/src/mesa/shader/slang/slang_compile.c 
b/src/mesa/shader/slang/slang_compile.c
index b95c15f..ad86676 100644
--- a/src/mesa/shader/slang/slang_compile.c
+++ b/src/mesa/shader/slang/slang_compile.c
@@ -246,7 +246,7 @@ parse_general_number(slang_parse_ctx *ctx, float *number)
if (flt[strlen(flt) - 1] == 'f' || flt[strlen(flt) - 1] == 'F') {
   flt[strlen(flt) - 1] = '\0';
}
-   *number = (float)_mesa_strtod(flt, (char **)NULL);
+   *number = _mesa_strtof(flt, (char **)NULL);
free(flt);
 
return 1;
@@ -312,7 +312,7 @@ parse_float(slang_parse_ctx * C, float *number

Mesa (master): radeon: Fix buffer object unmap to be called only once for dma buffers.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: e9c2c4a76466fc1ccfbf4d5de048414f7126b940
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9c2c4a76466fc1ccfbf4d5de048414f7126b940

Author: Pauli Nieminen 
Date:   Mon Mar 15 10:30:18 2010 +0200

radeon: Fix buffer object unmap to be called only once for dma buffers.

If flush happens inside radeonRefillCurrentMaRegion the last dma buffer would
be unmapped twice. Unmapping buffer when moving buffer to wait list fixes the
mapping error.

---

 src/mesa/drivers/dri/radeon/radeon_dma.c |7 +--
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c 
b/src/mesa/drivers/dri/radeon/radeon_dma.c
index 22499bc..6b7690c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -184,9 +184,6 @@ void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, 
int size)
radeon_print(RADEON_DMA, RADEON_NORMAL, "%s size %d minimum_size %d\n",
__FUNCTION__, size, rmesa->dma.minimum_size);
 
-   if (!is_empty_list(&rmesa->dma.reserved))
-   radeon_bo_unmap(first_elem(&rmesa->dma.reserved)->bo);
-
if (is_empty_list(&rmesa->dma.free)
  || last_elem(&rmesa->dma.free)->bo->size < size) {
dma_bo = CALLOC_STRUCT(radeon_dma_bo);
@@ -336,9 +333,6 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
legacy_track_pending(rmesa->radeonScreen->bom, 0);
}
 
-   if (!is_empty_list(&rmesa->dma.reserved))
-   radeon_bo_unmap(first_elem(&rmesa->dma.reserved)->bo);
-
/* move waiting bos to free list.
   wait list provides gpu time to handle data before reuse */
foreach_s(dma_bo, temp, &rmesa->dma.wait) {
@@ -368,6 +362,7 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
 
/* move reserved to wait list */
foreach_s(dma_bo, temp, &rmesa->dma.reserved) {
+   radeon_bo_unmap(dma_bo->bo);
/* free objects that are too small to be used because of large 
request */
if (dma_bo->bo->size < rmesa->dma.minimum_size) {
   radeon_bo_unref(dma_bo->bo);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Correct GL_EQUIV code in r67/7xx.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: d320152b4786e72f0fe76ec5e8cf58b0eea91b13
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d320152b4786e72f0fe76ec5e8cf58b0eea91b13

Author: Matthew W. S. Bell 
Date:   Mon Mar 15 01:18:02 2010 +

Correct GL_EQUIV code in r67/7xx.

>From 247e121106e8d3e389f2e5a6edf13ea70ac18df7 Mon Sep 17 00:00:00 2001

These seem to be documented in
.

---

 src/mesa/drivers/dri/r600/r700_state.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_state.c 
b/src/mesa/drivers/dri/r600/r700_state.c
index 6f156b5..12eaebb 100644
--- a/src/mesa/drivers/dri/r600/r700_state.c
+++ b/src/mesa/drivers/dri/r600/r700_state.c
@@ -614,7 +614,7 @@ static GLuint translate_logicop(GLenum logicop)
case GL_XOR:
return 0x66;
case GL_EQUIV:
-   return 0xaa;
+   return 0x99;
case GL_AND_REVERSE:
return 0x44;
case GL_AND_INVERTED:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: set version string to 7.8-rc1

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: f0c32629276a0bf33eed5ba519e3536061e239ad
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0c32629276a0bf33eed5ba519e3536061e239ad

Author: Ian Romanick 
Date:   Tue Mar 16 07:38:51 2010 -0700

mesa: set version string to 7.8-rc1

---

 Makefile|2 +-
 src/mesa/main/version.h |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index c4ee9e5..37683e0 100644
--- a/Makefile
+++ b/Makefile
@@ -180,7 +180,7 @@ ultrix-gcc:
 
 # Rules for making release tarballs
 
-VERSION=7.8-devel
+VERSION=7.8-rc1
 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 d521569..7ed1e1a 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -35,7 +35,7 @@
 #define MESA_MAJOR 7
 #define MESA_MINOR 8
 #define MESA_PATCH 0
-#define MESA_VERSION_STRING "7.8-devel"
+#define MESA_VERSION_STRING "7.8-rc1"
 
 /* To make version comparison easy */
 #define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Remove nonexistant files from tarballs rule of Makefile

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: c1c9fad293eed751668fe2b34ff611af8d268131
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c1c9fad293eed751668fe2b34ff611af8d268131

Author: Ian Romanick 
Date:   Tue Mar 16 07:48:14 2010 -0700

Remove nonexistant files from tarballs rule of Makefile

The Makefile should eventually be fixed to stop building tarballs if
one of the individual calls to tar fails.

---

 Makefile |   16 +---
 1 files changed, 1 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile
index 37683e0..68b5adf 100644
--- a/Makefile
+++ b/Makefile
@@ -244,7 +244,6 @@ MAIN_FILES = \
$(DIRECTORY)/src/mesa/shader/descrip.mms\
$(DIRECTORY)/src/mesa/shader/slang/*.[ch]   \
$(DIRECTORY)/src/mesa/shader/slang/descrip.mms  \
-   $(DIRECTORY)/src/mesa/shader/slang/library/*.[ch]   \
$(DIRECTORY)/src/mesa/shader/slang/library/*.gc \
$(DIRECTORY)/src/mesa/shader/slang/library/Makefile \
$(DIRECTORY)/src/mesa/swrast/*.[ch] \
@@ -380,15 +379,6 @@ SGI_GLU_FILES = \
$(DIRECTORY)/src/glu/sgi/libtess/*.[ch] \
$(DIRECTORY)/src/glu/sgi/libutil/*.[ch]
 
-MESA_GLU_FILES = \
-   $(DIRECTORY)/src/glu/mesa/README[12]\
-   $(DIRECTORY)/src/glu/mesa/Makefile* \
-   $(DIRECTORY)/src/glu/mesa/descrip.mms   \
-   $(DIRECTORY)/src/glu/mesa/mms_depend\
-   $(DIRECTORY)/src/glu/mesa/*.def \
-   $(DIRECTORY)/src/glu/mesa/depend\
-   $(DIRECTORY)/src/glu/mesa/*.[ch]
-
 GLW_FILES = \
$(DIRECTORY)/src/glw/*.[ch] \
$(DIRECTORY)/src/glw/Makefile*  \
@@ -451,11 +441,7 @@ GLUT_FILES = \
$(DIRECTORY)/src/glut/glx/*.[ch]\
$(DIRECTORY)/src/glut/beos/*.[ch]   \
$(DIRECTORY)/src/glut/beos/*.cpp\
-   $(DIRECTORY)/src/glut/beos/Makefile \
-   $(DIRECTORY)/src/glut/fbdev/Makefile\
-   $(DIRECTORY)/src/glut/fbdev/*[ch]   \
-   $(DIRECTORY)/src/glut/mini/*[ch]\
-   $(DIRECTORY)/src/glut/mini/glut.pc.in   \
+   $(DIRECTORY)/src/glut/beos/Makefile
 
 DEPEND_FILES = \
$(TOP)/src/mesa/depend  \

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Fix the response len of masked sampler messages for 8-wide dispatch.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 7ee4db50b10ab2d8fdfc4781f26b84041cf568d7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ee4db50b10ab2d8fdfc4781f26b84041cf568d7

Author: Eric Anholt 
Date:   Wed Mar 10 10:38:20 2010 -0800

i965: Fix the response len of masked sampler messages for 8-wide dispatch.

The bad response length would hang the GPU with a masked sample in a
shader using control flow.  For 8-wide, the response length is always
4, and masked slots are just not written to.  brw_wm_glsl.c already
allocates registers in the right locations.

Fixes piglit glsl-fs-bug25902 (fd.o bug #25902).
(cherry picked from commit f6d210c284751ac50a8d6358de7e75a1ff1e4ac7)
(cherry picked from commit dc8c0359448cdae7b367552ba58783c04b199778)

---

 src/mesa/drivers/dri/i965/brw_eu_emit.c |   18 +++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c 
b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index f69d529..82f2fda 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -1290,7 +1290,7 @@ void brw_SAMPLE(struct brw_compile *p,
GLuint simd_mode)
 {
GLboolean need_stall = 0;
-   
+
if (writemask == 0) {
   /*printf("%s: zero writemask??\n", __FUNCTION__); */
   return;
@@ -1327,8 +1327,14 @@ void brw_SAMPLE(struct brw_compile *p,
  /* printf("need stall %x %x\n", newmask , writemask); */
   }
   else {
+GLboolean dispatch_16 = GL_FALSE;
+
 struct brw_reg m1 = brw_message_reg(msg_reg_nr);
-
+
+guess_execution_size(p->current, dest);
+if (p->current->header.execution_size == BRW_EXECUTE_16)
+   dispatch_16 = GL_TRUE;
+
 newmask = ~newmask & WRITEMASK_XYZW;
 
 brw_push_insn_state(p);
@@ -1343,7 +1349,13 @@ void brw_SAMPLE(struct brw_compile *p,
 
 src0 = retype(brw_null_reg(), BRW_REGISTER_TYPE_UW); 
 dest = offset(dest, dst_offset);
-response_length = len * 2;
+
+/* For 16-wide dispatch, masked channels are skipped in the
+ * response.  For 8-wide, masked channels still take up slots,
+ * and are just not written to.
+ */
+if (dispatch_16)
+   response_length = len * 2;
   }
}
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Add support for the CMP opcode in the GLSL path.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 837f003eeb1ce56c2d8285e82ee86b5ffbb19442
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=837f003eeb1ce56c2d8285e82ee86b5ffbb19442

Author: Eric Anholt 
Date:   Wed Mar 10 11:00:40 2010 -0800

i965: Add support for the CMP opcode in the GLSL path.

This would be triggered by use of sqrt() along with control flow.
Fixes piglit-fs-sqrt-branch and a bug in Yo Frankie!.
(cherry picked from commit 48dca99feb394febc3af44e14f23fb12a9cc9204)

---

 src/mesa/drivers/dri/i965/brw_wm.h  |6 ++
 src/mesa/drivers/dri/i965/brw_wm_emit.c |   12 ++--
 src/mesa/drivers/dri/i965/brw_wm_glsl.c |3 +++
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm.h 
b/src/mesa/drivers/dri/i965/brw_wm.h
index 88d84ee..47b764d 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.h
+++ b/src/mesa/drivers/dri/i965/brw_wm.h
@@ -328,6 +328,12 @@ void emit_cinterp(struct brw_compile *p,
  const struct brw_reg *dst,
  GLuint mask,
  const struct brw_reg *arg0);
+void emit_cmp(struct brw_compile *p,
+ const struct brw_reg *dst,
+ GLuint mask,
+ const struct brw_reg *arg0,
+ const struct brw_reg *arg1,
+ const struct brw_reg *arg2);
 void emit_ddxy(struct brw_compile *p,
   const struct brw_reg *dst,
   GLuint mask,
diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c 
b/src/mesa/drivers/dri/i965/brw_wm_emit.c
index 9315bca..c7d87b9 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c
@@ -566,12 +566,12 @@ static void emit_sne( struct brw_compile *p,
emit_sop(p, dst, mask, BRW_CONDITIONAL_NEQ, arg0, arg1);
 }
 
-static void emit_cmp( struct brw_compile *p, 
- const struct brw_reg *dst,
- GLuint mask,
- const struct brw_reg *arg0,
- const struct brw_reg *arg1,
- const struct brw_reg *arg2 )
+void emit_cmp(struct brw_compile *p,
+ const struct brw_reg *dst,
+ GLuint mask,
+ const struct brw_reg *arg0,
+ const struct brw_reg *arg1,
+ const struct brw_reg *arg2)
 {
GLuint i;
 
diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c 
b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
index 562608e..a42e6bf 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
@@ -1960,6 +1960,9 @@ static void brw_wm_emit_glsl(struct brw_context *brw, 
struct brw_wm_compile *c)
case OPCODE_LG2:
emit_math1(c, BRW_MATH_FUNCTION_LOG, dst, dst_flags, args[0]);
break;
+   case OPCODE_CMP:
+   emit_cmp(p, dst, dst_flags, args[0], args[1], args[2]);
+   break;
case OPCODE_MIN:
unalias2(c, emit_min, dst, dst_flags, args[0], args[1]);
break;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Fix up VP constbuf leak on program delete.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 009392f50db7ae0f6ef1fcbff268d5b833852074
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=009392f50db7ae0f6ef1fcbff268d5b833852074

Author: Eric Anholt 
Date:   Mon Mar  8 16:08:33 2010 -0800

i965: Fix up VP constbuf leak on program delete.
(cherry picked from commit 7f6d2754d586545ab6c970acffdd897294879039)

---

 src/mesa/drivers/dri/i965/brw_program.c |   14 +++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_program.c 
b/src/mesa/drivers/dri/i965/brw_program.c
index c78f7b3..1fd957b 100644
--- a/src/mesa/drivers/dri/i965/brw_program.c
+++ b/src/mesa/drivers/dri/i965/brw_program.c
@@ -95,9 +95,17 @@ static void brwDeleteProgram( GLcontext *ctx,
  struct gl_program *prog )
 {
if (prog->Target == GL_FRAGMENT_PROGRAM_ARB) {
-  struct gl_fragment_program *fprog = (struct gl_fragment_program *) prog;
-  struct brw_fragment_program *brw_fprog = brw_fragment_program(fprog);
-  dri_bo_unreference(brw_fprog->const_buffer);
+  struct gl_fragment_program *fp = (struct gl_fragment_program *) prog;
+  struct brw_fragment_program *brw_fp = brw_fragment_program(fp);
+
+  dri_bo_unreference(brw_fp->const_buffer);
+   }
+
+   if (prog->Target == GL_VERTEX_PROGRAM_ARB) {
+  struct gl_vertex_program *vp = (struct gl_vertex_program *) prog;
+  struct brw_vertex_program *brw_vp = brw_vertex_program(vp);
+
+  dri_bo_unreference(brw_vp->const_buffer);
}
 
_mesa_delete_program( ctx, prog );

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Fix up the handling of point sprite coordinate replacement.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 1254d3d315497636a2445533372dd3d1fa6f96dc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1254d3d315497636a2445533372dd3d1fa6f96dc

Author: Eric Anholt 
Date:   Mon Mar  8 12:12:31 2010 -0800

i965: Fix up the handling of point sprite coordinate replacement.

The code was walking over the regs of pairs of attributes and checking
whether the attribute with a given reg index had point sprite enabled.
So the point sprite setup code was rarely even getting executed.
Instead, we need to determine which channels of a reg need point
sprite coordinate replacement.  In addition, it was multiplying the
attribute by 1/w, when it's supposed to cover (0, 1) in each direction
regardless of w, and it wasn't filling in the Z and W components of
the texcoord as specified.

Fixes piglit point-sprite and the spriteblast demo.  Bug #24431, #22245.
(cherry picked from commit bc632d04370566c1156cbd0345fe303834f0b910)

---

 src/mesa/drivers/dri/i965/brw_sf.c  |   21 +++---
 src/mesa/drivers/dri/i965/brw_sf.h  |6 +-
 src/mesa/drivers/dri/i965/brw_sf_emit.c |  135 +++
 3 files changed, 96 insertions(+), 66 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_sf.c 
b/src/mesa/drivers/dri/i965/brw_sf.c
index 8e6839b..57d1c29 100644
--- a/src/mesa/drivers/dri/i965/brw_sf.c
+++ b/src/mesa/drivers/dri/i965/brw_sf.c
@@ -46,7 +46,6 @@
 static void compile_sf_prog( struct brw_context *brw,
 struct brw_sf_prog_key *key )
 {
-   GLcontext *ctx = &brw->intel.ctx;
struct brw_sf_compile c;
const GLuint *program;
GLuint program_size;
@@ -69,20 +68,14 @@ static void compile_sf_prog( struct brw_context *brw,
 
/* Construct map from attribute number to position in the vertex.
 */
-   for (i = idx = 0; i < VERT_RESULT_MAX; i++) 
+   for (i = idx = 0; i < VERT_RESULT_MAX; i++) {
   if (c.key.attrs & BITFIELD64_BIT(i)) {
 c.attr_to_idx[i] = idx;
 c.idx_to_attr[idx] = i;
-if (i >= VERT_RESULT_TEX0 && i <= VERT_RESULT_TEX7) {
-c.point_attrs[i].CoordReplace = 
-   ctx->Point.CoordReplace[i - VERT_RESULT_TEX0];
-}
- else {
-c.point_attrs[i].CoordReplace = GL_FALSE;
- }
 idx++;
   }
-   
+   }
+
/* Which primitive?  Or all three? 
 */
switch (key->primitive) {
@@ -162,6 +155,14 @@ static void upload_sf_prog(struct brw_context *brw)
}
 
key.do_point_sprite = ctx->Point.PointSprite;
+   if (key.do_point_sprite) {
+  int i;
+
+  for (i = 0; i < 8; i++) {
+if (ctx->Point.CoordReplace[i])
+   key.point_sprite_coord_replace |= (1 << i);
+  }
+   }
key.sprite_origin_lower_left = (ctx->Point.SpriteOrigin == GL_LOWER_LEFT);
/* _NEW_LIGHT */
key.do_flat_shading = (ctx->Light.ShadeModel == GL_FLAT);
diff --git a/src/mesa/drivers/dri/i965/brw_sf.h 
b/src/mesa/drivers/dri/i965/brw_sf.h
index 0ba731f..a0680a5 100644
--- a/src/mesa/drivers/dri/i965/brw_sf.h
+++ b/src/mesa/drivers/dri/i965/brw_sf.h
@@ -46,6 +46,7 @@
 
 struct brw_sf_prog_key {
GLbitfield64 attrs;
+   uint8_t point_sprite_coord_replace;
GLuint primitive:2;
GLuint do_twoside_color:1;
GLuint do_flat_shading:1;
@@ -56,10 +57,6 @@ struct brw_sf_prog_key {
GLuint pad:24;
 };
 
-struct brw_sf_point_tex {
-   GLboolean CoordReplace; 
-};
-
 struct brw_sf_compile {
struct brw_compile func;
struct brw_sf_prog_key key;
@@ -100,7 +97,6 @@ struct brw_sf_compile {
 
GLubyte attr_to_idx[VERT_RESULT_MAX];   
GLubyte idx_to_attr[VERT_RESULT_MAX];   
-   struct brw_sf_point_tex point_attrs[VERT_RESULT_MAX];
 };
 
  
diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c 
b/src/mesa/drivers/dri/i965/brw_sf_emit.c
index bb08055..56f7c98 100644
--- a/src/mesa/drivers/dri/i965/brw_sf_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_sf_emit.c
@@ -354,6 +354,33 @@ static GLboolean calculate_masks( struct brw_sf_compile *c,
return is_last_attr;
 }
 
+/* Calculates the predicate control for which channels of a reg
+ * (containing 2 attrs) to do point sprite coordinate replacement on.
+ */
+static uint16_t
+calculate_point_sprite_mask(struct brw_sf_compile *c, GLuint reg)
+{
+   int attr1, attr2;
+   uint16_t pc = 0;
+
+   attr1 = c->idx_to_attr[reg * 2];
+   if (attr1 >= VERT_RESULT_TEX0 && attr1 <= VERT_RESULT_TEX7) {
+  if (c->key.point_sprite_coord_replace & (1 << (attr1 - 
VERT_RESULT_TEX0)))
+pc |= 0x0f;
+   }
+
+   if (reg * 2 + 1 < c->nr_setup_attrs) {
+   attr2 = c->idx_to_attr[reg * 2 + 1];
+   if (attr2 >= VERT_RESULT_TEX0 && attr2 <= VERT_RESULT_TEX7) {
+ if (c->key.point_sprite_coord_replace & (1 << (attr2 -
+VERT_RESULT_TEX0)))
+pc |= 0xf0;
+   }
+   }
+
+   return pc;
+}
+
 
 
 void brw_emit_tri_setup( struct brw_sf_compile *c, GLboolean allocate)
@@ -529,22 +556,27 @@ void brw_emit_point_s

Mesa (master): i965: Fix nested loops in the VS.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: d24f59d0081074ae9c4532949e75147447c8a82a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d24f59d0081074ae9c4532949e75147447c8a82a

Author: Eric Anholt 
Date:   Tue Mar  9 09:56:42 2010 -0800

i965: Fix nested loops in the VS.

We were patching up all the break and continues between the start of
our loop and the end of our loop, even if they were breaks/continues
for an inner loop.  Avoiding patching already patched breaks/continues
fixes piglit glsl-vs-loop-nested.
(cherry picked from commit f6f547d87ea68f44c50a0b0231b7360ca94b2975)

---

 src/mesa/drivers/dri/i965/brw_vs_emit.c |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c 
b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index a7c4b58..a48804a 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -1717,11 +1717,13 @@ void brw_vs_emit(struct brw_vs_compile *c )
 /* patch all the BREAK/CONT instructions from last BEGINLOOP */
 while (inst0 > loop_inst[loop_depth]) {
inst0--;
-   if (inst0->header.opcode == BRW_OPCODE_BREAK) {
+   if (inst0->header.opcode == BRW_OPCODE_BREAK &&
+  inst0->bits3.if_else.jump_count == 0) {
   inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1);
   inst0->bits3.if_else.pop_count = 0;
}
-   else if (inst0->header.opcode == BRW_OPCODE_CONTINUE) {
+   else if (inst0->header.opcode == BRW_OPCODE_CONTINUE &&
+   inst0->bits3.if_else.jump_count == 0) {
   inst0->bits3.if_else.jump_count = br * (inst1 - inst0);
   inst0->bits3.if_else.pop_count = 0;
}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Unalias all GLSL source regs from the destination regs used.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 42e0e8686688ff91e92fa4ac46c6dacb2d5f2140
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=42e0e8686688ff91e92fa4ac46c6dacb2d5f2140

Author: Eric Anholt 
Date:   Tue Mar  9 11:56:14 2010 -0800

i965: Unalias all GLSL source regs from the destination regs used.

We were doing it ad-hoc before, as instructions with potential
aliasing problems were identified.  But thanks to swizzling basically
anything can have aliasing, so just do it generally at source reg
setup time.  This is somewhat inefficient, because sometimes an
operation doesn't need unaliasing protection if the swizzling is safe,
but the unaliasing before didn't cover those cases either.

Fixes piglit glsl-fs-loop.
(cherry picked from commit 6b194dab6b4d9f12cdd54c699b23c0d3420a49c2)

---

 src/mesa/drivers/dri/i965/brw_wm_glsl.c |  138 ++-
 1 files changed, 25 insertions(+), 113 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c 
b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
index a42e6bf..e3e6f66 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
@@ -614,112 +614,6 @@ static void invoke_subroutine( struct brw_wm_compile *c,
 }
 }
 
-/* Workaround for using brw_wm_emit.c's emit functions, which expect
- * destination regs to be uniquely written.  Moves arguments out to
- * temporaries as necessary for instructions which use their destination as
- * a temporary.
- */
-static void
-unalias3(struct brw_wm_compile *c,
-void (*func)(struct brw_compile *c,
- const struct brw_reg *dst,
- GLuint mask,
- const struct brw_reg *arg0,
- const struct brw_reg *arg1,
- const struct brw_reg *arg2),
-const struct brw_reg *dst,
-GLuint mask,
-const struct brw_reg *arg0,
-const struct brw_reg *arg1,
-const struct brw_reg *arg2)
-{
-struct brw_compile *p = &c->func;
-struct brw_reg tmp_arg0[4], tmp_arg1[4], tmp_arg2[4];
-int i, j;
-int mark = mark_tmps(c);
-
-for (j = 0; j < 4; j++) {
-   tmp_arg0[j] = arg0[j];
-   tmp_arg1[j] = arg1[j];
-   tmp_arg2[j] = arg2[j];
-}
-
-for (i = 0; i < 4; i++) {
-   if (mask & (1cur_inst = i;
 
@@ -1866,7 +1776,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, 
struct brw_wm_compile *c)
   }
}
for (j = 0; j < brw_wm_nr_args(inst->Opcode); j++)
-   get_argument_regs(c, inst, j, args[j], WRITEMASK_XYZW);
+   get_argument_regs(c, inst, j, dst, args[j], WRITEMASK_XYZW);
 
dst_flags = inst->DstReg.WriteMask;
if (inst->SaturateMode == SATURATE_ZERO_ONE)
@@ -1920,8 +1830,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, 
struct brw_wm_compile *c)
emit_alu1(p, brw_RNDD, dst, dst_flags, args[0]);
break;
case OPCODE_LRP:
-   unalias3(c, emit_lrp,
-dst, dst_flags, args[0], args[1], args[2]);
+   emit_lrp(p, dst, dst_flags, args[0], args[1], args[2]);
break;
case OPCODE_TRUNC:
emit_alu1(p, brw_RNDZ, dst, dst_flags, args[0]);
@@ -1964,10 +1873,10 @@ static void brw_wm_emit_glsl(struct brw_context *brw, 
struct brw_wm_compile *c)
emit_cmp(p, dst, dst_flags, args[0], args[1], args[2]);
break;
case OPCODE_MIN:
-   unalias2(c, emit_min, dst, dst_flags, args[0], args[1]);
+   emit_min(p, dst, dst_flags, args[0], args[1]);
break;
case OPCODE_MAX:
-   unalias2(c, emit_max, dst, dst_flags, args[0], args[1]);
+   emit_max(p, dst, dst_flags, args[0], args[1]);
bre

Mesa (master): i965: Fix ENDLOOP to only patch up this loop' s BREAK and CONT.

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: a29c7948d965ad274ae7ac98fe01f2f877b19d94
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a29c7948d965ad274ae7ac98fe01f2f877b19d94

Author: Eric Anholt 
Date:   Tue Mar  9 14:22:51 2010 -0800

i965: Fix ENDLOOP to only patch up this loop's BREAK and CONT.

Corresponds to d225a25e21a24508aea3b877c78beb35502e942d and fixes
piglit glsl-fs-loop-nested.  Bug #25173.
(cherry picked from commit a81836ee2fe5092d695b717addf8cec91f569777)

---

 src/mesa/drivers/dri/i965/brw_wm_glsl.c |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c 
b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
index e3e6f66..315b030 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
@@ -2015,11 +2015,13 @@ static void brw_wm_emit_glsl(struct brw_context *brw, 
struct brw_wm_compile *c)
   /* patch all the BREAK/CONT instructions from last BGNLOOP */
   while (inst0 > loop_inst[loop_depth]) {
  inst0--;
- if (inst0->header.opcode == BRW_OPCODE_BREAK) {
+ if (inst0->header.opcode == BRW_OPCODE_BREAK &&
+inst0->bits3.if_else.jump_count == 0) {
inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 
1);
inst0->bits3.if_else.pop_count = 0;
  }
- else if (inst0->header.opcode == BRW_OPCODE_CONTINUE) {
+ else if (inst0->header.opcode == BRW_OPCODE_CONTINUE &&
+ inst0->bits3.if_else.jump_count == 0) {
 inst0->bits3.if_else.jump_count = br * (inst1 - inst0);
 inst0->bits3.if_else.pop_count = 0;
  }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Merge branch '7.8' into master

2010-03-17 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: f0f04cd12db156ec53b7ea46fae27199af121f90
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0f04cd12db156ec53b7ea46fae27199af121f90

Author: Pauli Nieminen 
Date:   Wed Mar 17 11:26:48 2010 +0200

Merge branch '7.8' into master

Conflicts:
Makefile
src/mesa/main/version.h

---



___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): tests: Add test for huge client arrays that has to be split.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: a81cd67a4f37233319281a69385f07feaa97fd13
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a81cd67a4f37233319281a69385f07feaa97fd13

Author: Pauli Nieminen 
Date:   Sun Mar 21 13:11:47 2010 +0200

tests: Add test for huge client arrays that has to be split.

When running this test case in valgrind report includes read of unitialized
value in _tnl_draw_prims. The bug doesn't cause any vissible errors.

Bug is caused by vbo_split_copy that is calling draw function with max_index
one past the end instead of the end.

---

 progs/tests/Makefile   |1 +
 progs/tests/cva_huge.c |  236 
 2 files changed, 237 insertions(+), 0 deletions(-)

diff --git a/progs/tests/Makefile b/progs/tests/Makefile
index 67efc3b..6bb0249 100644
--- a/progs/tests/Makefile
+++ b/progs/tests/Makefile
@@ -41,6 +41,7 @@ SOURCES = \
copypixrate.c \
crossbar.c \
cva.c \
+   cva_huge.c \
cylwrap.c \
drawbuffers.c \
drawbuffers2.c \
diff --git a/progs/tests/cva_huge.c b/progs/tests/cva_huge.c
new file mode 100644
index 000..da63596
--- /dev/null
+++ b/progs/tests/cva_huge.c
@@ -0,0 +1,236 @@
+/*
+ * Copyright © 2010 Pauli Nieminen
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+
+/*
+ * Test case for huge cva arrays. Mesa code has to split this to multiple VBOs
+ * which had memory access error.
+ * This test case doesn't render incorrectly but valgrind showed the memory
+ * access error.
+ */
+
+#include 
+#include 
+#include 
+#ifdef __VMS
+# include/* for ptrdiff_t, referenced by GL.h when 
GL_GLEXT_LEGACY defined */
+#else
+# include/* for ptrdiff_t, referenced by GL.h when 
GL_GLEXT_LEGACY defined */
+#endif
+#ifdef _WIN32
+#include 
+#endif
+#define GL_GLEXT_LEGACY
+#include 
+
+GLfloat *verts;
+
+GLubyte *color;
+
+GLuint *indices;
+
+#define rows 1000 /* Create 1000x1000 vertex grid */
+#define row_width 5000.0
+#define grid_depth -50.0
+GLuint nr_verts_in_row = rows; 
+GLuint nr_indices_in_strip = rows * 2;
+
+GLboolean double_buffer;
+GLboolean compiled = GL_TRUE;
+
+static void generate_verts( void )
+{
+   unsigned x, y;
+   GLfloat step = row_width /(GLfloat)(nr_verts_in_row - 1); 
+   verts = malloc(sizeof(verts[0]) * 4 * nr_verts_in_row * 
nr_verts_in_row);
+
+   for (y = 0; y < nr_verts_in_row; ++y) {
+   for (x = 0; x < nr_verts_in_row; ++x) {
+   unsigned idx = 4*(x + y * nr_verts_in_row);
+   verts[idx + 0] = step * x - row_width/2.0;
+   verts[idx + 1] = step * y - row_width/2.0;
+   /* deep enough not to be vissible */
+   verts[idx + 2] = grid_depth;
+   verts[idx + 3] = 0.0;
+   }
+   }
+   glVertexPointer( 3, GL_FLOAT, sizeof(verts[0])*4, verts );
+}
+
+static void generate_colors( void )
+{
+   unsigned x, y;
+   GLfloat step = 255.0/(GLfloat)(nr_verts_in_row - 1);
+   color = malloc(sizeof(color[0]) * 4 * nr_verts_in_row * 
nr_verts_in_row);
+
+   for (y = 0; y < nr_verts_in_row; ++y) {
+   for (x = 0; x < nr_verts_in_row; ++x) {
+   unsigned idx = 4*(x + y * nr_verts_in_row);
+   color[idx + 0] = (GLubyte)(step * x);
+   color[idx + 1] = 0x00;
+   color[idx + 2] = (GLubyte)(step * y);
+   color[idx + 3] = 0x00;
+   }
+   }
+   glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color );
+}
+
+static void generate_indices( void )
+{
+   unsigned strip, i;
+
+   /* indice size * number of strips * number of indices in strip */
+   indices = malloc(sizeof(indices[0]) * (nr_verts_in_row - 1) *
+   (nr_indices_i

Mesa (7.8): vbo: Fix vbo_split_copy to pass correct max_index to draw.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: 9a7acbccfbc061322be493633d5c5bf4afd302b5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a7acbccfbc061322be493633d5c5bf4afd302b5

Author: Pauli Nieminen 
Date:   Sun Mar 21 12:42:10 2010 +0200

vbo: Fix vbo_split_copy to pass correct max_index to draw.

vbo_split_copy was passing one past the max_index to draw function
which caused _tnl_draw_prims function to read uninitialized values
from copied array.

Bug was spoted in valgrind report of progs/tests/cva_huge.

---

 src/mesa/vbo/vbo_split_copy.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/vbo/vbo_split_copy.c b/src/mesa/vbo/vbo_split_copy.c
index bce4017..2ec7d9b 100644
--- a/src/mesa/vbo/vbo_split_copy.c
+++ b/src/mesa/vbo/vbo_split_copy.c
@@ -196,7 +196,7 @@ flush( struct copy_context *copy )
   ©->dstib,
   GL_TRUE,
   0,
-  copy->dstbuf_nr );
+  copy->dstbuf_nr - 1 );
 
/* Reset all pointers: 
 */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): vbo: Fix vbo_split_copy to pass correct max_index to draw.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 4ff3244457fb92d269fe488d225fce17f1b5d48c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ff3244457fb92d269fe488d225fce17f1b5d48c

Author: Pauli Nieminen 
Date:   Sun Mar 21 12:42:10 2010 +0200

vbo: Fix vbo_split_copy to pass correct max_index to draw.

vbo_split_copy was passing one past the max_index to draw function
which caused _tnl_draw_prims function to read uninitialized values
from copied array.

Bug was spoted in valgrind report of progs/tests/cva_huge.

---

 src/mesa/vbo/vbo_split_copy.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/vbo/vbo_split_copy.c b/src/mesa/vbo/vbo_split_copy.c
index 2ca1112..67291ea 100644
--- a/src/mesa/vbo/vbo_split_copy.c
+++ b/src/mesa/vbo/vbo_split_copy.c
@@ -196,7 +196,7 @@ flush( struct copy_context *copy )
   ©->dstib,
   GL_TRUE,
   0,
-  copy->dstbuf_nr );
+  copy->dstbuf_nr - 1 );
 
/* Reset all pointers: 
 */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r200: Fix mixed indetion in r200TclFallback.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 501156b36bed203a0e77ffb1be81a04c5598d1bc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=501156b36bed203a0e77ffb1be81a04c5598d1bc

Author: Pauli Nieminen 
Date:   Sun Mar 21 20:02:10 2010 +0200

r200: Fix mixed indetion in r200TclFallback.

---

 src/mesa/drivers/dri/r200/r200_tcl.c |   41 -
 1 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index e7d48a7..1594344 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -688,25 +688,24 @@ static char *getFallbackString(GLuint bit)
 
 void r200TclFallback( GLcontext *ctx, GLuint bit, GLboolean mode )
 {
-   r200ContextPtr rmesa = R200_CONTEXT(ctx);
-   GLuint oldfallback = rmesa->radeon.TclFallback;
-
-   if (mode) {
-  rmesa->radeon.TclFallback |= bit;
-  if (oldfallback == 0) {
-if (R200_DEBUG & RADEON_FALLBACKS)
-   fprintf(stderr, "R200 begin tcl fallback %s\n",
-   getFallbackString( bit ));
-transition_to_swtnl( ctx );
-  }
-   }
-   else {
-  rmesa->radeon.TclFallback &= ~bit;
-  if (oldfallback == bit) {
-if (R200_DEBUG & RADEON_FALLBACKS)
-   fprintf(stderr, "R200 end tcl fallback %s\n",
-   getFallbackString( bit ));
-transition_to_hwtnl( ctx );
-  }
-   }
+   r200ContextPtr rmesa = R200_CONTEXT(ctx);
+   GLuint oldfallback = rmesa->radeon.TclFallback;
+
+   if (mode) {
+   rmesa->radeon.TclFallback |= bit;
+   if (oldfallback == 0) {
+   if (R200_DEBUG & RADEON_FALLBACKS)
+   fprintf(stderr, "R200 begin tcl fallback %s\n",
+   getFallbackString( bit ));
+   transition_to_swtnl( ctx );
+   }
+   } else {
+   rmesa->radeon.TclFallback &= ~bit;
+   if (oldfallback == bit) {
+   if (R200_DEBUG & RADEON_FALLBACKS)
+   fprintf(stderr, "R200 end tcl fallback %s\n",
+   getFallbackString( bit ));
+   transition_to_hwtnl( ctx );
+   }
+   }
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r200: Fix swtnl fallback to flush pending rendering before transition.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 2ae754b7b97c56709a7f12f017bf846a9e1456aa
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ae754b7b97c56709a7f12f017bf846a9e1456aa

Author: Pauli Nieminen 
Date:   Sun Mar 21 20:16:17 2010 +0200

r200: Fix swtnl fallback to flush pending rendering before transition.

Flush after transition would emit wrong state that could cause
wrong state emited for pending rendering operation.

Fixes wan once from extrement tuxracer that is using per vertex
materials.

---

 src/mesa/drivers/dri/r200/r200_tcl.c |   18 ++
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index 1594344..46dce98 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -692,20 +692,30 @@ void r200TclFallback( GLcontext *ctx, GLuint bit, 
GLboolean mode )
GLuint oldfallback = rmesa->radeon.TclFallback;
 
if (mode) {
-   rmesa->radeon.TclFallback |= bit;
if (oldfallback == 0) {
+   /* We have to flush before transition */
+   if ( rmesa->radeon.dma.flush )
+   rmesa->radeon.dma.flush( rmesa->radeon.glCtx );
+
if (R200_DEBUG & RADEON_FALLBACKS)
fprintf(stderr, "R200 begin tcl fallback %s\n",
getFallbackString( bit ));
+   rmesa->radeon.TclFallback |= bit;
transition_to_swtnl( ctx );
-   }
+   } else
+   rmesa->radeon.TclFallback |= bit;
} else {
-   rmesa->radeon.TclFallback &= ~bit;
if (oldfallback == bit) {
+   /* We have to flush before transition */
+   if ( rmesa->radeon.dma.flush )
+   rmesa->radeon.dma.flush( rmesa->radeon.glCtx );
+
if (R200_DEBUG & RADEON_FALLBACKS)
fprintf(stderr, "R200 end tcl fallback %s\n",
getFallbackString( bit ));
+   rmesa->radeon.TclFallback &= ~bit;
transition_to_hwtnl( ctx );
-   }
+   } else
+   rmesa->radeon.TclFallback &= ~bit;
}
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): r200: Fix mixed indetion in r200TclFallback.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: 44e3ec3c05f0806f0940887ed9e30d94bf0748e0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=44e3ec3c05f0806f0940887ed9e30d94bf0748e0

Author: Pauli Nieminen 
Date:   Sun Mar 21 20:02:10 2010 +0200

r200: Fix mixed indetion in r200TclFallback.

---

 src/mesa/drivers/dri/r200/r200_tcl.c |   41 -
 1 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index f3f558b..41b68cc 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -687,25 +687,24 @@ static char *getFallbackString(GLuint bit)
 
 void r200TclFallback( GLcontext *ctx, GLuint bit, GLboolean mode )
 {
-   r200ContextPtr rmesa = R200_CONTEXT(ctx);
-   GLuint oldfallback = rmesa->radeon.TclFallback;
-
-   if (mode) {
-  rmesa->radeon.TclFallback |= bit;
-  if (oldfallback == 0) {
-if (R200_DEBUG & RADEON_FALLBACKS)
-   fprintf(stderr, "R200 begin tcl fallback %s\n",
-   getFallbackString( bit ));
-transition_to_swtnl( ctx );
-  }
-   }
-   else {
-  rmesa->radeon.TclFallback &= ~bit;
-  if (oldfallback == bit) {
-if (R200_DEBUG & RADEON_FALLBACKS)
-   fprintf(stderr, "R200 end tcl fallback %s\n",
-   getFallbackString( bit ));
-transition_to_hwtnl( ctx );
-  }
-   }
+   r200ContextPtr rmesa = R200_CONTEXT(ctx);
+   GLuint oldfallback = rmesa->radeon.TclFallback;
+
+   if (mode) {
+   rmesa->radeon.TclFallback |= bit;
+   if (oldfallback == 0) {
+   if (R200_DEBUG & RADEON_FALLBACKS)
+   fprintf(stderr, "R200 begin tcl fallback %s\n",
+   getFallbackString( bit ));
+   transition_to_swtnl( ctx );
+   }
+   } else {
+   rmesa->radeon.TclFallback &= ~bit;
+   if (oldfallback == bit) {
+   if (R200_DEBUG & RADEON_FALLBACKS)
+   fprintf(stderr, "R200 end tcl fallback %s\n",
+   getFallbackString( bit ));
+   transition_to_hwtnl( ctx );
+   }
+   }
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): r200: Fix swtnl fallback to flush pending rendering before transition.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: 1968d8f31d0ac83557c9366dea39b15e92bb1516
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1968d8f31d0ac83557c9366dea39b15e92bb1516

Author: Pauli Nieminen 
Date:   Sun Mar 21 20:16:17 2010 +0200

r200: Fix swtnl fallback to flush pending rendering before transition.

Flush after transition would emit wrong state that could cause
wrong state emited for pending rendering operation.

Fixes wan once from extrement tuxracer that is using per vertex
materials.

---

 src/mesa/drivers/dri/r200/r200_tcl.c |   18 ++
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index 41b68cc..f52e4fe 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -691,20 +691,30 @@ void r200TclFallback( GLcontext *ctx, GLuint bit, 
GLboolean mode )
GLuint oldfallback = rmesa->radeon.TclFallback;
 
if (mode) {
-   rmesa->radeon.TclFallback |= bit;
if (oldfallback == 0) {
+   /* We have to flush before transition */
+   if ( rmesa->radeon.dma.flush )
+   rmesa->radeon.dma.flush( rmesa->radeon.glCtx );
+
if (R200_DEBUG & RADEON_FALLBACKS)
fprintf(stderr, "R200 begin tcl fallback %s\n",
getFallbackString( bit ));
+   rmesa->radeon.TclFallback |= bit;
transition_to_swtnl( ctx );
-   }
+   } else
+   rmesa->radeon.TclFallback |= bit;
} else {
-   rmesa->radeon.TclFallback &= ~bit;
if (oldfallback == bit) {
+   /* We have to flush before transition */
+   if ( rmesa->radeon.dma.flush )
+   rmesa->radeon.dma.flush( rmesa->radeon.glCtx );
+
if (R200_DEBUG & RADEON_FALLBACKS)
fprintf(stderr, "R200 end tcl fallback %s\n",
getFallbackString( bit ));
+   rmesa->radeon.TclFallback &= ~bit;
transition_to_hwtnl( ctx );
-   }
+   } else
+   rmesa->radeon.TclFallback &= ~bit;
}
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r200: Don't flush when closing elts in KMS.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 7e24ce2d9b0aa3ca19449b9ace56e89c25bc0f76
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e24ce2d9b0aa3ca19449b9ace56e89c25bc0f76

Author: Pauli Nieminen 
Date:   Sun Mar 21 22:55:13 2010 +0200

r200: Don't flush when closing elts in KMS.

Flush in middle of rendering in KMS is not allowed because
buffers are discarded in flush.

Fixes crash when emiting split indices with RADEON_DEBUG=all.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index d545363..39748a2 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -193,7 +193,8 @@ void r200FlushElts(GLcontext *ctx)
if (R200_ELT_BUF_SZ > elt_used)
  radeonReturnDmaRegion(&rmesa->radeon, R200_ELT_BUF_SZ - elt_used);
 
-   if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)) {
+   if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)
+   && !rmesa->radeon.radeonScreen->kernel_mm) {
   radeon_print(RADEON_SYNC, RADEON_NORMAL, "%s: Syncing\n", __FUNCTION__);
   radeonFinish( rmesa->radeon.glCtx );
}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r200: Fix emit size prediction to account elt splitting.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 415d0326bb9eea0d8c2b837ca767dc9b829d917c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=415d0326bb9eea0d8c2b837ca767dc9b829d917c

Author: Pauli Nieminen 
Date:   Sun Mar 21 23:23:21 2010 +0200

r200: Fix emit size prediction to account elt splitting.

Emit sizes prediction didn't account for render splitting in
hwtnl path.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c |2 +-
 src/mesa/drivers/dri/r200/r200_tcl.c|5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 39748a2..6170128 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -194,7 +194,7 @@ void r200FlushElts(GLcontext *ctx)
  radeonReturnDmaRegion(&rmesa->radeon, R200_ELT_BUF_SZ - elt_used);
 
if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)
-   && !rmesa->radeon.radeonScreen->kernel_mm) {
+ && !rmesa->radeon.radeonScreen->kernel_mm) {
   radeon_print(RADEON_SYNC, RADEON_NORMAL, "%s: Syncing\n", __FUNCTION__);
   radeonFinish( rmesa->radeon.glCtx );
}
diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index 46dce98..be72627 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -405,8 +405,9 @@ static GLuint r200EnsureEmitSize( GLcontext * ctx , 
GLubyte* vimap_rev )
  rendering code may decide convert to elts.
 In that case we have to make pessimistic prediction.
 and use larger of 2 paths. */
-  const GLuint elts = ELTS_BUFSZ(nr_aos);
-  const GLuint index = INDEX_BUFSZ;
+  const GLuint elt_count =(VB->Primitive[i].count/GET_MAX_HW_ELTS() + 1);
+  const GLuint elts = ELTS_BUFSZ(nr_aos) * elt_count;
+  const GLuint index = INDEX_BUFSZ * elt_count;
   const GLuint vbuf = VBUF_BUFSZ;
   if ( (!VB->Elts && VB->Primitive[i].count >= MAX_CONVERSION_SIZE)
  || vbuf > index + elts)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): r200: Fix emit size prediction to account elt splitting.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: 4ea694a26b99835d0b5bc814cf024850874a9a83
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ea694a26b99835d0b5bc814cf024850874a9a83

Author: Pauli Nieminen 
Date:   Sun Mar 21 23:23:21 2010 +0200

r200: Fix emit size prediction to account elt splitting.

Emit sizes prediction didn't account for render splitting in
hwtnl path.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c |2 +-
 src/mesa/drivers/dri/r200/r200_tcl.c|5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 382ae0d..ad43a8c 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -190,7 +190,7 @@ void r200FlushElts(GLcontext *ctx)
  radeonReturnDmaRegion(&rmesa->radeon, R200_ELT_BUF_SZ - elt_used);
 
if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)
-   && !rmesa->radeon.radeonScreen->kernel_mm) {
+ && !rmesa->radeon.radeonScreen->kernel_mm) {
   radeon_print(RADEON_SYNC, RADEON_NORMAL, "%s: Syncing\n", __FUNCTION__);
   radeonFinish( rmesa->radeon.glCtx );
}
diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index f52e4fe..d43e145 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -404,8 +404,9 @@ static GLuint r200EnsureEmitSize( GLcontext * ctx , 
GLubyte* vimap_rev )
  rendering code may decide convert to elts.
 In that case we have to make pessimistic prediction.
 and use larger of 2 paths. */
-  const GLuint elts = ELTS_BUFSZ(nr_aos);
-  const GLuint index = INDEX_BUFSZ;
+  const GLuint elt_count =(VB->Primitive[i].count/GET_MAX_HW_ELTS() + 1);
+  const GLuint elts = ELTS_BUFSZ(nr_aos) * elt_count;
+  const GLuint index = INDEX_BUFSZ * elt_count;
   const GLuint vbuf = VBUF_BUFSZ;
   if ( (!VB->Elts && VB->Primitive[i].count >= MAX_CONVERSION_SIZE)
  || vbuf > index + elts)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): r200: Don't flush when closing elts in KMS.

2010-03-21 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: 0900544fb54cbc2127b8729393c9c1308cd218f9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0900544fb54cbc2127b8729393c9c1308cd218f9

Author: Pauli Nieminen 
Date:   Sun Mar 21 22:55:13 2010 +0200

r200: Don't flush when closing elts in KMS.

Flush in middle of rendering in KMS is not allowed because
buffers are discarded in flush.

Fixes crash when emiting split indices with RADEON_DEBUG=all.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 2f2b8d9..382ae0d 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -189,7 +189,8 @@ void r200FlushElts(GLcontext *ctx)
if (R200_ELT_BUF_SZ > elt_used)
  radeonReturnDmaRegion(&rmesa->radeon, R200_ELT_BUF_SZ - elt_used);
 
-   if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)) {
+   if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)
+   && !rmesa->radeon.radeonScreen->kernel_mm) {
   radeon_print(RADEON_SYNC, RADEON_NORMAL, "%s: Syncing\n", __FUNCTION__);
   radeonFinish( rmesa->radeon.glCtx );
}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (7.8): mesa: Add end of line to the end of a debug output.

2010-03-22 Thread Pauli Nieminen
Module: Mesa
Branch: 7.8
Commit: 361e8e911886784407c7aff91e09b9b2bfd5cde8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=361e8e911886784407c7aff91e09b9b2bfd5cde8

Author: Pauli Nieminen 
Date:   Mon Mar 22 15:14:16 2010 +0200

mesa: Add end of line to the end of a debug output.

---

 src/mesa/main/matrix.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c
index 5c863f6..4b8c00b 100644
--- a/src/mesa/main/matrix.c
+++ b/src/mesa/main/matrix.c
@@ -322,7 +322,7 @@ _mesa_LoadIdentity( void )
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
 
if (MESA_VERBOSE & VERBOSE_API)
-  _mesa_debug(ctx, "glLoadIdentity()");
+  _mesa_debug(ctx, "glLoadIdentity()\n");
 
_math_matrix_set_identity( ctx->CurrentStack->Top );
ctx->NewState |= ctx->CurrentStack->DirtyFlag;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): r200: Fix EXT_fogcoord rendering.

2010-02-01 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 7b92cb45b2f7076476b6a2f50ed044979b1eebe1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b92cb45b2f7076476b6a2f50ed044979b1eebe1

Author: Pauli Nieminen 
Date:   Tue Feb  2 05:39:28 2010 +0200

r200: Fix EXT_fogcoord rendering.

The fogcoord calue was not pushed to GPU because of implicit float to int 
conversion.
Fix is to use float pointer to buffer object so no conversion is done in 
assigment.

---

 src/mesa/drivers/dri/r200/r200_maos_arrays.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_maos_arrays.c 
b/src/mesa/drivers/dri/r200/r200_maos_arrays.c
index 383a0c4..3762a1c 100644
--- a/src/mesa/drivers/dri/r200/r200_maos_arrays.c
+++ b/src/mesa/drivers/dri/r200/r200_maos_arrays.c
@@ -74,7 +74,7 @@ static void r200_emit_vecfog(GLcontext *ctx, struct 
radeon_aos *aos,
 GLvoid *data, int stride, int count)
 {
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
-   uint32_t *out;
+   GLfloat *out;
int i;
int size = 1;
 
@@ -90,7 +90,7 @@ static void r200_emit_vecfog(GLcontext *ctx, struct 
radeon_aos *aos,
aos->components = size;
aos->count = count;
 
-   out = (uint32_t*)((char*)aos->bo->ptr + aos->offset);
+   out = (GLfloat*)((char*)aos->bo->ptr + aos->offset);
for (i = 0; i < count; i++) {
  out[0] = r200ComputeFogBlendFactor( ctx, *(GLfloat *)data );
  out++;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Fix EXT_fogcoord rendering.

2010-02-01 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: edad20fff16a719a37a80fd9605a6d8a0383de13
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=edad20fff16a719a37a80fd9605a6d8a0383de13

Author: Pauli Nieminen 
Date:   Tue Feb  2 05:39:28 2010 +0200

r200: Fix EXT_fogcoord rendering.

The fogcoord calue was not pushed to GPU because of implicit float to int 
conversion.
Fix is to use float pointer to buffer object so no conversion is done in 
assigment

---

 src/mesa/drivers/dri/r200/r200_maos_arrays.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_maos_arrays.c 
b/src/mesa/drivers/dri/r200/r200_maos_arrays.c
index 249c0bb..aecba7f 100644
--- a/src/mesa/drivers/dri/r200/r200_maos_arrays.c
+++ b/src/mesa/drivers/dri/r200/r200_maos_arrays.c
@@ -74,7 +74,7 @@ static void r200_emit_vecfog(GLcontext *ctx, struct 
radeon_aos *aos,
 GLvoid *data, int stride, int count)
 {
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
-   uint32_t *out;
+   GLfloat *out;
int i;
int size = 1;
 
@@ -91,7 +91,7 @@ static void r200_emit_vecfog(GLcontext *ctx, struct 
radeon_aos *aos,
aos->count = count;
 
radeon_bo_map(aos->bo, 1);
-   out = (uint32_t*)((char*)aos->bo->ptr + aos->offset);
+   out = (GLfloat*)((char*)aos->bo->ptr + aos->offset);
for (i = 0; i < count; i++) {
  out[0] = r200ComputeFogBlendFactor( ctx, *(GLfloat *)data );
  out++;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): Revert "mesa: fix transform_points_3d_no_rot using undefined values in %xmm0"

2010-02-03 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 9d9c1f17dc6bcc7a240a8e2f6f53472f6124a8d7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d9c1f17dc6bcc7a240a8e2f6f53472f6124a8d7

Author: Pauli Nieminen 
Date:   Tue Feb  2 08:10:04 2010 +0200

Revert "mesa: fix transform_points_3d_no_rot using undefined values in %xmm0"

This reverts commit 4c31632817a0bde28ad6c9ee8032d838ce4b7bfb.

---

 src/mesa/x86/sse_xform2.S |1 -
 src/mesa/x86/sse_xform3.S |1 -
 2 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/src/mesa/x86/sse_xform2.S b/src/mesa/x86/sse_xform2.S
index b490d4c..91b82e7 100644
--- a/src/mesa/x86/sse_xform2.S
+++ b/src/mesa/x86/sse_xform2.S
@@ -186,7 +186,6 @@ GLNAME(_mesa_sse_transform_points2_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
-PXOR( XMM0, XMM0 )
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */
diff --git a/src/mesa/x86/sse_xform3.S b/src/mesa/x86/sse_xform3.S
index 8a79eed..1fc79ef 100644
--- a/src/mesa/x86/sse_xform3.S
+++ b/src/mesa/x86/sse_xform3.S
@@ -198,7 +198,6 @@ GLNAME(_mesa_sse_transform_points3_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
-PXOR( XMM0, XMM0 )
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Revert "mesa: fix transform_points_3d_no_rot using undefined values in %xmm0"

2010-02-03 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 66d09e4a2a6b770ddb8cbbd89b7e4c53205a95d0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=66d09e4a2a6b770ddb8cbbd89b7e4c53205a95d0

Author: Pauli Nieminen 
Date:   Tue Feb  2 08:10:04 2010 +0200

Revert "mesa: fix transform_points_3d_no_rot using undefined values in %xmm0"

This reverts commit 4c31632817a0bde28ad6c9ee8032d838ce4b7bfb.

---

 src/mesa/x86/sse_xform2.S |1 -
 src/mesa/x86/sse_xform3.S |1 -
 2 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/src/mesa/x86/sse_xform2.S b/src/mesa/x86/sse_xform2.S
index b490d4c..91b82e7 100644
--- a/src/mesa/x86/sse_xform2.S
+++ b/src/mesa/x86/sse_xform2.S
@@ -186,7 +186,6 @@ GLNAME(_mesa_sse_transform_points2_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
-PXOR( XMM0, XMM0 )
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */
diff --git a/src/mesa/x86/sse_xform3.S b/src/mesa/x86/sse_xform3.S
index 8a79eed..1fc79ef 100644
--- a/src/mesa/x86/sse_xform3.S
+++ b/src/mesa/x86/sse_xform3.S
@@ -198,7 +198,6 @@ GLNAME(_mesa_sse_transform_points3_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
-PXOR( XMM0, XMM0 )
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): swrast/sse: Fix _mesa_sse_transform_pointsX_3d_no_rot

2010-02-04 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_7_branch
Commit: 7d6cbcdd9a08b9417f476fa86b8b25a4afadce8e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d6cbcdd9a08b9417f476fa86b8b25a4afadce8e

Author: Pauli Nieminen 
Date:   Tue Feb  2 20:50:22 2010 +0200

swrast/sse: Fix _mesa_sse_transform_pointsX_3d_no_rot

PXOR user in code were causing the lowest SP float register to have NaN
values which made all math operations in that slot fail. Correct istruction
to clear float registers is XORPS which handles single precission floats
correctly.

Fixes progs/tests/fog in swrast SSE mode.

Now the correct commit instead of 9d9c1f17dc6bcc7a2 which is not even close
of correct fix for the bug.

---

 src/mesa/x86/sse_xform2.S |1 +
 src/mesa/x86/sse_xform3.S |1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/x86/sse_xform2.S b/src/mesa/x86/sse_xform2.S
index 91b82e7..a443dad 100644
--- a/src/mesa/x86/sse_xform2.S
+++ b/src/mesa/x86/sse_xform2.S
@@ -186,6 +186,7 @@ GLNAME(_mesa_sse_transform_points2_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
+XORPS( XMM0, XMM0 ) /* clean the working register 
*/
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */
diff --git a/src/mesa/x86/sse_xform3.S b/src/mesa/x86/sse_xform3.S
index 1fc79ef..4bc22d8 100644
--- a/src/mesa/x86/sse_xform3.S
+++ b/src/mesa/x86/sse_xform3.S
@@ -198,6 +198,7 @@ GLNAME(_mesa_sse_transform_points3_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
+XORPS( XMM0, XMM0 ) /* clean the working register 
*/
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swrast/sse: Fix _mesa_sse_transform_pointsX_3d_no_rot

2010-02-04 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: f1b07f0220bd71c86c977ba04cf20cf90d5e8958
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1b07f0220bd71c86c977ba04cf20cf90d5e8958

Author: Pauli Nieminen 
Date:   Tue Feb  2 20:50:22 2010 +0200

swrast/sse: Fix _mesa_sse_transform_pointsX_3d_no_rot

PXOR user in code were causing the lowest SP float register to have NaN
values which made all math operations in that slot fail. Correct istruction
to clear float registers is XORPS which handles single precission floats
correctly.

Fixes progs/tests/fog in swrast SSE mode.

Now the correct commit instead of 66d09e4a2a6b770ddb which is not even close
of correct fix for the bug.

---

 src/mesa/x86/sse_xform2.S |1 +
 src/mesa/x86/sse_xform3.S |1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/x86/sse_xform2.S b/src/mesa/x86/sse_xform2.S
index 91b82e7..a443dad 100644
--- a/src/mesa/x86/sse_xform2.S
+++ b/src/mesa/x86/sse_xform2.S
@@ -186,6 +186,7 @@ GLNAME(_mesa_sse_transform_points2_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
+XORPS( XMM0, XMM0 ) /* clean the working register 
*/
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */
diff --git a/src/mesa/x86/sse_xform3.S b/src/mesa/x86/sse_xform3.S
index 1fc79ef..4bc22d8 100644
--- a/src/mesa/x86/sse_xform3.S
+++ b/src/mesa/x86/sse_xform3.S
@@ -198,6 +198,7 @@ GLNAME(_mesa_sse_transform_points3_3d_no_rot):
 MOV_L( REGOFF(V4F_START, EDI), EDI )   /* ptr to first dest vertex */
 ADD_L( EDI, ECX )  /* count += dest ptr */
 
+XORPS( XMM0, XMM0 ) /* clean the working register 
*/
 
 ALIGNTEXT32
 MOVSS( M(0), XMM1 )/* - | - |  -  | m0  */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add comment to explain logic for freeing dma buffers .

2009-08-21 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 0c0cea250d6615bbd500ac0b61b5d34bc61711cf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c0cea250d6615bbd500ac0b61b5d34bc61711cf

Author: Pauli Nieminen 
Date:   Thu Aug 20 18:57:35 2009 +0300

radeon: Add comment to explain logic for freeing dma buffers.

---

 src/mesa/drivers/dri/radeon/radeon_dma.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c 
b/src/mesa/drivers/dri/radeon/radeon_dma.c
index 40082d0..7e6b74a 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -204,6 +204,9 @@ again_alloc:
}
insert_at_head(&rmesa->dma.reserved, dma_bo);
} else {
+   /* We push and pop buffers from end of list so we can keep
+  counter on unused buffers for later freeing them from
+  begin of list */
struct radeon_dma_bo *dma_bo = last_elem(&rmesa->dma.free);
assert(dma_bo->bo->cref == 1);
remove_from_list(dma_bo);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Check from kernel if dma buffer is idle.

2009-08-23 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 66bbafb6f9d44da3baddac6d948ba361182dde2a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=66bbafb6f9d44da3baddac6d948ba361182dde2a

Author: Pauli Nieminen 
Date:   Thu Aug 20 17:57:37 2009 +0300

radeon: Check from kernel if dma buffer is idle.

This makes sure that objects are leaving wait list only when they are processed 
by gpu.

Signed-off-by: Pauli Nieminen 

---

 src/mesa/drivers/dri/radeon/radeon_bo_drm.h|   12 
 src/mesa/drivers/dri/radeon/radeon_bo_legacy.c |   13 +
 src/mesa/drivers/dri/radeon/radeon_dma.c   |9 -
 3 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_drm.h 
b/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
index 8789e3a..24ba0fa 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
+++ b/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
@@ -73,6 +73,7 @@ struct radeon_bo_funcs {
  uint32_t pitch);
 int (*bo_get_tiling)(struct radeon_bo *bo, uint32_t *tiling_flags,
  uint32_t *pitch);
+int (*bo_is_busy)(struct radeon_bo *bo, uint32_t *domain);
 };
 
 struct radeon_bo_manager {
@@ -170,6 +171,15 @@ static inline int _radeon_bo_wait(struct radeon_bo *bo,
 return bo->bom->funcs->bo_wait(bo);
 }
 
+static inline int _radeon_bo_is_busy(struct radeon_bo *bo,
+uint32_t *domain,
+ const char *file,
+ const char *func,
+ int line)
+{
+return bo->bom->funcs->bo_is_busy(bo, domain);
+}
+
 static inline int radeon_bo_set_tiling(struct radeon_bo *bo,
   uint32_t tiling_flags, uint32_t pitch)
 {
@@ -203,5 +213,7 @@ static inline int radeon_bo_is_static(struct radeon_bo *bo)
 _radeon_bo_debug(bo, opcode, __FILE__, __FUNCTION__, __LINE__)
 #define radeon_bo_wait(bo) \
 _radeon_bo_wait(bo, __FILE__, __func__, __LINE__)
+#define radeon_bo_is_busy(bo, domain) \
+_radeon_bo_is_busy(bo, busy, domain, __FILE__, __func__, __LINE__)
 
 #endif
diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c 
b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
index b1cc155..a10c6b7 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
+++ b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
@@ -542,6 +542,18 @@ static int bo_unmap(struct radeon_bo *bo)
 return 0;
 }
 
+static int bo_is_busy(struct radeon_bo *bo, uint32_t *domain)
+{
+*domain = 0;
+if (bo->domains & RADEON_GEM_DOMAIN_GTT)
+*domain = RADEON_GEM_DOMAIN_GTT;
+else
+*domain = RADEON_GEM_DOMAIN_CPU;
+if (legacy_is_pending(bo))
+return -EBUSY;
+else
+return 0;
+}
 
 static int bo_is_static(struct radeon_bo *bo)
 {
@@ -559,6 +571,7 @@ static struct radeon_bo_funcs bo_legacy_funcs = {
 bo_is_static,
 NULL,
 NULL,
+bo_is_busy
 };
 
 static int bo_vram_validate(struct radeon_bo *bo,
diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c 
b/src/mesa/drivers/dri/radeon/radeon_dma.c
index 7e6b74a..a183542 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -30,6 +30,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **/
 
+#include 
 #include "radeon_common.h"
 #include "main/simple_list.h"
 
@@ -302,7 +303,13 @@ void radeonReturnDmaRegion(radeonContextPtr rmesa, int 
return_bytes)
 
 static int radeon_bo_is_idle(struct radeon_bo* bo)
 {
-   return bo->cref == 1;
+   uint32_t domain;
+   int ret = radeon_bo_is_busy(bo, &domain);
+   if (ret == -EINVAL) {
+   WARN_ONCE("Your libdrm or kernel doesn't have support for busy 
query.\n"
+   "This may cause small performance drop for you.\n");
+   }
+   return ret != -EBUSY;
 }
 
 void radeonReleaseDmaRegions(radeonContextPtr rmesa)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix compilation with legacy memory manager.

2009-08-23 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: b34695375ea6dcf78a113041ed8beb20cea15c71
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b34695375ea6dcf78a113041ed8beb20cea15c71

Author: Pauli Nieminen 
Date:   Sun Aug 23 14:02:46 2009 +0300

radeon: Fix compilation with legacy memory manager.

---

 src/mesa/drivers/dri/radeon/radeon_bo_drm.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_drm.h 
b/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
index 24ba0fa..7141371 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
+++ b/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
@@ -214,6 +214,6 @@ static inline int radeon_bo_is_static(struct radeon_bo *bo)
 #define radeon_bo_wait(bo) \
 _radeon_bo_wait(bo, __FILE__, __func__, __LINE__)
 #define radeon_bo_is_busy(bo, domain) \
-_radeon_bo_is_busy(bo, busy, domain, __FILE__, __func__, __LINE__)
+_radeon_bo_is_busy(bo, domain, __FILE__, __func__, __LINE__)
 
 #endif

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): 28 new commits

2009-08-24 Thread Pauli Nieminen
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce7ed63f0c2f5cb1c030f73a5d8f6544eaac0f81
Merge: 4297f32c246cc5b726d02745456c06952322958d 
1d5a06a1f7812c055db1d724e40d21a0e3686dd1
Author: Pauli Nieminen 
Date:   Tue Aug 25 02:36:13 2009 +0300

Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa into 
r600_state_predict

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4297f32c246cc5b726d02745456c06952322958d
Author: Pauli Nieminen 
Date:   Tue Aug 25 02:23:52 2009 +0300

radeon/r200/r300/r600: Warn if we emit more than prediction was.

Prediction code making too small prediction may cause space check aserttion
failure later in rendering. So warning about any failure to predict 
correctly
should be fixed.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=55c0457fe9574452b3c2558ada160c42a3e1fbdc
Author: Pauli Nieminen 
Date:   Mon Aug 24 18:44:53 2009 +0300

radeon: Add debug output to radeonCountStateEmitSize.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ec61f677c322c30771c351c5f0b79c917caf2a49
Author: Pauli Nieminen 
Date:   Mon Aug 24 18:06:25 2009 +0300

r600: Fix indetion and add useful debug output.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=75da0a6a561e9cd0ab64494d10e6645c35d31e82
Merge: fe42b4b7577feb5a0f10be2faf34da191e34c135 
ed14a4cb7bbcef45668a3ab6fe8efb267b7c4efd
Author: Pauli Nieminen 
Date:   Mon Aug 24 17:09:27 2009 +0300

Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa into 
r600_state_predict

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe42b4b7577feb5a0f10be2faf34da191e34c135
Author: Pauli Nieminen 
Date:   Mon Aug 24 02:44:27 2009 +0300

r600: Improve emit prediction.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=885906840d1b60650fe49d282046fc775bbcdcf1
Author: Pauli Nieminen 
Date:   Mon Aug 24 02:01:15 2009 +0300

r600: Predict emit size for next rendering.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccde2768380efbdde467cc37e1a248c447f46d20
Author: Pauli Nieminen 
Date:   Mon Aug 24 01:54:01 2009 +0300

radeon: Fix dri1 ctx emit size.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bb0f880dbdee0c57693c3a1f331d7c0894e71e1
Merge: effda2e2a7f8ef7406d698c6b31dbbff408ed112 
4484ce9c7b196a686a3928f7e29dc8d9b6f3cae3
Author: Pauli Nieminen 
Date:   Mon Aug 24 00:57:05 2009 +0300

Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa into 
r600_state_predict

Conflicts:
src/mesa/drivers/dri/r300/r300_cmdbuf.c
src/mesa/drivers/dri/radeon/radeon_cmdbuf.h

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=effda2e2a7f8ef7406d698c6b31dbbff408ed112
Author: Pauli Nieminen 
Date:   Sat Aug 22 04:37:24 2009 +0300

r300: Fix debug output.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6c5c46f842c80d4397d7971bea1a439fcd5e57d1
Author: Pauli Nieminen 
Date:   Sat Aug 22 02:43:41 2009 +0300

r300: Fix dri1 not to emit state that is not supported in old drm.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0f4063703265fc4009e6cadc2de79f553f99b1c
Author: Pauli Nieminen 
Date:   Sat Aug 22 02:43:00 2009 +0300

radeon/r300: Code clean up and logic fix.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb43c5d1cb0d3030f6bd7d72be000f980ced5bbb
Author: Pauli Nieminen 
Date:   Fri Aug 21 23:48:39 2009 +0300

r300: Remove calls to rcommonEnsureCmdBufSpace.

All rendering is checked in r300PredictTryDrawPrimsSize which mamde these 
calls useless.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=90647ff5585ffb1417190e28f88bf1aeed681793
Author: Pauli Nieminen 
Date:   Fri Aug 21 21:21:16 2009 +0300

radeon: protect against buffer overflow in state atom debug code.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b7ec2ebe33608f9107ff7cae6b974edc8097cecd
Author: Pauli Nieminen 
Date:   Fri Aug 21 20:44:54 2009 +0300

radeon: Improve state emit code.

Trying to make understanding code easier with small refactoring and 
renaming.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0bf4308580a88ac672f84472cb76e0236d7f8902
Author: Pauli Nieminen 
Date:   Fri Aug 21 20:10:30 2009 +0300

r300: Add debug output to show how much was emited in TryDrawPrims.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d6b5464aaa93585376610ce8cace66ea3798723d
Author: Pauli Nieminen 
Date:   Fri Aug 21 18:55:34 2009 +0300

r300: Predict emit size for next rendering operation.

We do flush for cmd buffer in case there isn't enough space left for whole
rendering operation. This protects dma regions from getting released in 
middle
of state emit.
    
Signed-off-by: Pauli Nieminen 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=12fe319c53187e9a316f8c26441040a84ae4efca
Author: Pauli Nieminen 
Date:   Fri Aug 21 18:29:06 2009 +0300

   

Mesa (master): Revert "glx: Make drawables persistent untill they are changed by glXMakeCurrent"

2009-08-24 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 418cdc66ec10c1f3005320ab46404b907c30e37d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=418cdc66ec10c1f3005320ab46404b907c30e37d

Author: Pauli Nieminen 
Date:   Tue Aug 25 05:03:58 2009 +0300

Revert "glx: Make drawables persistent untill they are changed by 
glXMakeCurrent"

This commit was not mean to end in to master yet. It is still queston if this
right design to fix the problem.

This reverts commit 45e3be3c07f543f3f2869ba7750ba4695cd25122.

---

 src/mesa/drivers/dri/common/dri_util.c |  121 +++-
 1 files changed, 41 insertions(+), 80 deletions(-)

diff --git a/src/mesa/drivers/dri/common/dri_util.c 
b/src/mesa/drivers/dri/common/dri_util.c
index d7bcd56..e48e10d 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -82,46 +82,6 @@ driIntersectArea( drm_clip_rect_t rect1, drm_clip_rect_t 
rect2 )
return (rect1.x2 - rect1.x1) * (rect1.y2 - rect1.y1);
 }
 
-static int driFreeDrawable(__DRIcontext *pcp)
-{
-__DRIdrawable *pdp;
-__DRIdrawable *prp;
-
-   if (pcp == NULL)
-   return GL_FALSE;
-
-pdp = pcp->driDrawablePriv;
-prp = pcp->driReadablePriv;
-
-/* already unbound */
-if (!pdp && !prp)
-  return GL_TRUE;
-
-if (pdp->refcount == 0) {
-   /* ERROR!!! */
-   return GL_FALSE;
-}
-
-dri_put_drawable(pdp);
-
-if (prp != pdp) {
-if (prp->refcount == 0) {
-   /* ERROR!!! */
-   return GL_FALSE;
-   }
-
-dri_put_drawable(prp);
-}
-
-
-/* XXX this is disabled so that if we call SwapBuffers on an unbound
- * window we can determine the last context bound to the window and
- * use that context's lock. (BrianP, 2-Dec-2000)
- */
-pcp->driDrawablePriv = pcp->driReadablePriv = NULL;
-   return GL_TRUE;
-}
-
 /*/
 /** \name Context (un)binding functions  */
 /*/
@@ -146,6 +106,8 @@ static int driFreeDrawable(__DRIcontext *pcp)
 static int driUnbindContext(__DRIcontext *pcp)
 {
 __DRIscreen *psp;
+__DRIdrawable *pdp;
+__DRIdrawable *prp;
 
 /*
 ** Assume error checking is done properly in glXMakeCurrent before
@@ -156,10 +118,38 @@ static int driUnbindContext(__DRIcontext *pcp)
 return GL_FALSE;
 
 psp = pcp->driScreenPriv;
+pdp = pcp->driDrawablePriv;
+prp = pcp->driReadablePriv;
 
-   /* Let driver unbind drawable from context */
+/* already unbound */
+if (!pdp && !prp)
+  return GL_TRUE;
+/* Let driver unbind drawable from context */
 (*psp->DriverAPI.UnbindContext)(pcp);
 
+if (pdp->refcount == 0) {
+   /* ERROR!!! */
+   return GL_FALSE;
+}
+
+dri_put_drawable(pdp);
+
+if (prp != pdp) {
+if (prp->refcount == 0) {
+   /* ERROR!!! */
+   return GL_FALSE;
+   }
+
+   dri_put_drawable(prp);
+}
+
+
+/* XXX this is disabled so that if we call SwapBuffers on an unbound
+ * window we can determine the last context bound to the window and
+ * use that context's lock. (BrianP, 2-Dec-2000)
+ */
+pcp->driDrawablePriv = pcp->driReadablePriv = NULL;
+
 #if 0
 /* Unbind the drawable */
 pdp->driContextPriv = &psp->dummyContextPriv;
@@ -181,44 +171,17 @@ static int driBindContext(__DRIcontext *pcp,
 
 /* Bind the drawable to the context */
 
-   if (pcp) {
-
-   if (pcp->driDrawablePriv != pdp 
-   || pcp->driReadablePriv != prp)
-   {
-   /* first increment ref count for new drawables */
-
-   if (pdp)
-   {
-   pdp->driContextPriv = pcp;
-   dri_get_drawable(pdp);
-   }
-
-   if (prp && prp != pdp)
-   {
-   dri_get_drawable(prp);
-   }
-
-   /* free old drawables */ 
-
-   if (pcp->driReadablePriv 
-   && pcp->driReadablePriv != pcp->driDrawablePriv)
-   {
-   dri_put_drawable(pcp->driReadablePriv);
-   }
-
-   if (pcp->driDrawablePriv)
-   {
-   dri_put_drawable(pcp->driDrawablePriv);
-   }
-
-   /* assign new drawables to context */
-
-   pcp->driDrawablePriv = pdp;
-   pcp->driReadablePriv = prp;
-
-   }
+if (pcp) {
+   pcp->driDrawablePriv = pdp;
+   pcp->

Mesa (master): radeon: Fix all compiler warnings.

2009-08-25 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: c3374bf97ecd82b915fb29c7c04951e2b75d4dbc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3374bf97ecd82b915fb29c7c04951e2b75d4dbc

Author: Pauli Nieminen 
Date:   Tue Aug 25 19:28:00 2009 +0300

radeon: Fix all compiler warnings.

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c|3 +-
 src/mesa/drivers/dri/r200/r200_pixel.c |   14 +
 src/mesa/drivers/dri/r200/r200_swtcl.c |2 +-
 .../drivers/dri/r300/compiler/radeon_program_alu.c |4 ++-
 src/mesa/drivers/dri/r600/r600_tex.c   |4 +-
 src/mesa/drivers/dri/r600/r700_debug.c |2 +-
 src/mesa/drivers/dri/radeon/radeon_context.c   |1 +
 src/mesa/drivers/dri/radeon/radeon_cs_legacy.c |2 +-
 src/mesa/drivers/dri/radeon/radeon_dma.c   |7 +++--
 src/mesa/drivers/dri/radeon/radeon_ioctl.c |2 +-
 src/mesa/drivers/dri/radeon/radeon_screen.c|   29 +++
 src/mesa/drivers/dri/radeon/radeon_span.c  |2 +
 src/mesa/drivers/dri/radeon/radeon_swtcl.c |2 +-
 13 files changed, 31 insertions(+), 43 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index e639353..5f10279 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -105,7 +105,7 @@ void r200SetUpAtomList( r200ContextPtr rmesa )
insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.vpi[1] );
 }
 
-void r200EmitScissor(r200ContextPtr rmesa)
+static void r200EmitScissor(r200ContextPtr rmesa)
 {
 unsigned x1, y1, x2, y2;
 struct radeon_renderbuffer *rrb;
@@ -234,7 +234,6 @@ GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa,
GLuint min_nr )
 {
GLushort *retval;
-   int ret;
 
if (R200_DEBUG & DEBUG_IOCTL)
   fprintf(stderr, "%s %d prim %x\n", __FUNCTION__, min_nr, primitive);
diff --git a/src/mesa/drivers/dri/r200/r200_pixel.c 
b/src/mesa/drivers/dri/r200/r200_pixel.c
index 654f2c6..7201dda 100644
--- a/src/mesa/drivers/dri/r200/r200_pixel.c
+++ b/src/mesa/drivers/dri/r200/r200_pixel.c
@@ -101,7 +101,7 @@ check_color_per_fragment_ops( const GLcontext *ctx )
 }
 
 
-
+#if 0
 static GLboolean
 clip_pixelrect( const GLcontext *ctx,
const GLframebuffer *buffer,
@@ -142,6 +142,7 @@ clip_pixelrect( const GLcontext *ctx,
 
return GL_TRUE;
 }
+#endif
 
 static GLboolean
 r200TryReadPixels( GLcontext *ctx,
@@ -150,14 +151,14 @@ r200TryReadPixels( GLcontext *ctx,
  const struct gl_pixelstore_attrib *pack,
  GLvoid *pixels )
 {
+   return GL_FALSE;
+#if 0
r200ContextPtr rmesa = R200_CONTEXT(ctx);
GLint pitch = pack->RowLength ? pack->RowLength : width;
GLint blit_format;
GLuint cpp = rmesa->radeon.radeonScreen->cpp;
GLint size = width * height * cpp;
 
-   return GL_FALSE;
-#if 0
if (R200_DEBUG & DEBUG_PIXEL)
   fprintf(stderr, "%s\n", __FUNCTION__);
 
@@ -292,6 +293,10 @@ static void do_draw_pix( GLcontext *ctx,
 const void *pixels,
 GLuint planemask)
 {
+   if (R200_DEBUG & DEBUG_PIXEL)
+  fprintf(stderr, "%s\n", __FUNCTION__);
+
+#if 0
r200ContextPtr rmesa = R200_CONTEXT(ctx);
__DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon);
drm_clip_rect_t *box = dPriv->pClipRects;
@@ -304,9 +309,6 @@ static void do_draw_pix( GLcontext *ctx,
int src_offset = r200GartOffsetFromVirtual( rmesa, pixels );
int src_pitch = pitch * rmesa->radeon.radeonScreen->cpp;
 
-   if (R200_DEBUG & DEBUG_PIXEL)
-  fprintf(stderr, "%s\n", __FUNCTION__);
-#if 0
switch ( rmesa->radeon.radeonScreen->cpp ) {
case 2:
   blit_format = R200_CP_COLOR_FORMAT_RGB565;
diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c 
b/src/mesa/drivers/dri/r200/r200_swtcl.c
index 56930c7..13bd6ac 100644
--- a/src/mesa/drivers/dri/r200/r200_swtcl.c
+++ b/src/mesa/drivers/dri/r200/r200_swtcl.c
@@ -444,7 +444,7 @@ do {
\
 
 #define LOCAL_VARS(n)  \
r200ContextPtr rmesa = R200_CONTEXT(ctx);   \
-   GLuint color[n], spec[n];   \
+   GLuint color[n] = {0}, spec[n] = {0};   
\
GLuint coloroffset = rmesa->swtcl.coloroffset;  \
GLuint specoffset = rmesa->swtcl.specoffset;\
(void) color; (void) spec; (void) coloroffset; (void) specoffset;
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c 
b/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c
index 609e510..8071899 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c
+++ b/src/mesa/drivers/dri/r

Mesa (master): r200: Fix commit size prediction.

2009-08-25 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 75df73838a0b75d7ee9a67369dabc08d92a59d57
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=75df73838a0b75d7ee9a67369dabc08d92a59d57

Author: Pauli Nieminen 
Date:   Tue Aug 25 21:36:19 2009 +0300

r200: Fix commit size prediction.

Scissor are emited for every primitive so fix that in prediction.

---

 src/mesa/drivers/dri/r200/r200_tcl.c |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index 7b3a9fc..67a226f 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -413,9 +413,12 @@ static GLuint r200EnsureEmitSize( GLcontext * ctx , 
GLubyte* vimap_rev )
   else
space_required += index + elts;
   space_required += AOS_BUFSZ(nr_aos);
+  space_required += SCISSOR_BUFSZ;
 }
-space_required += SCISSOR_BUFSZ;
   }
+
+  if (RADEON_DEBUG & DEBUG_PRIMS)
+ fprintf(stderr, "%s space %u, aos %d\n", space_required, 
AOS_BUFSZ(nr_aos) );
   /* flush the buffer in case we need more than is left. */
   if (rcommonEnsureCmdBufSpace(&rmesa->radeon, space_required + state_size, 
__FUNCTION__))
 return space_required + radeonCountStateEmitSize( &rmesa->radeon );

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Addd missing parameter to debug output.

2009-08-25 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 87f83e193a21d7e4703664504734edd1e71920a4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=87f83e193a21d7e4703664504734edd1e71920a4

Author: Pauli Nieminen 
Date:   Tue Aug 25 21:39:39 2009 +0300

r200: Addd missing parameter to debug output.

---

 src/mesa/drivers/dri/r200/r200_tcl.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c 
b/src/mesa/drivers/dri/r200/r200_tcl.c
index 67a226f..af528ae 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -418,7 +418,7 @@ static GLuint r200EnsureEmitSize( GLcontext * ctx , 
GLubyte* vimap_rev )
   }
 
   if (RADEON_DEBUG & DEBUG_PRIMS)
- fprintf(stderr, "%s space %u, aos %d\n", space_required, 
AOS_BUFSZ(nr_aos) );
+ fprintf(stderr, "%s space %u, aos %d\n", __func__, space_required, 
AOS_BUFSZ(nr_aos) );
   /* flush the buffer in case we need more than is left. */
   if (rcommonEnsureCmdBufSpace(&rmesa->radeon, space_required + state_size, 
__FUNCTION__))
 return space_required + radeonCountStateEmitSize( &rmesa->radeon );

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/r600: Fix remaining warnings when building 64 bit binary.

2009-08-25 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 5d10890795d9bddc8cafc4afb19cacf164d6e667
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d10890795d9bddc8cafc4afb19cacf164d6e667

Author: Pauli Nieminen 
Date:   Tue Aug 25 21:46:32 2009 +0300

radeon/r600: Fix remaining warnings when building 64 bit binary.

---

 src/mesa/drivers/dri/r600/r600_cmdbuf.c |2 ++
 src/mesa/drivers/dri/r600/r700_assembler.c  |4 ++--
 src/mesa/drivers/dri/radeon/radeon_cmdbuf.h |7 ---
 src/mesa/drivers/dri/radeon/radeon_dma.c|2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r600_cmdbuf.c 
b/src/mesa/drivers/dri/r600/r600_cmdbuf.c
index a330d5b..050d7bc 100644
--- a/src/mesa/drivers/dri/r600/r600_cmdbuf.c
+++ b/src/mesa/drivers/dri/r600/r600_cmdbuf.c
@@ -304,6 +304,7 @@ static int r600_cs_set_age(struct radeon_cs *cs) /* 
-- */
 return 0;
 }
 
+#if 0
 static void dump_cmdbuf(struct radeon_cs *cs)
 {
int i;
@@ -314,6 +315,7 @@ static void dump_cmdbuf(struct radeon_cs *cs)
fprintf(stderr,"--end--\n");
 
 }
+#endif
 
 static int r600_cs_emit(struct radeon_cs *cs)
 {
diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c 
b/src/mesa/drivers/dri/r600/r700_assembler.c
index eaacd06..834c235 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.c
+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
@@ -2132,7 +2132,7 @@ GLboolean assemble_alu_instruction(r700_AssemblerBase 
*pAsm)
 alu_instruction_ptr->m_Word1_OP2.f6.write_mask = 
pAsm->D.dst.writew; 
 break;
 default: 
-alu_instruction_ptr->m_Word1_OP2.f6.write_mask = 
SQ_SEL_MASK; 
+alu_instruction_ptr->m_Word1_OP2.f6.write_mask = 1; 
//SQ_SEL_MASK;
 break;
 }
 alu_instruction_ptr->m_Word1_OP2.f6.omod   = 
SQ_ALU_OMOD_OFF;
@@ -2161,7 +2161,7 @@ GLboolean assemble_alu_instruction(r700_AssemblerBase 
*pAsm)
 alu_instruction_ptr->m_Word1_OP2.f.write_mask = 
pAsm->D.dst.writew; 
 break;
 default: 
-alu_instruction_ptr->m_Word1_OP2.f.write_mask = 
SQ_SEL_MASK; 
+alu_instruction_ptr->m_Word1_OP2.f.write_mask = 1; 
//SQ_SEL_MASK;
 break;
 }
 alu_instruction_ptr->m_Word1_OP2.f.omod   = 
SQ_ALU_OMOD_OFF;
diff --git a/src/mesa/drivers/dri/radeon/radeon_cmdbuf.h 
b/src/mesa/drivers/dri/radeon/radeon_cmdbuf.h
index 410df4d..6fcd1ce 100644
--- a/src/mesa/drivers/dri/radeon/radeon_cmdbuf.h
+++ b/src/mesa/drivers/dri/radeon/radeon_cmdbuf.h
@@ -54,11 +54,12 @@ void rcommonBeginBatch(radeonContextPtr rmesa,
  */
 #define OUT_BATCH_RELOC(data, bo, offset, rd, wd, flags)   \
do {\
-if (0 && offset) { \
+   int  __offset = (offset);   \
+if (0 && __offset) {   \
 fprintf(stderr, "(%s:%s:%d) offset : %d\n",\
-__FILE__, __FUNCTION__, __LINE__, offset); \
+__FILE__, __FUNCTION__, __LINE__, __offset);   \
 }  \
-radeon_cs_write_dword(b_l_rmesa->cmdbuf.cs, offset);   \
+radeon_cs_write_dword(b_l_rmesa->cmdbuf.cs, __offset); \
 radeon_cs_write_reloc(b_l_rmesa->cmdbuf.cs,\
   bo, rd, wd, flags);  \
if (!b_l_rmesa->radeonScreen->kernel_mm)\
diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c 
b/src/mesa/drivers/dri/radeon/radeon_dma.c
index f15013c..51f764c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_dma.c
+++ b/src/mesa/drivers/dri/radeon/radeon_dma.c
@@ -333,7 +333,7 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa)
foreach(dma_bo, &rmesa->dma.reserved)
++reserved;
 
-   fprintf(stderr, "%s: free %u, wait %u, reserved %u, 
minimum_size: %u\n", 
+   fprintf(stderr, "%s: free %zu, wait %zu, reserved %zu, 
minimum_size: %zu\n",
  __FUNCTION__, free, wait, reserved, 
rmesa->dma.minimum_size);
}
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Add scissor to state atom list.

2009-08-25 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: dbf59de6d2f8be526e97af6c768622e6ca3cf6b1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbf59de6d2f8be526e97af6c768622e6ca3cf6b1

Author: Pauli Nieminen 
Date:   Wed Aug 26 01:43:27 2009 +0300

r200: Add scissor to state atom list.

Scissors are jsut one of states that we have to emit so it should be in state 
list

---

 src/mesa/drivers/dri/r200/r200_cmdbuf.c|  121 
 src/mesa/drivers/dri/r200/r200_context.c   |1 +
 src/mesa/drivers/dri/r200/r200_context.h   |   10 ++
 src/mesa/drivers/dri/r200/r200_ioctl.h |   10 ++
 src/mesa/drivers/dri/r200/r200_state.c |   24 
 src/mesa/drivers/dri/r200/r200_state.h |2 +
 src/mesa/drivers/dri/r200/r200_state_init.c|   24 -
 src/mesa/drivers/dri/r200/r200_tcl.c   |1 -
 src/mesa/drivers/dri/radeon/radeon_common.c|3 +
 .../drivers/dri/radeon/radeon_common_context.h |1 +
 10 files changed, 119 insertions(+), 78 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 5f10279..1fe68c2 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -49,6 +49,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 /* The state atoms will be emitted in the order they appear in the atom list,
  * so this step is important.
  */
+#define insert_at_tail_if(atom_list, atom) \
+   do { \
+  struct radeon_state_atom* __atom = (atom); \
+  if (__atom->check) \
+insert_at_tail((atom_list), __atom); \
+   } while(0)
+
 void r200SetUpAtomList( r200ContextPtr rmesa )
 {
int i, mtu;
@@ -58,86 +65,52 @@ void r200SetUpAtomList( r200ContextPtr rmesa )
make_empty_list(&rmesa->radeon.hw.atomlist);
rmesa->radeon.hw.atomlist.name = "atom-list";
 
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.ctx );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.set );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.lin );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.msk );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.vpt );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.vtx );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.vap );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.vte );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.msc );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.cst );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.zbs );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.tcl );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.msl );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.tcg );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.grd );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.fog );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.tam );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.tf );
-   insert_at_tail( &rmesa->radeon.hw.atomlist, &rmesa->hw.atf );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.ctx );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.set );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.lin );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.msk );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.vpt );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.vtx );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.vap );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.vte );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.msc );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.cst );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.zbs );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.tcl );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.msl );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.tcg );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.grd );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.fog );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.tam );
+   insert_at_tail_if( &rmesa->radeon.hw.atomlist, &rmesa->hw.tf );
+   insert_at_tail_if( &rmesa->radeo

Mesa (master): radeon/r200/r300: Fix swtcl flushing not to invalidate dma region.

2009-08-26 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 97029c1860e8a99448ac157408e71bea3aa2559f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=97029c1860e8a99448ac157408e71bea3aa2559f

Author: Pauli Nieminen 
Date:   Wed Aug 26 22:24:25 2009 +0300

radeon/r200/r300: Fix swtcl flushing not to invalidate dma region.

We were check command buffer sizes too alte so allocated dma regions
were freed before relocations so space checking failed.

---

 src/mesa/drivers/dri/r200/r200_swtcl.c |   22 ++--
 src/mesa/drivers/dri/r300/r300_swtcl.c |   37 ++--
 .../drivers/dri/radeon/radeon_common_context.h |1 +
 src/mesa/drivers/dri/radeon/radeon_dma.c   |7 
 src/mesa/drivers/dri/radeon/radeon_swtcl.c |   31 +++-
 5 files changed, 75 insertions(+), 23 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c 
b/src/mesa/drivers/dri/r200/r200_swtcl.c
index 13bd6ac..6b7279e 100644
--- a/src/mesa/drivers/dri/r200/r200_swtcl.c
+++ b/src/mesa/drivers/dri/r200/r200_swtcl.c
@@ -204,7 +204,21 @@ static void r200SetVertexFormat( GLcontext *ctx )
 
 static void r200RenderStart( GLcontext *ctx )
 {
+   const int vertex_array_size = 7;
+   const int prim_size = 3;
+   r200ContextPtr rmesa = R200_CONTEXT( ctx );
r200SetVertexFormat( ctx );
+   if (RADEON_DEBUG & DEBUG_VERTS)
+  fprintf(stderr, "%s\n", __func__);
+   if (!rmesa->radeon.swtcl.primitive_counter) {
+  if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
+  radeonCountStateEmitSize(&rmesa->radeon) +
+  vertex_array_size + prim_size,
+  __FUNCTION__))
+rmesa->radeon.swtcl.primitive_counter = 0;
+  else
+rmesa->radeon.swtcl.primitive_counter = 1;
+   }
 }
 
 
@@ -268,9 +282,8 @@ void r200ChooseVertexState( GLcontext *ctx )
 void r200_swtcl_flush(GLcontext *ctx, uint32_t current_offset)
 {
r200ContextPtr rmesa = R200_CONTEXT(ctx);
-   rcommonEnsureCmdBufSpace(&rmesa->radeon,
-   radeonCountStateEmitSize(&rmesa->radeon) + 
(12*sizeof(int)),
-   __FUNCTION__);
+   if (RADEON_DEBUG & DEBUG_VERTS)
+  fprintf(stderr, "%s\n", __func__);
 
 
radeonEmitState(&rmesa->radeon);
@@ -284,6 +297,8 @@ void r200_swtcl_flush(GLcontext *ctx, uint32_t 
current_offset)
 rmesa->radeon.swtcl.hw_primitive,
 rmesa->radeon.swtcl.numverts);
 
+   rmesa->radeon.swtcl.primitive_counter = 0;
+
 }
 
 /**/
@@ -890,6 +905,7 @@ void r200InitSwtcl( GLcontext *ctx )
   init_rast_tab();
   firsttime = 0;
}
+   rmesa->radeon.swtcl.primitive_counter = 0;
 
tnl->Driver.Render.Start = r200RenderStart;
tnl->Driver.Render.Finish = r200RenderFinish;
diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.c 
b/src/mesa/drivers/dri/r300/r300_swtcl.c
index 9d6f756..18af51e 100644
--- a/src/mesa/drivers/dri/r300/r300_swtcl.c
+++ b/src/mesa/drivers/dri/r300/r300_swtcl.c
@@ -83,6 +83,9 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint 
*_InputsRead,  GLuint *_
rmesa->swtcl.coloroffset = rmesa->swtcl.specoffset = 0;
rmesa->radeon.swtcl.vertex_attr_count = 0;
 
+   if (RADEON_DEBUG & DEBUG_VERTS)
+   fprintf(stderr, "%s\n", __func__);
+
/* We always want non Ndc coords format */
VB->AttribPtr[VERT_ATTRIB_POS] = VB->ClipPtr;
 
@@ -462,6 +465,8 @@ static void r300ChooseRenderState( GLcontext *ctx )
r300ContextPtr rmesa = R300_CONTEXT(ctx);
GLuint index = 0;
GLuint flags = ctx->_TriangleCaps;
+   if (RADEON_DEBUG & DEBUG_VERTS)
+   fprintf(stderr, "%s\n", __func__);
 
if (flags & DD_TRI_UNFILLED)  index |= R300_UNFILLED_BIT;
 
@@ -489,6 +494,8 @@ static void r300ChooseRenderState( GLcontext *ctx )
 
 void r300RenderStart(GLcontext *ctx)
 {
+   if (RADEON_DEBUG & DEBUG_VERTS)
+   fprintf(stderr, "%s\n", __func__);
r300ContextPtr rmesa = R300_CONTEXT( ctx );
 
r300ChooseRenderState(ctx);
@@ -501,6 +508,19 @@ void r300RenderStart(GLcontext *ctx)
 
r300UpdateShaderStates(rmesa);
 
+   const int vertex_size = 7;
+   const int prim_size = 3;
+
+   if (!rmesa->radeon.swtcl.primitive_counter) {
+   if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
+   
radeonCountStateEmitSize(&rmesa->radeon) +
+   + vertex_size + prim_size,
+   __FUNCTION__))
+   rmesa->radeon.swtcl.primitive_counter = 0;
+   else
+   rmesa->radeon.swtcl.primitive_counter = 1;
+   }
+
r300EmitCacheFlush(rmesa);
 
/* 

Mesa (master): radeon: Make RADEON_CMDBUF more fine grained.

2009-08-26 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: e0e76edf97d391f0c4be58b9d8b91bed0be56734
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0e76edf97d391f0c4be58b9d8b91bed0be56734

Author: Pauli Nieminen 
Date:   Thu Aug 27 00:05:57 2009 +0300

radeon: Make RADEON_CMDBUF more fine grained.

---

 src/mesa/drivers/dri/radeon/radeon_common.c |   10 --
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index e0be15f..9b301cd 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -85,6 +85,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 #include "radeon_mipmap_tree.h"
 #include "radeon_queryobj.h"
 
+/**
+ * Enable verbose debug output for emit code.
+ * 0 no output
+ * 1 most output
+ * 2 also print state alues
+ */
 #define DEBUG_CMDBUF 0
 
 /* =
@@ -906,7 +912,7 @@ static void radeon_print_state_atom_prekmm(radeonContextPtr 
radeon, struct radeo
 
fprintf(stderr, "  emit %s %d/%d\n", state->name, dwords, 
state->cmd_size);
 
-   if (RADEON_DEBUG & DEBUG_VERBOSE) {
+   if (DEBUG_CMDBUF > 1 && RADEON_DEBUG & DEBUG_VERBOSE) {
if (dwords > state->cmd_size)
dwords = state->cmd_size;
 
@@ -943,7 +949,7 @@ static void radeon_print_state_atom(radeonContextPtr 
radeon, struct radeon_state
 
fprintf(stderr, "  emit %s %d/%d\n", state->name, dwords, 
state->cmd_size);
 
-   if (RADEON_DEBUG & DEBUG_VERBOSE) {
+   if (DEBUG_CMDBUF > 1 && RADEON_DEBUG & DEBUG_VERBOSE) {
if (dwords > state->cmd_size)
dwords = state->cmd_size;
for (i = 0; i < state->cmd_size;) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix loop en condition so debug output doesn' t flood meaningless values.

2009-08-26 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 47d4b9ff70c82956a77e8ea7a6abccaa0a9f9083
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=47d4b9ff70c82956a77e8ea7a6abccaa0a9f9083

Author: Pauli Nieminen 
Date:   Thu Aug 27 00:07:05 2009 +0300

radeon: Fix loop en condition so debug output doesn't flood meaningless values.

---

 src/mesa/drivers/dri/radeon/radeon_common.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index 9b301cd..0894372 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -952,7 +952,7 @@ static void radeon_print_state_atom(radeonContextPtr 
radeon, struct radeon_state
if (DEBUG_CMDBUF > 1 && RADEON_DEBUG & DEBUG_VERBOSE) {
if (dwords > state->cmd_size)
dwords = state->cmd_size;
-   for (i = 0; i < state->cmd_size;) {
+   for (i = 0; i < dwords;) {
packet0 = state->cmd[i];
reg = (packet0 & 0x1FFF) << 2;
count = ((packet0 & 0x3FFF) >> 16) + 1;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Merge branch 'fix_r300_swtcl' into push_master

2009-08-26 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 74b55970dc25d6b2a65f385fd298f141176cd4d3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74b55970dc25d6b2a65f385fd298f141176cd4d3

Author: Pauli Nieminen 
Date:   Thu Aug 27 00:08:30 2009 +0300

Merge branch 'fix_r300_swtcl' into push_master

---



___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/r200/r300: Fix swtcl prediction to work after primitie change.

2009-08-27 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 570d4e375a327787441c2c7c4ae698e8993a5d6b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=570d4e375a327787441c2c7c4ae698e8993a5d6b

Author: Pauli Nieminen 
Date:   Thu Aug 27 14:21:13 2009 +0300

radeon/r200/r300: Fix swtcl prediction to work after primitie change.

Swtcl calls flush everytime primitive changes so prediction has to made again
after flushing.

---

 src/mesa/drivers/dri/r200/r200_swtcl.c |   37 ++-
 src/mesa/drivers/dri/r300/r300_swtcl.c |   47 +---
 .../drivers/dri/radeon/radeon_common_context.h |2 +-
 src/mesa/drivers/dri/radeon/radeon_swtcl.c |   41 -
 4 files changed, 86 insertions(+), 41 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c 
b/src/mesa/drivers/dri/r200/r200_swtcl.c
index 6b7279e..3d4e701 100644
--- a/src/mesa/drivers/dri/r200/r200_swtcl.c
+++ b/src/mesa/drivers/dri/r200/r200_swtcl.c
@@ -201,27 +201,35 @@ static void r200SetVertexFormat( GLcontext *ctx )
}
 }
 
-
-static void r200RenderStart( GLcontext *ctx )
+static void r200_predict_emit_size( GLcontext *ctx )
 {
+   r200ContextPtr rmesa = R200_CONTEXT( ctx );
const int vertex_array_size = 7;
const int prim_size = 3;
-   r200ContextPtr rmesa = R200_CONTEXT( ctx );
-   r200SetVertexFormat( ctx );
-   if (RADEON_DEBUG & DEBUG_VERTS)
-  fprintf(stderr, "%s\n", __func__);
-   if (!rmesa->radeon.swtcl.primitive_counter) {
+   if (!rmesa->radeon.swtcl.emit_prediction) {
+  const int state_size = radeonCountStateEmitSize(&rmesa->radeon);
   if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
-  radeonCountStateEmitSize(&rmesa->radeon) +
+  state_size +
   vertex_array_size + prim_size,
   __FUNCTION__))
-rmesa->radeon.swtcl.primitive_counter = 0;
+rmesa->radeon.swtcl.emit_prediction = 
radeonCountStateEmitSize(&rmesa->radeon);
   else
-rmesa->radeon.swtcl.primitive_counter = 1;
+rmesa->radeon.swtcl.emit_prediction = state_size;
+  rmesa->radeon.swtcl.emit_prediction += vertex_array_size + prim_size
++ rmesa->radeon.cmdbuf.cs->cdw;
}
 }
 
 
+static void r200RenderStart( GLcontext *ctx )
+{
+   r200SetVertexFormat( ctx );
+   if (RADEON_DEBUG & DEBUG_VERTS)
+  fprintf(stderr, "%s\n", __func__);
+   r200_predict_emit_size( ctx );
+}
+
+
 /**
  * Set vertex state for SW TCL.  The primary purpose of this function is to
  * determine in advance whether or not the hardware can / should do the
@@ -296,8 +304,13 @@ void r200_swtcl_flush(GLcontext *ctx, uint32_t 
current_offset)
r200EmitVbufPrim( rmesa,
 rmesa->radeon.swtcl.hw_primitive,
 rmesa->radeon.swtcl.numverts);
+   if ( rmesa->radeon.swtcl.emit_prediction < rmesa->radeon.cmdbuf.cs->cdw )
+  WARN_ONCE("Rendering was %d commands larger than predicted size."
+   " We might overflow  command buffer.\n",
+   rmesa->radeon.cmdbuf.cs->cdw - rmesa->radeon.swtcl.emit_prediction 
);
 
-   rmesa->radeon.swtcl.primitive_counter = 0;
+   rmesa->radeon.swtcl.emit_prediction = 0;
+   r200_predict_emit_size( ctx );
 
 }
 
@@ -905,7 +918,7 @@ void r200InitSwtcl( GLcontext *ctx )
   init_rast_tab();
   firsttime = 0;
}
-   rmesa->radeon.swtcl.primitive_counter = 0;
+   rmesa->radeon.swtcl.emit_prediction = 0;
 
tnl->Driver.Render.Start = r200RenderStart;
tnl->Driver.Render.Finish = r200RenderFinish;
diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.c 
b/src/mesa/drivers/dri/r300/r300_swtcl.c
index 18af51e..ca17f30 100644
--- a/src/mesa/drivers/dri/r300/r300_swtcl.c
+++ b/src/mesa/drivers/dri/r300/r300_swtcl.c
@@ -490,6 +490,27 @@ static void r300ChooseRenderState( GLcontext *ctx )
rmesa->radeon.swtcl.RenderIndex = index;
}
 }
+static void r300_predict_emit_size( GLcontext *ctx )
+{
+   r300ContextPtr rmesa = R300_CONTEXT( ctx );
+   if (!rmesa->radeon.swtcl.emit_prediction) {
+   const int vertex_size = 7;
+   const int prim_size = 3;
+   const int cache_flush_size = 4;
+   const int state_size = radeonCountStateEmitSize(&rmesa->radeon);
+
+   if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
+   state_size +
+   + vertex_size + prim_size,
+   __FUNCTION__))
+   rmesa->radeon.swtcl.emit_prediction = 
radeonCountStateEmitSize(&rmesa->radeon);
+   else
+   rmesa->radeon.swtcl.emit_prediction = state_size;
+
+   rmesa->radeon.swtcl.emit_prediction += 
rmesa->radeon.cmdbuf.cs->cdw
+   + vertex_si

Mesa (master): r300: Fix emit prediction to account scissor emitting correctly.

2009-08-27 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 812ccacabcc6af300cf476d7f82ecb75d4982cd6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=812ccacabcc6af300cf476d7f82ecb75d4982cd6

Author: Pauli Nieminen 
Date:   Fri Aug 28 02:04:00 2009 +0300

r300: Fix emit prediction to account scissor emitting correctly.

---

 src/mesa/drivers/dri/r300/r300_draw.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_draw.c 
b/src/mesa/drivers/dri/r300/r300_draw.c
index 5668051..2e475b1 100644
--- a/src/mesa/drivers/dri/r300/r300_draw.c
+++ b/src/mesa/drivers/dri/r300/r300_draw.c
@@ -580,7 +580,7 @@ static GLuint r300PredictTryDrawPrimsSize(GLcontext *ctx, 
GLuint nr_prims)
dwords = 2*CACHE_FLUSH_BUFSZ;
dwords += PRE_EMIT_STATE_BUFSZ;
dwords += (AOS_BUFSZ(vbuf->num_attribs)
-   + SCISSORS_BUFSZ
+   + SCISSORS_BUFSZ*2
+ FIREAOS_BUFSZ )*nr_prims;
 
state_size = radeonCountStateEmitSize(&r300->radeon);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r200: Fix piglit paths test.

2009-08-27 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: e541845959761e9f47d14ade6b58a32db04ef7e4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e541845959761e9f47d14ade6b58a32db04ef7e4

Author: Pauli Nieminen 
Date:   Fri Aug 28 04:12:17 2009 +0300

r200: Fix piglit paths test.

Polygon stipple has to go to command buffer because special ioctl is disabled.
Piglit doesn't like HyperZ warning so disable it for kms.

---

 src/mesa/drivers/dri/r200/r200_context.c |3 ++-
 src/mesa/drivers/dri/r200/r200_state.c   |   25 +++--
 2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_context.c 
b/src/mesa/drivers/dri/r200/r200_context.c
index e402b92..e8e7a42 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -327,7 +327,8 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
rmesa->radeon.initialMaxAnisotropy = 
driQueryOptionf(&rmesa->radeon.optionCache,
"def_max_anisotropy");
 
-   if ( driQueryOptionb( &rmesa->radeon.optionCache, "hyperz" ) ) {
+   if ( sPriv->drm_version.major == 1
+   && driQueryOptionb( &rmesa->radeon.optionCache, "hyperz" ) ) {
   if ( sPriv->drm_version.minor < 13 )
 fprintf( stderr, "DRM version 1.%d too old to support HyperZ, "
  "disabling.\n", sPriv->drm_version.minor );
diff --git a/src/mesa/drivers/dri/r200/r200_state.c 
b/src/mesa/drivers/dri/r200/r200_state.c
index f56da90..4d052e2 100644
--- a/src/mesa/drivers/dri/r200/r200_state.c
+++ b/src/mesa/drivers/dri/r200/r200_state.c
@@ -767,26 +767,31 @@ static void r200PolygonOffset( GLcontext *ctx,
 static void r200PolygonStipple( GLcontext *ctx, const GLubyte *mask )
 {
r200ContextPtr rmesa = R200_CONTEXT(ctx);
-   GLuint i;
+   GLint i;
+   BATCH_LOCALS(&rmesa->radeon);
drm_radeon_stipple_t stipple;
 
+   radeon_firevertices(&rmesa->radeon);
+
+   BEGIN_BATCH_NO_AUTOSTATE(35);
+
+   OUT_BATCH(CP_PACKET0(R200_RE_STIPPLE_ADDR, 0));
+   OUT_BATCH(0x);
+
+   OUT_BATCH(CP_PACKET0_ONE(R200_RE_STIPPLE_DATA, 31));
+
/* Must flip pattern upside down.
 */
-   for ( i = 0 ; i < 32 ; i++ ) {
-  rmesa->state.stipple.mask[31 - i] = ((GLuint *) mask)[i];
+   for ( i = 31 ; i >= 0; i--) {
+  OUT_BATCH(((GLuint *) mask)[i]);
}
 
-   /* TODO: push this into cmd mechanism
-*/
-   radeon_firevertices(&rmesa->radeon);
-   LOCK_HARDWARE( &rmesa->radeon );
+   END_BATCH();
+
 
/* FIXME: Use window x,y offsets into stipple RAM.
 */
stipple.mask = rmesa->state.stipple.mask;
-   drmCommandWrite( rmesa->radeon.dri.fd, DRM_RADEON_STIPPLE,
-&stipple, sizeof(stipple) );
-   UNLOCK_HARDWARE( &rmesa->radeon );
 }
 
 static void r200PolygonMode( GLcontext *ctx, GLenum face, GLenum mode )

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r100/r200: Share PolygonStripple code.

2009-08-27 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: bfbad4fbb7420d3b5e8761c08d197574bfcd44b2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bfbad4fbb7420d3b5e8761c08d197574bfcd44b2

Author: Pauli Nieminen 
Date:   Fri Aug 28 04:58:50 2009 +0300

r100/r200: Share PolygonStripple code.

---

 src/mesa/drivers/dri/r200/r200_state.c  |   32 +--
 src/mesa/drivers/dri/radeon/radeon_common.c |   25 ++
 src/mesa/drivers/dri/radeon/radeon_common.h |1 +
 src/mesa/drivers/dri/radeon/radeon_state.c  |   25 --
 src/mesa/drivers/dri/radeon/server/radeon_reg.h |3 ++
 5 files changed, 30 insertions(+), 56 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state.c 
b/src/mesa/drivers/dri/r200/r200_state.c
index 4d052e2..af60861 100644
--- a/src/mesa/drivers/dri/r200/r200_state.c
+++ b/src/mesa/drivers/dri/r200/r200_state.c
@@ -764,36 +764,6 @@ static void r200PolygonOffset( GLcontext *ctx,
rmesa->hw.zbs.cmd[ZBS_SE_ZBIAS_CONSTANT] = constant.ui32;
 }
 
-static void r200PolygonStipple( GLcontext *ctx, const GLubyte *mask )
-{
-   r200ContextPtr rmesa = R200_CONTEXT(ctx);
-   GLint i;
-   BATCH_LOCALS(&rmesa->radeon);
-   drm_radeon_stipple_t stipple;
-
-   radeon_firevertices(&rmesa->radeon);
-
-   BEGIN_BATCH_NO_AUTOSTATE(35);
-
-   OUT_BATCH(CP_PACKET0(R200_RE_STIPPLE_ADDR, 0));
-   OUT_BATCH(0x);
-
-   OUT_BATCH(CP_PACKET0_ONE(R200_RE_STIPPLE_DATA, 31));
-
-   /* Must flip pattern upside down.
-*/
-   for ( i = 31 ; i >= 0; i--) {
-  OUT_BATCH(((GLuint *) mask)[i]);
-   }
-
-   END_BATCH();
-
-
-   /* FIXME: Use window x,y offsets into stipple RAM.
-*/
-   stipple.mask = rmesa->state.stipple.mask;
-}
-
 static void r200PolygonMode( GLcontext *ctx, GLenum face, GLenum mode )
 {
r200ContextPtr rmesa = R200_CONTEXT(ctx);
@@ -2532,7 +2502,7 @@ void r200InitStateFuncs( struct dd_function_table 
*functions )
functions->LogicOpcode  = r200LogicOpCode;
functions->PolygonMode  = r200PolygonMode;
functions->PolygonOffset= r200PolygonOffset;
-   functions->PolygonStipple   = r200PolygonStipple;
+   functions->PolygonStipple   = radeonPolygonStipple;
functions->PointParameterfv = r200PointParameter;
functions->PointSize= r200PointSize;
functions->RenderMode   = r200RenderMode;
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index bed75f3..e760279 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -273,6 +273,31 @@ void radeonScissor(GLcontext* ctx, GLint x, GLint y, 
GLsizei w, GLsizei h)
}
 }
 
+void radeonPolygonStipple( GLcontext *ctx, const GLubyte *mask )
+{
+   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+   GLint i;
+   BATCH_LOCALS(radeon);
+
+   radeon_firevertices(radeon);
+
+   BEGIN_BATCH_NO_AUTOSTATE(35);
+
+   OUT_BATCH(CP_PACKET0(RADEON_RE_STIPPLE_ADDR, 0));
+   OUT_BATCH(0x);
+
+   OUT_BATCH(CP_PACKET0_ONE(RADEON_RE_STIPPLE_DATA, 31));
+
+   /* Must flip pattern upside down.
+*/
+   for ( i = 31 ; i >= 0; i--) {
+  OUT_BATCH(((GLuint *) mask)[i]);
+   }
+
+   END_BATCH();
+}
+
+
 
 /* 
  * SwapBuffers with client-side throttling
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h 
b/src/mesa/drivers/dri/radeon/radeon_common.h
index a9e1ca4..e2a65f4 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.h
+++ b/src/mesa/drivers/dri/radeon/radeon_common.h
@@ -10,6 +10,7 @@ void radeonRecalcScissorRects(radeonContextPtr radeon);
 void radeonSetCliprects(radeonContextPtr radeon);
 void radeonUpdateScissor( GLcontext *ctx );
 void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h);
+void radeonPolygonStipple( GLcontext *ctx, const GLubyte *mask );
 
 void radeonWaitForIdleLocked(radeonContextPtr radeon);
 extern uint32_t radeonGetAge(radeonContextPtr radeon);
diff --git a/src/mesa/drivers/dri/radeon/radeon_state.c 
b/src/mesa/drivers/dri/radeon/radeon_state.c
index 56f82bd..9d877cb 100644
--- a/src/mesa/drivers/dri/radeon/radeon_state.c
+++ b/src/mesa/drivers/dri/radeon/radeon_state.c
@@ -550,31 +550,6 @@ static void radeonPolygonOffset( GLcontext *ctx,
rmesa->hw.zbs.cmd[ZBS_SE_ZBIAS_CONSTANT] = constant.ui32;
 }
 
-static void radeonPolygonStipple( GLcontext *ctx, const GLubyte *mask )
-{
-   r100ContextPtr rmesa = R100_CONTEXT(ctx);
-   GLuint i;
-   drm_radeon_stipple_t stipple;
-
-   /* Must flip pattern upside down.
-*/
-   for ( i = 0 ; i < 32 ; i++ ) {
-  rmesa->state.stipple.mask[31 - i] = ((GLuint *) mask)[i];
-   }
-
-   /* TODO: push this into cmd mechanism
-*/
-   radeon_firevertices(&rmesa->radeon);
-   LOCK_HARDWARE( &rmesa->radeon );
-
-   /* FIXME: 

Mesa (master): r100/r200: Bring back old PolygonStripple for DRI1.

2009-08-27 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 4322181e6a07ecb8891c2d1ada74fd48c996a8fc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4322181e6a07ecb8891c2d1ada74fd48c996a8fc

Author: Pauli Nieminen 
Date:   Fri Aug 28 05:42:41 2009 +0300

r100/r200: Bring back old PolygonStripple for DRI1.

DRI1 didn't have support for command buffer emit for stripple.

---

 src/mesa/drivers/dri/r200/r200_context.c   |2 +-
 src/mesa/drivers/dri/r200/r200_context.h   |1 -
 src/mesa/drivers/dri/r200/r200_state.c |7 -
 src/mesa/drivers/dri/r200/r200_state.h |2 +-
 src/mesa/drivers/dri/radeon/radeon_common.c|   22 
 src/mesa/drivers/dri/radeon/radeon_common.h|1 +
 .../drivers/dri/radeon/radeon_common_context.h |4 ---
 src/mesa/drivers/dri/radeon/radeon_context.c   |2 +-
 src/mesa/drivers/dri/radeon/radeon_context.h   |1 -
 src/mesa/drivers/dri/radeon/radeon_state.c |7 -
 src/mesa/drivers/dri/radeon/radeon_state.h |2 +-
 11 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_context.c 
b/src/mesa/drivers/dri/r200/r200_context.c
index e8e7a42..0898617 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -345,7 +345,7 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
_mesa_init_driver_functions(&functions);
r200InitDriverFuncs(&functions);
r200InitIoctlFuncs(&functions);
-   r200InitStateFuncs(&functions);
+   r200InitStateFuncs(&functions, screen->kernel_mm);
r200InitTextureFuncs(&functions);
r200InitShaderFuncs(&functions); 
radeonInitQueryObjFunctions(&functions);
diff --git a/src/mesa/drivers/dri/r200/r200_context.h 
b/src/mesa/drivers/dri/r200/r200_context.h
index e26514b..c5dccf0 100644
--- a/src/mesa/drivers/dri/r200/r200_context.h
+++ b/src/mesa/drivers/dri/r200/r200_context.h
@@ -526,7 +526,6 @@ struct r200_hw_state {
 struct r200_state {
/* Derived state for internal purposes:
 */
-   struct radeon_stipple_state stipple;
struct r200_texture_state texture;
GLuint envneeded;
 };
diff --git a/src/mesa/drivers/dri/r200/r200_state.c 
b/src/mesa/drivers/dri/r200/r200_state.c
index af60861..ab1ba1f 100644
--- a/src/mesa/drivers/dri/r200/r200_state.c
+++ b/src/mesa/drivers/dri/r200/r200_state.c
@@ -2468,7 +2468,7 @@ static void r200WrapRunPipeline( GLcontext *ctx )
 
 /* Initialize the driver's state functions.
  */
-void r200InitStateFuncs( struct dd_function_table *functions )
+void r200InitStateFuncs( struct dd_function_table *functions, GLboolean dri2 )
 {
functions->UpdateState  = r200InvalidateState;
functions->LightingSpaceChange  = r200LightingSpaceChange;
@@ -2502,7 +2502,10 @@ void r200InitStateFuncs( struct dd_function_table 
*functions )
functions->LogicOpcode  = r200LogicOpCode;
functions->PolygonMode  = r200PolygonMode;
functions->PolygonOffset= r200PolygonOffset;
-   functions->PolygonStipple   = radeonPolygonStipple;
+   if (dri2)
+  functions->PolygonStipple= radeonPolygonStipple;
+   else
+  functions->PolygonStipple= radeonPolygonStipplePreKMS;
functions->PointParameterfv = r200PointParameter;
functions->PointSize= r200PointSize;
functions->RenderMode   = r200RenderMode;
diff --git a/src/mesa/drivers/dri/r200/r200_state.h 
b/src/mesa/drivers/dri/r200/r200_state.h
index 7b9b0c1..9c62f0a 100644
--- a/src/mesa/drivers/dri/r200/r200_state.h
+++ b/src/mesa/drivers/dri/r200/r200_state.h
@@ -38,7 +38,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 #include "r200_context.h"
 
 extern void r200InitState( r200ContextPtr rmesa );
-extern void r200InitStateFuncs( struct dd_function_table *functions );
+extern void r200InitStateFuncs( struct dd_function_table *functions, GLboolean 
dri2 );
 extern void r200InitTnlFuncs( GLcontext *ctx );
 
 extern void r200UpdateMaterial( GLcontext *ctx );
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index e760279..e14a419 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -273,6 +273,28 @@ void radeonScissor(GLcontext* ctx, GLint x, GLint y, 
GLsizei w, GLsizei h)
}
 }
 
+void radeonPolygonStipplePreKMS( GLcontext *ctx, const GLubyte *mask )
+{
+   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+   GLuint i;
+   drm_radeon_stipple_t stipple;
+
+   /* Must flip pattern upside down.
+   */
+   for ( i = 0 ; i < 32 ; i++ ) {
+  stipple.mask[31 - i] = ((GLuint *) mask)[i];
+   }
+
+   /* TODO: push this into cmd mechanism
+   */
+   radeon_firevertices(radeon);
+   LOCK_HARDW

Mesa (master): radeon: Fix scissors for dri1.

2009-08-28 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 4f644e58d455cbc70fe856576321f868e36b6346
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f644e58d455cbc70fe856576321f868e36b6346

Author: Pauli Nieminen 
Date:   Fri Aug 28 20:41:15 2009 +0300

radeon: Fix scissors for dri1.

DRI1 has to set scissors in framebuffer coordinates.

---

 src/mesa/drivers/dri/radeon/radeon_common.c |   25 +
 1 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index e14a419..ee0cbf6 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -234,9 +234,13 @@ void radeonUpdateScissor( GLcontext *ctx )
GLint x = ctx->Scissor.X, y = ctx->Scissor.Y;
GLsizei w = ctx->Scissor.Width, h = ctx->Scissor.Height;
int x1, y1, x2, y2;
+   int min_x, min_y, max_x, max_y;
 
if (!ctx->DrawBuffer)
return;
+   min_x = min_y = 0;
+   max_x = ctx->DrawBuffer->Width - 1;
+   max_y = ctx->DrawBuffer->Height - 1;
 
if ( !ctx->DrawBuffer->Name ) {
x1 = x;
@@ -250,11 +254,24 @@ void radeonUpdateScissor( GLcontext *ctx )
y2 = y + h - 1;
 
}
+   if (!rmesa->radeonScreen->kernel_mm) {
+  /* Fix scissors for dri 1 */
+
+  __DRIdrawablePrivate *dPriv = radeon_get_drawable(rmesa);
+  x1 += dPriv->x;
+  x2 += dPriv->x + 1;
+  min_x += dPriv->x;
+  max_x += dPriv->x + 1;
+  y1 += dPriv->y;
+  y2 += dPriv->y + 1;
+  min_y += dPriv->y;
+  max_y += dPriv->y + 1;
+   }
 
-   rmesa->state.scissor.rect.x1 = CLAMP(x1,  0, ctx->DrawBuffer->Width - 
1);
-   rmesa->state.scissor.rect.y1 = CLAMP(y1,  0, ctx->DrawBuffer->Height - 
1);
-   rmesa->state.scissor.rect.x2 = CLAMP(x2,  0, ctx->DrawBuffer->Width - 
1);
-   rmesa->state.scissor.rect.y2 = CLAMP(y2,  0, ctx->DrawBuffer->Height - 
1);
+   rmesa->state.scissor.rect.x1 = CLAMP(x1,  min_x, max_x);
+   rmesa->state.scissor.rect.y1 = CLAMP(y1,  min_y, max_y);
+   rmesa->state.scissor.rect.x2 = CLAMP(x2,  min_x, max_x);
+   rmesa->state.scissor.rect.y2 = CLAMP(y2,  min_y, max_y);
 
radeonRecalcScissorRects( rmesa );
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix swtcl emit pediction.

2009-08-28 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 0926a5f4a110926711d0f8a4eb297dc772b09aa2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0926a5f4a110926711d0f8a4eb297dc772b09aa2

Author: Pauli Nieminen 
Date:   Sat Aug 29 00:46:08 2009 +0300

radeon: Fix swtcl emit pediction.

Problem was to find the correct place to run prediction. Only place that is
called for every primitive is ALLOC_VERTS so we have to do prediction there
before allocation.

---

 src/mesa/drivers/dri/r200/r200_swtcl.c |   19 ++--
 src/mesa/drivers/dri/r300/r300_swtcl.c |   63 +++
 src/mesa/drivers/dri/radeon/radeon_dma.c   |   13 --
 src/mesa/drivers/dri/radeon/radeon_swtcl.c |   20 ++---
 4 files changed, 70 insertions(+), 45 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c 
b/src/mesa/drivers/dri/r200/r200_swtcl.c
index 3d4e701..0e7d24e 100644
--- a/src/mesa/drivers/dri/r200/r200_swtcl.c
+++ b/src/mesa/drivers/dri/r200/r200_swtcl.c
@@ -201,9 +201,10 @@ static void r200SetVertexFormat( GLcontext *ctx )
}
 }
 
-static void r200_predict_emit_size( GLcontext *ctx )
+static void r200_predict_emit_size( r200ContextPtr rmesa )
 {
-   r200ContextPtr rmesa = R200_CONTEXT( ctx );
+   if (RADEON_DEBUG & DEBUG_VERTS)
+  fprintf(stderr, "%s\n", __func__);
const int vertex_array_size = 7;
const int prim_size = 3;
if (!rmesa->radeon.swtcl.emit_prediction) {
@@ -226,7 +227,6 @@ static void r200RenderStart( GLcontext *ctx )
r200SetVertexFormat( ctx );
if (RADEON_DEBUG & DEBUG_VERTS)
   fprintf(stderr, "%s\n", __func__);
-   r200_predict_emit_size( ctx );
 }
 
 
@@ -310,7 +310,6 @@ void r200_swtcl_flush(GLcontext *ctx, uint32_t 
current_offset)
rmesa->radeon.cmdbuf.cs->cdw - rmesa->radeon.swtcl.emit_prediction 
);
 
rmesa->radeon.swtcl.emit_prediction = 0;
-   r200_predict_emit_size( ctx );
 
 }
 
@@ -358,11 +357,21 @@ static void r200ResetLineStipple( GLcontext *ctx );
 #define HAVE_POLYGONS1
 #define HAVE_ELTS0
 
+static void* r200_alloc_verts( r200ContextPtr rmesa, GLuint n, GLuint size)
+{
+   void *rv;
+   do {
+  r200_predict_emit_size( rmesa );
+  rv = rcommonAllocDmaLowVerts( &rmesa->radeon, n, size * 4 );
+   } while(!rv);
+   return rv;
+}
+
 #undef LOCAL_VARS
 #undef ALLOC_VERTS
 #define CTX_ARG r200ContextPtr rmesa
 #define GET_VERTEX_DWORDS() rmesa->radeon.swtcl.vertex_size
-#define ALLOC_VERTS( n, size ) rcommonAllocDmaLowVerts( &rmesa->radeon, n, 
size * 4 )
+#define ALLOC_VERTS( n, size ) r200_alloc_verts(rmesa, n, size)
 #define LOCAL_VARS \
r200ContextPtr rmesa = R200_CONTEXT(ctx);   \
const char *r200verts = (char *)rmesa->radeon.swtcl.verts;
diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.c 
b/src/mesa/drivers/dri/r300/r300_swtcl.c
index ca17f30..e4a56ca 100644
--- a/src/mesa/drivers/dri/r300/r300_swtcl.c
+++ b/src/mesa/drivers/dri/r300/r300_swtcl.c
@@ -43,9 +43,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #define EMIT_ATTR( ATTR, STYLE )   \
 do {   \
-   
rmesa->radeon.swtcl.vertex_attrs[rmesa->radeon.swtcl.vertex_attr_count].attrib 
= (ATTR);\
-   
rmesa->radeon.swtcl.vertex_attrs[rmesa->radeon.swtcl.vertex_attr_count].format 
= (STYLE);   \
-   rmesa->radeon.swtcl.vertex_attr_count++;
\
+   
rmesa->radeon.swtcl.vertex_attrs[rmesa->radeon.swtcl.vertex_attr_count].attrib 
= (ATTR);\
+   
rmesa->radeon.swtcl.vertex_attrs[rmesa->radeon.swtcl.vertex_attr_count].format 
= (STYLE);   \
+   rmesa->radeon.swtcl.vertex_attr_count++;
\
 } while (0)
 
 #define EMIT_PAD( N )  \
@@ -242,6 +242,27 @@ static void r300PrepareVertices(GLcontext *ctx)
rmesa->radeon.swtcl.vertex_size /= 4;
 }
 
+static void r300_predict_emit_size( r300ContextPtr rmesa )
+{
+   if (!rmesa->radeon.swtcl.emit_prediction) {
+   const int vertex_size = 7;
+   const int prim_size = 3;
+   const int cache_flush_size = 4;
+   const int state_size = radeonCountStateEmitSize(&rmesa->radeon);
+
+   if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
+   state_size +
+   + vertex_size + prim_size,
+   __FUNCTION__))
+   rmesa->radeon.swtcl.emit_prediction = 
radeonCountStateEmitSize(&rmesa->radeon);
+   else
+   rmesa->radeon.swtcl.emit_prediction = state_size;
+
+   rmesa->radeon.swtcl.emit_prediction += 
rmesa->radeon.cmdbuf.cs->cdw
+   + vertex_size

Mesa (master): r300: Add missing pre_emit_count to swtcl state size prediction.

2009-08-29 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 32df8922a9eebf64f6bace532a21b305eacc4938
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=32df8922a9eebf64f6bace532a21b305eacc4938

Author: Pauli Nieminen 
Date:   Sat Aug 29 18:38:30 2009 +0300

r300: Add missing pre_emit_count to swtcl state size prediction.

---

 src/mesa/drivers/dri/r300/r300_swtcl.c |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.c 
b/src/mesa/drivers/dri/r300/r300_swtcl.c
index e4a56ca..45dfbf2 100644
--- a/src/mesa/drivers/dri/r300/r300_swtcl.c
+++ b/src/mesa/drivers/dri/r300/r300_swtcl.c
@@ -248,18 +248,19 @@ static void r300_predict_emit_size( r300ContextPtr rmesa )
const int vertex_size = 7;
const int prim_size = 3;
const int cache_flush_size = 4;
+   const int pre_emit_state = 4;
const int state_size = radeonCountStateEmitSize(&rmesa->radeon);
 
if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
-   state_size +
-   + vertex_size + prim_size,
+   state_size + pre_emit_state
+   + vertex_size + prim_size + 
cache_flush_size * 2,
__FUNCTION__))
rmesa->radeon.swtcl.emit_prediction = 
radeonCountStateEmitSize(&rmesa->radeon);
else
rmesa->radeon.swtcl.emit_prediction = state_size;
 
rmesa->radeon.swtcl.emit_prediction += 
rmesa->radeon.cmdbuf.cs->cdw
-   + vertex_size + prim_size + cache_flush_size * 2;
+   + vertex_size + prim_size + cache_flush_size * 2 + 
pre_emit_state;
}
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r300: Disable threshold register for KMS.

2009-08-29 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: e48dc9c5edb0f001bf7252ee2294d36707aa066c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e48dc9c5edb0f001bf7252ee2294d36707aa066c

Author: Pauli Nieminen 
Date:   Sat Aug 29 21:04:40 2009 +0300

r300: Disable threshold register for KMS.

Kernel side doesn't have required register in safe list so can't send it kernel.

---

 src/mesa/drivers/dri/r300/r300_cmdbuf.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c 
b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
index e1047be..451f1fd 100644
--- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c
+++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
@@ -685,9 +685,10 @@ void r300InitCmdBuf(r300ContextPtr r300)
ALLOC_STATE(rb3d_aaresolve_ctl, always, 2, 0);
r300->hw.rb3d_aaresolve_ctl.cmd[0] = 
cmdpacket0(r300->radeon.radeonScreen, R300_RB3D_AARESOLVE_CTL, 1);
if ((r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV515) ||
+ ( !r300->radeon.radeonScreen->kernel_mm && (
(r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_RS400) ||
(r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV410) ||
-   (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R420)) {
+   (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R420) ) ) ) {
ALLOC_STATE(rb3d_discard_src_pixel_lte_threshold, always, 3, 0);
} else {
ALLOC_STATE(rb3d_discard_src_pixel_lte_threshold, never, 3, 0);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r300: Swtcl prediction was still missing scissors.

2009-08-29 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 9c0ab1fa850fdbc8a64a29c1e996579dabc84bdc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9c0ab1fa850fdbc8a64a29c1e996579dabc84bdc

Author: Pauli Nieminen 
Date:   Sat Aug 29 21:00:21 2009 +0300

r300: Swtcl prediction was still missing scissors.

All that state stuff should really be in state atoms :/

---

 src/mesa/drivers/dri/r300/r300_swtcl.c |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.c 
b/src/mesa/drivers/dri/r300/r300_swtcl.c
index 45dfbf2..b3793e2 100644
--- a/src/mesa/drivers/dri/r300/r300_swtcl.c
+++ b/src/mesa/drivers/dri/r300/r300_swtcl.c
@@ -249,10 +249,11 @@ static void r300_predict_emit_size( r300ContextPtr rmesa )
const int prim_size = 3;
const int cache_flush_size = 4;
const int pre_emit_state = 4;
+   const int scissor_size = 3;
const int state_size = radeonCountStateEmitSize(&rmesa->radeon);
 
if (rcommonEnsureCmdBufSpace(&rmesa->radeon,
-   state_size + pre_emit_state
+   state_size + pre_emit_state + 
scissor_size
+ vertex_size + prim_size + 
cache_flush_size * 2,
__FUNCTION__))
rmesa->radeon.swtcl.emit_prediction = 
radeonCountStateEmitSize(&rmesa->radeon);
@@ -260,7 +261,7 @@ static void r300_predict_emit_size( r300ContextPtr rmesa )
rmesa->radeon.swtcl.emit_prediction = state_size;
 
rmesa->radeon.swtcl.emit_prediction += 
rmesa->radeon.cmdbuf.cs->cdw
-   + vertex_size + prim_size + cache_flush_size * 2 + 
pre_emit_state;
+   + vertex_size + scissor_size + prim_size + 
cache_flush_size * 2 + pre_emit_state;
}
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add common debugging functions.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: f9a4a0a9710c23a2041673eec290ff2f9260cbd0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9a4a0a9710c23a2041673eec290ff2f9260cbd0

Author: Pauli Nieminen 
Date:   Sun Aug 30 16:48:33 2009 +0300

radeon: Add common debugging functions.

These function are aiming to make it very simple to add and keep large amount
of debugging code without having runtime impact in relase builds. Basic idea
is to expose simple printf style debugging functions that are inlined.

Level parameter will be evalueted in compile time so compiler can optimise
some of debugging functions out if compile time request for debug level is too
tight.

---

 src/mesa/drivers/dri/r200/radeon_debug.c   |1 +
 src/mesa/drivers/dri/r200/radeon_debug.h   |1 +
 src/mesa/drivers/dri/r300/radeon_debug.c   |1 +
 src/mesa/drivers/dri/r300/radeon_debug.h   |1 +
 src/mesa/drivers/dri/r600/radeon_debug.c   |1 +
 src/mesa/drivers/dri/r600/radeon_debug.h   |1 +
 src/mesa/drivers/dri/radeon/radeon_debug.c |   62 
 src/mesa/drivers/dri/radeon/radeon_debug.h |  145 
 8 files changed, 213 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/radeon_debug.c 
b/src/mesa/drivers/dri/r200/radeon_debug.c
new file mode 12
index 000..c98c2e0
--- /dev/null
+++ b/src/mesa/drivers/dri/r200/radeon_debug.c
@@ -0,0 +1 @@
+../radeon/radeon_debug.c
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/r200/radeon_debug.h 
b/src/mesa/drivers/dri/r200/radeon_debug.h
new file mode 12
index 000..bd8aa28
--- /dev/null
+++ b/src/mesa/drivers/dri/r200/radeon_debug.h
@@ -0,0 +1 @@
+../radeon/radeon_debug.h
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/r300/radeon_debug.c 
b/src/mesa/drivers/dri/r300/radeon_debug.c
new file mode 12
index 000..c98c2e0
--- /dev/null
+++ b/src/mesa/drivers/dri/r300/radeon_debug.c
@@ -0,0 +1 @@
+../radeon/radeon_debug.c
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/r300/radeon_debug.h 
b/src/mesa/drivers/dri/r300/radeon_debug.h
new file mode 12
index 000..bd8aa28
--- /dev/null
+++ b/src/mesa/drivers/dri/r300/radeon_debug.h
@@ -0,0 +1 @@
+../radeon/radeon_debug.h
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/r600/radeon_debug.c 
b/src/mesa/drivers/dri/r600/radeon_debug.c
new file mode 12
index 000..c98c2e0
--- /dev/null
+++ b/src/mesa/drivers/dri/r600/radeon_debug.c
@@ -0,0 +1 @@
+../radeon/radeon_debug.c
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/r600/radeon_debug.h 
b/src/mesa/drivers/dri/r600/radeon_debug.h
new file mode 12
index 000..bd8aa28
--- /dev/null
+++ b/src/mesa/drivers/dri/r600/radeon_debug.h
@@ -0,0 +1 @@
+../radeon/radeon_debug.h
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.c 
b/src/mesa/drivers/dri/radeon/radeon_debug.c
new file mode 100644
index 000..b5e7b66
--- /dev/null
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.c
@@ -0,0 +1,62 @@
+/*
+ * Copyright © 2009 Pauli Nieminen
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ */
+/*
+ * Authors:
+ *  Pauli Nieminen 
+ */
+
+#include "utils.h"
+
+#include "radeon_debug.h"
+
+static const struct dri_debug_control debug_control[] = {
+   {"fall", RADEON_FALLBACKS},
+   {"tex", RADEON_TEXTURE},
+   {"ioctl", RADEON_IOCTL},
+   {"render", RADEON_RENDER},
+   {"swrender", RADEON_SWRENDER},
+   {"state", RADEON_STATE},
+   {"shader", RADEON_SHADER},
+   {"vfmt", RADEON_VFMT},
+   {"vtxf", RADEON_VFMT},
+   {"dri", RADEON_DRI},
+   {"dma", RADEON_DMA},
+   {"sanity", RADEON_SANITY},
+   {"

Mesa (master): radeon: Add gcc attribute to enable pritnf format warnings.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: b6ebcf8156c4735c2e96e5aad26c3a8dc29f50a6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b6ebcf8156c4735c2e96e5aad26c3a8dc29f50a6

Author: Pauli Nieminen 
Date:   Sun Aug 30 22:07:13 2009 +0300

radeon: Add gcc attribute to enable pritnf format warnings.

---

 src/mesa/drivers/dri/radeon/radeon_debug.h |   16 
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index ace8a99..4452174 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -81,6 +81,20 @@ static inline int radeon_is_debug_enabled(const 
radeon_debug_type_t type,
return RADEON_DEBUG_LEVEL <= level
&& (type & radeon_enabled_debug_types);
 }
+/*
+ * define macro for gcc specific __attribute__ if using alternative compiler
+ */
+#ifndef __GNUC__
+#define  __attribute__(x)  /*empty*/
+#endif
+
+/**
+ * Format attribute requires declaration for setting it. Don't ask me why!
+ */
+static inline void radeon_print(const radeon_debug_type_t type,
+  const radeon_debug_level_t level,
+  const char* message,
+  ...) __attribute__((format(printf,3,4)));
 
 /**
  * Print out debug message if channel specified by type is enabled
@@ -101,6 +115,7 @@ static inline void radeon_print(const radeon_debug_type_t 
type,
}
 }
 
+static inline void radeon_error(const char* message, ...)  
__attribute__((format(printf,1,2)));
 /**
  * printf style function for writing error messages.
  */
@@ -112,6 +127,7 @@ static inline void radeon_error(const char* message, ...)
va_end( values );
 }
 
+static inline void radeon_warning(const char* message, ...)  
__attribute__((format(printf,1,2)));
 /**
  * printf style function for writing warnings.
  */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Make OQ to use new style debugging.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: fe62e4c3ff13888a85274c23b8835460401e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe62e4c3ff13888a85274c23b8835460401e

Author: Pauli Nieminen 
Date:   Sun Aug 30 22:07:49 2009 +0300

radeon: Make OQ to use new style debugging.

---

 src/mesa/drivers/dri/radeon/radeon_queryobj.c |   23 ---
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_queryobj.c 
b/src/mesa/drivers/dri/radeon/radeon_queryobj.c
index 7eef4fa..ed5ebd1 100644
--- a/src/mesa/drivers/dri/radeon/radeon_queryobj.c
+++ b/src/mesa/drivers/dri/radeon/radeon_queryobj.c
@@ -26,12 +26,11 @@
  */
 #include "radeon_common.h"
 #include "radeon_queryobj.h"
+#include "radeon_debug.h"
 
 #include "main/imports.h"
 #include "main/simple_list.h"
 
-#define DDEBUG 0
-
 static int radeonQueryIsFlushed(GLcontext *ctx, struct gl_query_object *q)
 {
radeonContextPtr radeon = RADEON_CONTEXT(ctx);
@@ -52,7 +51,9 @@ static void radeonQueryGetResult(GLcontext *ctx, struct 
gl_query_object *q)
uint32_t *result;
int i;
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d, result %d\n", 
__FUNCTION__, query->Base.Id, (int) query->Base.Result);
+   radeon_print(RADEON_STATE, RADEON_VERBOSE,
+   "%s: query id %d, result %d\n",
+   __FUNCTION__, query->Base.Id, (int) query->Base.Result);
 
radeon_bo_map(query->bo, GL_FALSE);
 
@@ -61,7 +62,7 @@ static void radeonQueryGetResult(GLcontext *ctx, struct 
gl_query_object *q)
query->Base.Result = 0;
for (i = 0; i < query->curr_offset/sizeof(uint32_t); ++i) {
query->Base.Result += result[i];
-   if (DDEBUG) fprintf(stderr, "result[%d] = %d\n", i, result[i]);
+   radeon_print(RADEON_STATE, RADEON_TRACE, "result[%d] = %d\n", 
i, result[i]);
}
 
radeon_bo_unmap(query->bo);
@@ -78,7 +79,7 @@ static struct gl_query_object * 
radeonNewQueryObject(GLcontext *ctx, GLuint id)
query->Base.Active = GL_FALSE;
query->Base.Ready = GL_TRUE;
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d\n", __FUNCTION__, 
query->Base.Id);
+   radeon_print(RADEON_STATE, RADEON_VERBOSE,"%s: query id %d\n", 
__FUNCTION__, query->Base.Id);
 
return &query->Base;
 }
@@ -87,7 +88,7 @@ static void radeonDeleteQuery(GLcontext *ctx, struct 
gl_query_object *q)
 {
struct radeon_query_object *query = (struct radeon_query_object *)q;
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d\n", __FUNCTION__, q->Id);
+   radeon_print(RADEON_STATE, RADEON_NORMAL, "%s: query id %d\n", 
__FUNCTION__, q->Id);
 
if (query->bo) {
radeon_bo_unref(query->bo);
@@ -104,7 +105,7 @@ static void radeonWaitQuery(GLcontext *ctx, struct 
gl_query_object *q)
if (!radeonQueryIsFlushed(ctx, q))
ctx->Driver.Flush(ctx);
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d, bo %p, offset %d\n", 
__FUNCTION__, q->Id, query->bo, query->curr_offset);
+   radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s: query id %d, bo %p, 
offset %d\n", __FUNCTION__, q->Id, query->bo, query->curr_offset);
 
radeonQueryGetResult(ctx, q);
 
@@ -117,7 +118,7 @@ static void radeonBeginQuery(GLcontext *ctx, struct 
gl_query_object *q)
radeonContextPtr radeon = RADEON_CONTEXT(ctx);
struct radeon_query_object *query = (struct radeon_query_object *)q;
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d\n", __FUNCTION__, q->Id);
+   radeon_print(RADEON_STATE, RADEON_NORMAL, "%s: query id %d\n", 
__FUNCTION__, q->Id);
 
assert(radeon->query.current == NULL);
 
@@ -147,7 +148,7 @@ void radeonEmitQueryEnd(GLcontext *ctx)
if (query->emitted_begin == GL_FALSE)
return;
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d, bo %p, offset %d\n", 
__FUNCTION__, query->Base.Id, query->bo, query->curr_offset);
+   radeon_print(RADEON_STATE, RADEON_NORMAL, "%s: query id %d, bo %p, 
offset %d\n", __FUNCTION__, query->Base.Id, query->bo, query->curr_offset);
 
radeon_cs_space_check_with_bo(radeon->cmdbuf.cs,
  query->bo,
@@ -160,7 +161,7 @@ static void radeonEndQuery(GLcontext *ctx, struct 
gl_query_object *q)
 {
radeonContextPtr radeon = RADEON_CONTEXT(ctx);
 
-   if (DDEBUG) fprintf(stderr, "%s: query id %d\n", __FUNCTION__, q->Id);
+   radeon_print(RADEON_STATE, RADEON_NORMAL, "%s: query id %d\n", 
__FUNCTION__, q->Id);
 
if (radeon->dma.flush)
radeon->dma.flush(radeon->glC

Mesa (master): r600: Convert to shared debug code and add a few new debug messages.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: aabb36fdd58ff891e3a0946e2326d458f5a4d832
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=aabb36fdd58ff891e3a0946e2326d458f5a4d832

Author: Pauli Nieminen 
Date:   Sun Aug 30 22:08:38 2009 +0300

r600: Convert to shared debug code and add a few new debug messages.

There is only a few functions that have debugging enabled now.

---

 src/mesa/drivers/dri/r600/Makefile  |9 ++--
 src/mesa/drivers/dri/r600/r600_context.c|   10 +++-
 src/mesa/drivers/dri/r600/r600_emit.c   |   28 ++-
 src/mesa/drivers/dri/r600/r600_tex.c|   20 +++-
 src/mesa/drivers/dri/r600/r600_texstate.c   |8 +--
 src/mesa/drivers/dri/r600/r700_assembler.c  |   72 +-
 src/mesa/drivers/dri/r600/r700_chip.c   |   34 +
 src/mesa/drivers/dri/r600/r700_clear.c  |5 +-
 src/mesa/drivers/dri/r600/r700_debug.c  |   35 ++---
 src/mesa/drivers/dri/r600/r700_debug.h  |   60 +-
 src/mesa/drivers/dri/r600/r700_oglprog.c|6 ++
 src/mesa/drivers/dri/r600/r700_render.c |   10 ++--
 src/mesa/drivers/dri/r600/r700_shaderinst.c |   14 +++---
 src/mesa/drivers/dri/r600/r700_vertprog.c   |3 +-
 14 files changed, 141 insertions(+), 173 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/Makefile 
b/src/mesa/drivers/dri/r600/Makefile
index 3c3100a..d925a2d 100644
--- a/src/mesa/drivers/dri/r600/Makefile
+++ b/src/mesa/drivers/dri/r600/Makefile
@@ -27,16 +27,17 @@ COMMON_SOURCES = \
../common/dri_util.c
 
 RADEON_COMMON_SOURCES = \
-   radeon_texture.c \
+   radeon_bo_legacy.c \
radeon_common_context.c \
radeon_common.c \
+   radeon_cs_legacy.c \
radeon_dma.c \
+   radeon_debug.c \
+   radeon_fbo.c \
radeon_lock.c \
-   radeon_bo_legacy.c \
-   radeon_cs_legacy.c \
radeon_mipmap_tree.c \
radeon_span.c \
-   radeon_fbo.c \
+   radeon_texture.c \
radeon_queryobj.c
 
 DRIVER_SOURCES = \
diff --git a/src/mesa/drivers/dri/r600/r600_context.c 
b/src/mesa/drivers/dri/r600/r600_context.c
index 6a066f3..251c124 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -56,6 +56,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 
 #include "drivers/common/driverfuncs.h"
 
+#include "radeon_debug.h"
 #include "r600_context.h"
 #include "radeon_common_context.h"
 #include "radeon_span.h"
@@ -225,8 +226,10 @@ GLboolean r600CreateContext(const __GLcontextModes * 
glVisual,
 
/* Allocate the R600 context */
r600 = (context_t*) CALLOC(sizeof(*r600));
-   if (!r600)
+   if (!r600) {
+   radeon_error("Failed to allocate memory for context.\n");
return GL_FALSE;
+   }
 
if (!(screen->chip_flags & RADEON_CHIPSET_TCL))
hw_tcl_on = future_hw_tcl_on = 0;
@@ -255,6 +258,7 @@ GLboolean r600CreateContext(const __GLcontextModes * 
glVisual,
if (!radeonInitContext(&r600->radeon, &functions,
   glVisual, driContextPriv,
   sharedContextPrivate)) {
+   radeon_error("Initializing context failed.\n");
FREE(r600);
return GL_FALSE;
}
@@ -347,6 +351,8 @@ GLboolean r600CreateContext(const __GLcontextModes * 
glVisual,
ctx->VertexProgram._MaintainTnlProgram = GL_TRUE;
ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE;
 
+   radeon_init_debug();
+
driInitExtensions(ctx, card_extensions, GL_TRUE);
if (r600->radeon.radeonScreen->kernel_mm)
  driInitExtensions(ctx, mm_extensions, GL_FALSE);
@@ -375,7 +381,7 @@ GLboolean r600CreateContext(const __GLcontextModes * 
glVisual,
TNL_CONTEXT(ctx)->Driver.RunPipeline = r600RunPipeline;
 
if (driQueryOptionb(&r600->radeon.optionCache, "no_rast")) {
-   fprintf(stderr, "disabling 3D acceleration\n");
+   radeon_warning("disabling 3D acceleration\n");
 #if R200_MERGED
FALLBACK(&r600->radeon, RADEON_FALLBACK_DISABLE, 1);
 #endif
diff --git a/src/mesa/drivers/dri/r600/r600_emit.c 
b/src/mesa/drivers/dri/r600/r600_emit.c
index f8c56e7..5c250c2 100644
--- a/src/mesa/drivers/dri/r600/r600_emit.c
+++ b/src/mesa/drivers/dri/r600/r600_emit.c
@@ -60,28 +60,30 @@ GLboolean r600EmitShader(GLcontext * ctx,
radeonContextPtr radeonctx = RADEON_CONTEXT(ctx);
struct radeon_bo * pbo;
uint32_t *out;
-
 shader_again_alloc:
pbo = radeon_bo_open(radeonctx->radeonScreen->bom,
-0,
-sizeinDWORD * 4,
-256,
-RADEON_GEM_DOMAIN_GTT,
- 

Mesa (master): r100: Use shared debug code.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 4e0d99a63588c67a955f797733da32d04e6f4ee6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e0d99a63588c67a955f797733da32d04e6f4ee6

Author: Pauli Nieminen 
Date:   Sun Aug 30 19:44:16 2009 +0300

r100: Use shared debug code.

Converted r100 to use shared debug code with sed and fast compile check. New
code has compability layer so old debugging code doesn't have to be changed
all immidiatly.

---

 src/mesa/drivers/dri/radeon/Makefile   |   11 ++--
 src/mesa/drivers/dri/radeon/radeon_bo_legacy.c |4 +-
 src/mesa/drivers/dri/radeon/radeon_common.c|   59 +---
 .../drivers/dri/radeon/radeon_common_context.c |   14 ++--
 .../drivers/dri/radeon/radeon_common_context.h |   45 +---
 src/mesa/drivers/dri/radeon/radeon_context.c   |   19 --
 src/mesa/drivers/dri/radeon/radeon_debug.c |1 +
 src/mesa/drivers/dri/radeon/radeon_debug.h |   33 ++-
 src/mesa/drivers/dri/radeon/radeon_dma.c   |   26 
 src/mesa/drivers/dri/radeon/radeon_fbo.c   |2 +-
 src/mesa/drivers/dri/radeon/radeon_ioctl.c |   16 +++---
 src/mesa/drivers/dri/radeon/radeon_lighting.c  |6 +-
 src/mesa/drivers/dri/radeon/radeon_lock.c  |2 +-
 src/mesa/drivers/dri/radeon/radeon_maos_arrays.c   |   10 ++--
 src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h|3 +-
 src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c   |2 +-
 src/mesa/drivers/dri/radeon/radeon_sanity.c|4 +-
 src/mesa/drivers/dri/radeon/radeon_screen.c|   33 +--
 src/mesa/drivers/dri/radeon/radeon_state.c |8 +-
 src/mesa/drivers/dri/radeon/radeon_swtcl.c |   14 ++--
 src/mesa/drivers/dri/radeon/radeon_tcl.c   |6 +-
 src/mesa/drivers/dri/radeon/radeon_tex.c   |   11 +--
 src/mesa/drivers/dri/radeon/radeon_texstate.c  |8 +-
 src/mesa/drivers/dri/radeon/radeon_texture.c   |   10 ++--
 24 files changed, 125 insertions(+), 222 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/Makefile 
b/src/mesa/drivers/dri/radeon/Makefile
index 8fe9d98..1f28677 100644
--- a/src/mesa/drivers/dri/radeon/Makefile
+++ b/src/mesa/drivers/dri/radeon/Makefile
@@ -15,17 +15,18 @@ CS_SOURCES = radeon_cs_space_drm.c
 endif
 
 RADEON_COMMON_SOURCES = \
-   radeon_texture.c \
+   radeon_bo_legacy.c \
radeon_common_context.c \
radeon_common.c \
+   radeon_cs_legacy.c \
radeon_dma.c \
+   radeon_debug.c \
+   radeon_fbo.c \
radeon_lock.c \
-   radeon_bo_legacy.c \
-   radeon_cs_legacy.c \
radeon_mipmap_tree.c \
+   radeon_queryobj.c \
radeon_span.c \
-   radeon_fbo.c \
-   radeon_queryobj.c
+   radeon_texture.c
 
 DRIVER_SOURCES = \
radeon_context.c \
diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c 
b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
index a10c6b7..3e7547d 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
+++ b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
@@ -640,7 +640,7 @@ static int bo_vram_validate(struct radeon_bo *bo,
  &tex,
  
sizeof(drm_radeon_texture_t));
if (ret) {
-   if (RADEON_DEBUG & DEBUG_IOCTL)
+   if (RADEON_DEBUG & RADEON_IOCTL)
fprintf(stderr, 
"DRM_RADEON_TEXTURE:  again!\n");
usleep(1);
}
@@ -677,7 +677,7 @@ static int bo_vram_validate(struct radeon_bo *bo,
  &tex,
  
sizeof(drm_radeon_texture_t));
if (ret) {
-   if (RADEON_DEBUG & DEBUG_IOCTL)
+   if (RADEON_DEBUG & RADEON_IOCTL)
fprintf(stderr, 
"DRM_RADEON_TEXTURE:  again!\n");
usleep(1);
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index ee0cbf6..aaa5165 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -91,7 +91,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
  * 1 most output
  * 2 also print state alues
  */
-#define DEBUG_CMDBUF 0
+#define RADEON_CMDBUF 0
 
 /* =
  * Scissoring
@@ -521,7 +521,7 @@ void radeonCopyBuffer( __DRIdrawablePrivate *dPriv,
 
rfb = dPriv->driverPrivate;
 
-   if ( RADEON_DEBUG & DEBUG_IOCTL ) {
+   if ( RADEON_DEBUG &

Mesa (master): r200: Convert r200 to use new style debug code.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 239105c6c87da0b0c5c15ae54b19fe39492b0f29
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=239105c6c87da0b0c5c15ae54b19fe39492b0f29

Author: Pauli Nieminen 
Date:   Sun Aug 30 23:06:05 2009 +0300

r200: Convert r200 to use new style debug code.

Only very few places where realy converted so there isa lot of to do.

---

 src/mesa/drivers/dri/r200/Makefile|   11 ++-
 src/mesa/drivers/dri/r200/r200_cmdbuf.c   |   29 +++--
 src/mesa/drivers/dri/r200/r200_context.c  |   27 ---
 src/mesa/drivers/dri/r200/r200_ioctl.c|   10 +-
 src/mesa/drivers/dri/r200/r200_pixel.c|   28 ++--
 src/mesa/drivers/dri/r200/r200_sanity.c   |4 ++--
 src/mesa/drivers/dri/r200/r200_state.c|   12 ++--
 src/mesa/drivers/dri/r200/r200_swtcl.c|   12 ++--
 src/mesa/drivers/dri/r200/r200_tcl.c  |   14 +++---
 src/mesa/drivers/dri/r200/r200_tex.c  |8 
 src/mesa/drivers/dri/r200/r200_texstate.c |   10 +-
 src/mesa/drivers/dri/r200/r200_vertprog.c |   14 +++---
 12 files changed, 73 insertions(+), 106 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/Makefile 
b/src/mesa/drivers/dri/r200/Makefile
index 25ecbef..42635bf 100644
--- a/src/mesa/drivers/dri/r200/Makefile
+++ b/src/mesa/drivers/dri/r200/Makefile
@@ -18,17 +18,18 @@ CS_SOURCES = radeon_cs_space_drm.c
 endif
 
 RADEON_COMMON_SOURCES = \
-   radeon_texture.c \
+   radeon_bo_legacy.c \
radeon_common_context.c \
radeon_common.c \
+   radeon_cs_legacy.c \
radeon_dma.c \
+   radeon_debug.c \
+   radeon_fbo.c \
radeon_lock.c \
-   radeon_bo_legacy.c \
-   radeon_cs_legacy.c \
radeon_mipmap_tree.c \
+   radeon_queryobj.c \
radeon_span.c \
-   radeon_fbo.c \
-   radeon_queryobj.c
+   radeon_texture.c
 
 
 DRIVER_SOURCES = r200_context.c \
diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c 
b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 1fe68c2..7d0df55 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -126,9 +126,9 @@ void r200EmitVbufPrim( r200ContextPtr rmesa,

radeonEmitState(&rmesa->radeon);

-   if (R200_DEBUG & (DEBUG_IOCTL|DEBUG_PRIMS))
-  fprintf(stderr, "%s cmd_used/4: %d prim %x nr %d\n", __FUNCTION__,
- rmesa->store.cmd_used/4, primitive, vertex_nr);
+   radeon_print(RADEON_RENDER|RADEON_SWRENDER,RADEON_VERBOSE,
+   "%s cmd_used/4: %d prim %x nr %d\n", __FUNCTION__,
+   rmesa->store.cmd_used/4, primitive, vertex_nr);
  
BEGIN_BATCH(3);
OUT_BATCH_PACKET3_CLIP(R200_CP_CMD_3D_DRAW_VBUF_2, 0);
@@ -175,8 +175,7 @@ void r200FlushElts(GLcontext *ctx)
r200ContextPtr rmesa = R200_CONTEXT(ctx);
int nr, elt_used = rmesa->tcl.elt_used;
 
-   if (R200_DEBUG & (DEBUG_IOCTL|DEBUG_PRIMS))
- fprintf(stderr, "%s %x %d\n", __FUNCTION__, rmesa->tcl.hw_primitive, 
elt_used);
+   radeon_print(RADEON_RENDER, RADEON_VERBOSE, "%s %x %d\n", __FUNCTION__, 
rmesa->tcl.hw_primitive, elt_used);
 
assert( rmesa->radeon.dma.flush == r200FlushElts );
rmesa->radeon.dma.flush = NULL;
@@ -193,8 +192,8 @@ void r200FlushElts(GLcontext *ctx)
if (R200_ELT_BUF_SZ > elt_used)
  radeonReturnDmaRegion(&rmesa->radeon, R200_ELT_BUF_SZ - elt_used);
 
-   if (R200_DEBUG & DEBUG_SYNC) {
-  fprintf(stderr, "%s: Syncing\n", __FUNCTION__);
+   if (radeon_is_debug_enabled(RADEON_SYNC, RADEON_CRITICAL)) {
+  radeon_print(RADEON_SYNC, RADEON_NORMAL, "%s: Syncing\n", __FUNCTION__);
   radeonFinish( rmesa->radeon.glCtx );
}
 }
@@ -206,8 +205,7 @@ GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa,
 {
GLushort *retval;
 
-   if (R200_DEBUG & DEBUG_IOCTL)
-  fprintf(stderr, "%s %d prim %x\n", __FUNCTION__, min_nr, primitive);
+   radeon_print(RADEON_RENDER, RADEON_VERBOSE, "%s %d prim %x\n", 
__FUNCTION__, min_nr, primitive);
 
assert((primitive & R200_VF_PRIM_WALK_IND));

@@ -220,10 +218,6 @@ GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa,
radeon_bo_map(rmesa->radeon.tcl.elt_dma_bo, 1);
retval = rmesa->radeon.tcl.elt_dma_bo->ptr + 
rmesa->radeon.tcl.elt_dma_offset;

-   if (R200_DEBUG & DEBUG_PRIMS)
-  fprintf(stderr, "%s: header prim %x \n",
- __FUNCTION__, primitive);
-
assert(!rmesa->radeon.dma.flush);
rmesa->radeon.glCtx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;
rmesa->radeon.dma.flush = r200FlushElts;
@@ -240,8 +234,7 @@ void r200EmitVertexAOS( r200ContextPtr rmesa,
 {
BATCH_LOCALS(&rmesa->radeon);
 
-   if (R200_DEBUG & (DEBUG_PRIMS|DEBUG_IOCTL))
-  fprintf(stderr, "%s:  vertex_size 0x%x offset 0x%x \n&quo

Mesa (master): r300: Convert to shared debug code.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 012e990160edcd0f233b43a39f6efdd34a6ca194
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=012e990160edcd0f233b43a39f6efdd34a6ca194

Author: Pauli Nieminen 
Date:   Sun Aug 30 23:39:15 2009 +0300

r300: Convert to shared debug code.

---

 src/mesa/drivers/dri/r300/Makefile   |   13 
 src/mesa/drivers/dri/r300/r300_cmdbuf.c  |4 +-
 src/mesa/drivers/dri/r300/r300_draw.c|   34 +++--
 src/mesa/drivers/dri/r300/r300_fragprog_common.c |2 +-
 src/mesa/drivers/dri/r300/r300_ioctl.c   |6 ++--
 src/mesa/drivers/dri/r300/r300_render.c  |4 +-
 src/mesa/drivers/dri/r300/r300_state.c   |   10 +++---
 src/mesa/drivers/dri/r300/r300_swtcl.c   |   34 +++---
 src/mesa/drivers/dri/r300/r300_tex.c |8 ++--
 src/mesa/drivers/dri/r300/r300_vertprog.c|2 +-
 10 files changed, 66 insertions(+), 51 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/Makefile 
b/src/mesa/drivers/dri/r300/Makefile
index 188efcb..5d8d6f6 100644
--- a/src/mesa/drivers/dri/r300/Makefile
+++ b/src/mesa/drivers/dri/r300/Makefile
@@ -27,18 +27,19 @@ COMMON_SOURCES = \
../common/dri_util.c
 
 RADEON_COMMON_SOURCES = \
-   radeon_texture.c \
+   radeon_bo_legacy.c \
+   radeon_buffer_objects.c \
radeon_common_context.c \
radeon_common.c \
+   radeon_cs_legacy.c \
radeon_dma.c \
+   radeon_debug.c \
+   radeon_fbo.c \
radeon_lock.c \
-   radeon_bo_legacy.c \
-   radeon_cs_legacy.c \
radeon_mipmap_tree.c \
radeon_span.c \
-   radeon_fbo.c \
-   radeon_buffer_objects.c \
-   radeon_queryobj.c
+   radeon_queryobj.c \
+   radeon_texture.c
 
 DRIVER_SOURCES = \
 radeon_screen.c \
diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c 
b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
index 451f1fd..0fe32a5 100644
--- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c
+++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
@@ -274,7 +274,7 @@ static void emit_cb_offset(GLcontext *ctx, struct 
radeon_state_atom * atom)
return;
}
 
-if (RADEON_DEBUG & DEBUG_STATE)
+if (RADEON_DEBUG & RADEON_STATE)
fprintf(stderr,"rrb is %p %d %dx%d\n", rrb, offset, 
rrb->base.Width, rrb->base.Height);
cbpitch = (rrb->pitch / rrb->cpp);
if (rrb->cpp == 4)
@@ -494,7 +494,7 @@ void r300InitCmdBuf(r300ContextPtr r300)
r300->radeon.hw.max_state_size = 2 + 2; /* reserve extra space for 
WAIT_IDLE and tex cache flush */
 
mtu = r300->radeon.glCtx->Const.MaxTextureUnits;
-   if (RADEON_DEBUG & DEBUG_TEXTURE) {
+   if (RADEON_DEBUG & RADEON_TEXTURE) {
fprintf(stderr, "Using %d maximum texture units..\n", mtu);
}
 
diff --git a/src/mesa/drivers/dri/r300/r300_draw.c 
b/src/mesa/drivers/dri/r300/r300_draw.c
index 2e475b1..e9968f9 100644
--- a/src/mesa/drivers/dri/r300/r300_draw.c
+++ b/src/mesa/drivers/dri/r300/r300_draw.c
@@ -91,6 +91,10 @@ static void r300FixupIndexBuffer(GLcontext *ctx, const 
struct _mesa_index_buffer
}
src_ptr = ADD_POINTERS(mesa_ind_buf->obj->Pointer, mesa_ind_buf->ptr);
 
+   radeon_print(RADEON_FALLBACKS, RADEON_IMPORTANT,
+   "%s: Fixing index buffer format. type %d\n",
+   __func__, mesa_ind_buf->type);
+
if (mesa_ind_buf->type == GL_UNSIGNED_BYTE) {
GLuint size = sizeof(GLushort) * ((mesa_ind_buf->count + 1) & 
~1);
GLubyte *in = (GLubyte *)src_ptr;
@@ -146,6 +150,7 @@ static void r300SetupIndexBuffer(GLcontext *ctx, const 
struct _mesa_index_buffer
r300->ind_buf.bo = NULL;
return;
}
+   radeon_print(RADEON_RENDER, RADEON_TRACE, "%s\n", __func__);
 
 #if MESA_BIG_ENDIAN
if (mesa_ind_buf->type == GL_UNSIGNED_INT) {
@@ -239,10 +244,11 @@ static void r300ConvertAttrib(GLcontext *ctx, int count, 
const struct gl_client_
radeonAllocDmaRegion(&r300->radeon, &attr->bo, &attr->bo_offset, 
sizeof(GLfloat) * input->Size * count, 32);
dst_ptr = (GLfloat *)ADD_POINTERS(attr->bo->ptr, attr->bo_offset);
 
-   if (RADEON_DEBUG & DEBUG_FALLBACKS) {
-   fprintf(stderr, "%s: Converting vertex attributes, attribute 
data format %x,", __FUNCTION__, input->Type);
-   fprintf(stderr, "stride %d, components %d\n", stride, 
input->Size);
-   }
+   radeon_print(RADEON_FALLBACKS, RADEON_IMPORTANT,
+   "%s: Converting vertex attributes, attribute data 
format %x,"
+   "stride %d, components %d\n"
+   , __FUNCTION__, input-&

Mesa (master): radeon: Change default debug level to verbose.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 6c963fbdd1c9a8a2c2efe87598bfbf0485c036fb
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6c963fbdd1c9a8a2c2efe87598bfbf0485c036fb

Author: Pauli Nieminen 
Date:   Sun Aug 30 23:46:58 2009 +0300

radeon: Change default debug level to verbose.

Verbose is a lot better for developement but we should considre changing it to 
normal in stable branch.

---

 src/mesa/drivers/dri/radeon/radeon_debug.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index 4452174..681e34c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -45,7 +45,7 @@ typedef enum radeon_debug_levels {
  * Compile time option to change level of debugging compiled to dri driver.
  */
 #ifndef RADEON_DEBUG_LEVEL
-#define RADEON_DEBUG_LEVEL RADEON_NORMAL
+#define RADEON_DEBUG_LEVEL RADEON_VERBOSE
 #endif
 
 typedef enum radeon_debug_types {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add comment warning about not choosing critical debug level.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 7870edc778338556a65a4d4167d20ad01d6a1995
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7870edc778338556a65a4d4167d20ad01d6a1995

Author: Pauli Nieminen 
Date:   Sun Aug 30 23:58:45 2009 +0300

radeon: Add comment warning about not choosing critical debug level.

---

 src/mesa/drivers/dri/radeon/radeon_debug.h |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index 681e34c..2b35044 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -43,6 +43,9 @@ typedef enum radeon_debug_levels {
 
 /**
  * Compile time option to change level of debugging compiled to dri driver.
+ * Selecting critical level is not recommended because perfromance gains are
+ * going to minimal but you will lose a lot of important warnings in case of
+ * errors.
  */
 #ifndef RADEON_DEBUG_LEVEL
 #define RADEON_DEBUG_LEVEL RADEON_VERBOSE

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r600: Add more trace debug output to rendering pipeline.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: d028cf9313aa0d2c43566acec4bbf4f6167f060e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d028cf9313aa0d2c43566acec4bbf4f6167f060e

Author: Pauli Nieminen 
Date:   Mon Aug 31 20:44:11 2009 +0300

r600: Add more trace debug output to rendering pipeline.

---

 src/mesa/drivers/dri/r600/r700_render.c |   10 ++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_render.c 
b/src/mesa/drivers/dri/r600/r700_render.c
index 4753c75..e1bbbfe 100644
--- a/src/mesa/drivers/dri/r600/r700_render.c
+++ b/src/mesa/drivers/dri/r600/r700_render.c
@@ -69,6 +69,7 @@ GLboolean r700SyncSurf(context_t *context,
 void r700WaitForIdle(context_t *context)
 {
 BATCH_LOCALS(&context->radeon);
+radeon_print(RADEON_RENDER | RADEON_STATE, RADEON_TRACE, "%s\n", __func__);
 BEGIN_BATCH_NO_AUTOSTATE(3);
 
 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CONFIG_REG, 1));
@@ -82,6 +83,7 @@ void r700WaitForIdle(context_t *context)
 void r700WaitForIdleClean(context_t *context)
 {
 BATCH_LOCALS(&context->radeon);
+radeon_print(RADEON_RENDER | RADEON_STATE, RADEON_TRACE, "%s\n", __func__);
 BEGIN_BATCH_NO_AUTOSTATE(5);
 
 R600_OUT_BATCH(CP_PACKET3(R600_IT_EVENT_WRITE, 0));
@@ -98,6 +100,7 @@ void r700WaitForIdleClean(context_t *context)
 void r700Start3D(context_t *context)
 {
 BATCH_LOCALS(&context->radeon);
+radeon_print(RADEON_RENDER | RADEON_STATE, RADEON_TRACE, "%s\n", __func__);
 if (context->radeon.radeonScreen->chip_family < CHIP_FAMILY_RV770)
 {
 BEGIN_BATCH_NO_AUTOSTATE(2);
@@ -124,6 +127,7 @@ GLboolean r700SyncSurf(context_t *context,
   uint32_t sync_type)
 {
 BATCH_LOCALS(&context->radeon);
+radeon_print(RADEON_RENDER | RADEON_STATE, RADEON_TRACE, "%s\n", __func__);
 uint32_t cp_coher_size;
 
 if (!pbo)
@@ -257,6 +261,10 @@ static void r700RunRenderPrimitive(GLcontext * ctx, int 
start, int end, int prim
type = r700PrimitiveType(prim);
num_indices = r700NumVerts(end - start, prim);
 
+   radeon_print(RADEON_RENDER, RADEON_TRACE,
+   "%s type %x num_indices %d\n",
+   __func__, type, num_indices);
+
if (type < 0 || num_indices <= 0)
return;
 
@@ -364,6 +372,7 @@ static GLboolean r700RunRender(GLcontext * ctx,
 
 radeonEmitState(radeon);
 
+radeon_debug_add_indent();
 /* richard test code */
 for (i = 0; i < vb->PrimitiveCount; i++) {
 GLuint prim = _tnl_translate_prim(&vb->Primitive[i]);
@@ -371,6 +380,7 @@ static GLboolean r700RunRender(GLcontext * ctx,
 GLuint end = vb->Primitive[i].start + vb->Primitive[i].count;
 r700RunRenderPrimitive(ctx, start, end, prim);
 }
+radeon_debug_remove_indent();
 
 /* Flush render op cached for last several quads. */
 r700WaitForIdleClean(context);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add support for indenting debug output.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: fde929c4fdee2e998542f071ff7165d87f572593
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fde929c4fdee2e998542f071ff7165d87f572593

Author: Pauli Nieminen 
Date:   Mon Aug 31 20:25:33 2009 +0300

radeon: Add support for indenting debug output.

Indetion can be used to make it easier to read debug code when sections of 
debug output are indented.

---

 .../drivers/dri/radeon/radeon_common_context.h |2 +
 src/mesa/drivers/dri/radeon/radeon_cs_legacy.c |1 +
 src/mesa/drivers/dri/radeon/radeon_cs_legacy.h |2 +-
 src/mesa/drivers/dri/radeon/radeon_debug.c |   35 
 src/mesa/drivers/dri/radeon/radeon_debug.h |   30 -
 5 files changed, 67 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h 
b/src/mesa/drivers/dri/radeon/radeon_common_context.h
index d17060d..0309345 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common_context.h
+++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h
@@ -467,6 +467,8 @@ struct radeon_context {
 
struct radeon_cmdbuf cmdbuf;
 
+   struct radeon_debug debug;
+
   drm_clip_rect_t fboRect;
   GLboolean constant_cliprect; /* use for FBO or DRI2 rendering */
   GLboolean front_cliprects;
diff --git a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c 
b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c
index 587e2ac..f1addb2 100644
--- a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c
+++ b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c
@@ -32,6 +32,7 @@
 #include 
 
 #include "radeon_bocs_wrapper.h"
+#include "radeon_common.h"
 
 struct cs_manager_legacy {
 struct radeon_cs_managerbase;
diff --git a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.h 
b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.h
index e177b4b..cafbc9e 100644
--- a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.h
+++ b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.h
@@ -32,7 +32,7 @@
 #ifndef RADEON_CS_LEGACY_H
 #define RADEON_CS_LEGACY_H
 
-#include "radeon_common.h"
+struct radeon_context;
 
 struct radeon_cs_manager *radeon_cs_manager_legacy_ctor(struct radeon_context 
*ctx);
 void radeon_cs_manager_legacy_dtor(struct radeon_cs_manager *csm);
diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.c 
b/src/mesa/drivers/dri/radeon/radeon_debug.c
index cb1fd63..691680e 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.c
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.c
@@ -30,6 +30,7 @@
 #include "utils.h"
 
 #include "radeon_debug.h"
+#include "radeon_common_context.h"
 
 static const struct dri_debug_control debug_control[] = {
{"fall", RADEON_FALLBACKS},
@@ -61,3 +62,37 @@ void radeon_init_debug(void)
 
radeon_enabled_debug_types |= RADEON_GENERAL;
 }
+
+void _radeon_debug_add_indent(void)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+   const size_t length = sizeof(radeon->debug.indent)
+   / sizeof(radeon->debug.indent[0]);
+   if (radeon->debug.indent_depth < length - 1) {
+   radeon->debug.indent[radeon->debug.indent_depth] = '\t';
+   ++radeon->debug.indent_depth;
+   };
+}
+
+void _radeon_debug_remove_indent(void)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+   if (radeon->debug.indent_depth > 0) {
+   radeon->debug.indent[radeon->debug.indent_depth] = '\0';
+   --radeon->debug.indent_depth;
+   }
+}
+
+extern void _radeon_print(const radeon_debug_type_t type,
+  const radeon_debug_level_t level,
+  const char* message,
+  va_list values)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+   // FIXME: Make this multi thread safe
+   fprintf(stderr, "%s", radeon->debug.indent);
+   vfprintf(stderr, message, values);
+}
diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index 2b35044..3e1481d 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -71,6 +71,13 @@ typedef enum radeon_debug_types {
RADEON_GENERAL   = 0x1   /* Used for errors and warnings */
 } radeon_debug_type_t;
 
+#define RADEON_MAX_INDENT 5
+
+struct radeon_debug {
+   size_t indent_depth;
+   char indent[RADEON_MAX_INDENT];
+};
+
 extern radeon_debug_type_t radeon_enabled_debug_types;
 
 /**
@@ -91,6 +98,11 @@ static inline int radeon_is_debug_enabled(const 
radeon_debug_type_t type,
 #define  __attribute__(x)  /*empty*/
 #endif
 
+
+extern void _radeon_print(const radeon_debug_type_t type,
+  const radeon_debug_level_t level,
+  const char* message,
+  va_list values);
 /**
  * Format attribute requires declaration for settin

Mesa (master): radeon: Fix null pointer reference in debug system if no context is bind.

2009-08-31 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: c4a3e036ed1c755a291018251c4f55c45ac17079
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c4a3e036ed1c755a291018251c4f55c45ac17079

Author: Pauli Nieminen 
Date:   Tue Sep  1 00:39:20 2009 +0300

radeon: Fix null pointer reference in debug system if no context is bind.

---

 src/mesa/drivers/dri/radeon/radeon_debug.c |9 ++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.c 
b/src/mesa/drivers/dri/radeon/radeon_debug.c
index 691680e..a1ed396 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.c
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.c
@@ -91,8 +91,11 @@ extern void _radeon_print(const radeon_debug_type_t type,
   va_list values)
 {
GET_CURRENT_CONTEXT(ctx);
-   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
-   // FIXME: Make this multi thread safe
-   fprintf(stderr, "%s", radeon->debug.indent);
+   if (ctx) {
+   radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+   // FIXME: Make this multi thread safe
+   if (radeon->debug.indent_depth)
+   fprintf(stderr, "%s", radeon->debug.indent);
+   }
vfprintf(stderr, message, values);
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix OQ to set ful lstate as dirty too.

2009-09-01 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 06bf6628aabd6744ebf4268319eba4a1d377ffe2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=06bf6628aabd6744ebf4268319eba4a1d377ffe2

Author: Pauli Nieminen 
Date:   Wed Sep  2 02:03:13 2009 +0300

radeon: Fix OQ to set ful lstate as dirty too.

---

 src/mesa/drivers/dri/radeon/radeon_queryobj.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_queryobj.c 
b/src/mesa/drivers/dri/radeon/radeon_queryobj.c
index ed5ebd1..b79d864 100644
--- a/src/mesa/drivers/dri/radeon/radeon_queryobj.c
+++ b/src/mesa/drivers/dri/radeon/radeon_queryobj.c
@@ -133,6 +133,7 @@ static void radeonBeginQuery(GLcontext *ctx, struct 
gl_query_object *q)
radeon->query.current = query;
 
radeon->query.queryobj.dirty = GL_TRUE;
+   radeon->hw.is_dirty = GL_TRUE;
insert_at_tail(&radeon->query.not_flushed_head, query);
 
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix debug output to filter out less critical messages instead of more critical .

2009-09-01 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 9f650e19dda3809e87c838b50b39669ea844a3b1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f650e19dda3809e87c838b50b39669ea844a3b1

Author: Pauli Nieminen 
Date:   Wed Sep  2 01:28:46 2009 +0300

radeon: Fix debug output to filter out less critical messages instead of more 
critical.

---

 src/mesa/drivers/dri/radeon/radeon_debug.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index 3e1481d..132e273 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -88,7 +88,7 @@ extern radeon_debug_type_t radeon_enabled_debug_types;
 static inline int radeon_is_debug_enabled(const radeon_debug_type_t type,
   const radeon_debug_level_t level)
 {
-   return RADEON_DEBUG_LEVEL <= level
+   return RADEON_DEBUG_LEVEL >= level
&& (type & radeon_enabled_debug_types);
 }
 /*

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_6_branch): radeon: Add more verbose error message for failed command buffer.

2009-09-09 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_6_branch
Commit: e0f99b8268496576b017f4d0eb0ed09507c2f30d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0f99b8268496576b017f4d0eb0ed09507c2f30d

Author: Pauli Nieminen 
Date:   Wed Sep  9 18:31:52 2009 +0300

radeon: Add more verbose error message for failed command buffer.

---

 src/mesa/drivers/dri/radeon/radeon_common.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c 
b/src/mesa/drivers/dri/radeon/radeon_common.c
index e53eb09..a4c7b40 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -1234,7 +1234,9 @@ int rcommonFlushCmdBuf(radeonContextPtr rmesa, const char 
*caller)
UNLOCK_HARDWARE(rmesa);
 
if (ret) {
-   fprintf(stderr, "drmRadeonCmdBuffer: %d\n", ret);
+   fprintf(stderr, "drmRadeonCmdBuffer: %d. Kernel failed to "
+   "parse or rejected command stream. See dmesg "
+   "for more info.\n", ret);
_mesa_exit(ret);
}
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_6_branch): radeon: Change debugging code to use macros instead of inline functions.

2009-09-10 Thread Pauli Nieminen
Module: Mesa
Branch: mesa_7_6_branch
Commit: 3d1324a66a3b8927a400d167ba92f851b464c57a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3d1324a66a3b8927a400d167ba92f851b464c57a

Author: Pauli Nieminen 
Date:   Thu Sep 10 16:41:59 2009 +0300

radeon: Change debugging code to use macros instead of inline functions.

Variadic functions can't be inlined which makes debugging to have quite large
function overead. Only aleternative method is to use variadic macros which are
inlined so compiler can optimize debugging to minimize overhead.

---

 src/mesa/drivers/dri/radeon/radeon_debug.c |   10 -
 src/mesa/drivers/dri/radeon/radeon_debug.h |   60 +---
 2 files changed, 27 insertions(+), 43 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.c 
b/src/mesa/drivers/dri/radeon/radeon_debug.c
index a1ed396..3b6f003 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.c
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.c
@@ -32,6 +32,9 @@
 #include "radeon_debug.h"
 #include "radeon_common_context.h"
 
+#include 
+#include 
+
 static const struct dri_debug_control debug_control[] = {
{"fall", RADEON_FALLBACKS},
{"tex", RADEON_TEXTURE},
@@ -85,10 +88,10 @@ void _radeon_debug_remove_indent(void)
}
 }
 
-extern void _radeon_print(const radeon_debug_type_t type,
+void _radeon_print(const radeon_debug_type_t type,
   const radeon_debug_level_t level,
   const char* message,
-  va_list values)
+  ...)
 {
GET_CURRENT_CONTEXT(ctx);
if (ctx) {
@@ -97,5 +100,8 @@ extern void _radeon_print(const radeon_debug_type_t type,
if (radeon->debug.indent_depth)
fprintf(stderr, "%s", radeon->debug.indent);
}
+   va_list values;
+   va_start( values, message );
vfprintf(stderr, message, values);
+   va_end( values );
 }
diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h 
b/src/mesa/drivers/dri/radeon/radeon_debug.h
index 132e273..2a83022 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -30,8 +30,7 @@
 #ifndef RADEON_DEBUG_H_INCLUDED
 #define RADEON_DEBUG_H_INCLUDED
 
-#include 
-#include 
+#include 
 
 typedef enum radeon_debug_levels {
RADEON_CRITICAL  = 0, /* Only errors */
@@ -102,57 +101,36 @@ static inline int radeon_is_debug_enabled(const 
radeon_debug_type_t type,
 extern void _radeon_print(const radeon_debug_type_t type,
   const radeon_debug_level_t level,
   const char* message,
-  va_list values);
-/**
- * Format attribute requires declaration for setting it. Don't ask me why!
- */
-static inline void radeon_print(const radeon_debug_type_t type,
-  const radeon_debug_level_t level,
-  const char* message,
-  ...) __attribute__((format(printf,3,4)));
-
+  ...)  __attribute__((format(printf,3,4)));
 /**
  * Print out debug message if channel specified by type is enabled
  * and compile time debugging level is at least as high as level parameter
  */
-static inline void radeon_print(const radeon_debug_type_t type,
-  const radeon_debug_level_t level,
-  const char* message,
-  ...)
-{
-   /* Compile out if level of message is too high */
-   if (radeon_is_debug_enabled(type, level)) {
-
-   va_list values;
-   va_start( values, message );
-   _radeon_print(type, level, message, values);
-   va_end( values );
-   }
-}
+#define radeon_print(type, level, message, ...) do {   \
+   const radeon_debug_level_t _debug_level = (level);  \
+   const radeon_debug_type_t _debug_type = (type); \
+   /* Compile out if level of message is too high */   \
+   if (radeon_is_debug_enabled(type, level)) { \
+   _radeon_print(_debug_type, _debug_level,\
+   (message), ## __VA_ARGS__); \
+   }   \
+} while(0)
 
-static inline void radeon_error(const char* message, ...)  
__attribute__((format(printf,1,2)));
 /**
  * printf style function for writing error messages.
  */
-static inline void radeon_error(const char* message, ...)
-{
-   va_list values;
-   va_start( values, message );
-   radeon_print(RADEON_GENERAL, RADEON_CRITICAL, message, values);
-   va_end( values );
-}
+#define radeon_error(message, ...) do {\
+   radeon_print(RADEON_GENERAL, RADEON_CRITICAL,   \
+   (message), ## __VA_ARGS__); \
+} while(0)
 
-static inline void radeon_warning(const char* message, ...)  
__attribute__((format(printf,1,2)));
 /**
  * printf style function for writing warnings.
  */
-static inline void radeon_warning(const char* message,

  1   2   >