mesa: Branch 'master' - 3 commits

Eric Anholt anholt at kemper.freedesktop.org
Fri Jan 26 22:49:50 UTC 2007


 src/mesa/drivers/dri/i965/brw_draw_upload.c |    2 +-
 src/mesa/drivers/dri/i965/intel_context.c   |   11 ++++-------
 src/mesa/drivers/dri/i965/intel_regions.c   |    2 +-
 src/mesa/drivers/dri/i965/intel_regions.h   |    1 +
 src/mesa/main/imports.c                     |   21 +++++++++++++++++++++
 src/mesa/main/imports.h                     |    3 +++
 6 files changed, 31 insertions(+), 9 deletions(-)

New commits:
diff-tree 5a3d9853958993174f13c8cff6bcf11993a48f65 (from 869b8ad499717eda4a1be04de4e516134123402c)
Author: Eric Anholt <eric at anholt.net>
Date:   Sat Jan 20 18:09:32 2007 -0800

    Bug #9604: Fix a static buffer allocation failure.
    
    The pool that the static buffer got allocated from was sized by pitch * height,
    but the buffer generated from it had its size aligned to a tile boundary, so
    allocation failed if pitch * height wasn't aligned.  However, the 2d driver
    ensures that the size ends at a tile boundary, so just pass the 2d driver's
    buffer size rather than calculating it.

diff --git a/src/mesa/drivers/dri/i965/intel_context.c b/src/mesa/drivers/dri/i965/intel_context.c
index 63809e0..4486a28 100644
--- a/src/mesa/drivers/dri/i965/intel_context.c
+++ b/src/mesa/drivers/dri/i965/intel_context.c
@@ -446,8 +446,8 @@ GLboolean intelInitContext( struct intel
 				 intelScreen->cpp,
 				 intelScreen->front.pitch / intelScreen->cpp,
 				 intelScreen->height,
-				 intelScreen->front.tiled != 0); /* 0: LINEAR */
-
+				 intelScreen->front.size,
+				 intelScreen->front.tiled != 0);
 
    intel->back_region = 
       intel_region_create_static(intel,
@@ -457,6 +457,7 @@ GLboolean intelInitContext( struct intel
 				 intelScreen->cpp,
 				 intelScreen->back.pitch / intelScreen->cpp,
 				 intelScreen->height,
+				 intelScreen->back.size,
                                  intelScreen->back.tiled != 0);
 
    /* Still assuming front.cpp == depth.cpp
@@ -473,6 +474,7 @@ GLboolean intelInitContext( struct intel
 				 intelScreen->cpp,
 				 intelScreen->depth.pitch / intelScreen->cpp,
 				 intelScreen->height,
+				 intelScreen->depth.size,
                                  intelScreen->depth.tiled != 0);
    
    intel_bufferobj_init( intel );
diff --git a/src/mesa/drivers/dri/i965/intel_regions.c b/src/mesa/drivers/dri/i965/intel_regions.c
index 398b0a0..835ecdd 100644
--- a/src/mesa/drivers/dri/i965/intel_regions.c
+++ b/src/mesa/drivers/dri/i965/intel_regions.c
@@ -122,10 +122,10 @@ struct intel_region *intel_region_create
 						 GLuint cpp,
 						 GLuint pitch, 
 						 GLuint height,
+						 GLuint size,
 						 GLboolean tiled )
 {
    struct intel_region *region = calloc(sizeof(*region), 1);
-   GLuint size = cpp * pitch * height;
    GLint pool;
 
    DBG("%s\n", __FUNCTION__);
diff --git a/src/mesa/drivers/dri/i965/intel_regions.h b/src/mesa/drivers/dri/i965/intel_regions.h
index 2413f0d..d2235f1 100644
--- a/src/mesa/drivers/dri/i965/intel_regions.h
+++ b/src/mesa/drivers/dri/i965/intel_regions.h
@@ -78,6 +78,7 @@ struct intel_region *intel_region_create
 						 GLuint cpp,
 						 GLuint pitch,
 						 GLuint height,
+						 GLuint size,
 						 GLboolean tiled );
 
 /* Map/unmap regions.  This is refcounted also: 
diff-tree 869b8ad499717eda4a1be04de4e516134123402c (from dbb54b234cd919b8ef7e36e0603ec69f3ed3fc7f)
Author: Eric Anholt <eric at anholt.net>
Date:   Sat Jan 20 18:06:38 2007 -0800

    Add _mesa_ffsll() for compatibility on OSes without ffsll(), and use it.

diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c
index 57ee294..08741ad 100644
--- a/src/mesa/drivers/dri/i965/brw_draw_upload.c
+++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c
@@ -414,7 +414,7 @@ GLboolean brw_upload_vertices( struct br
     */
    
    while (tmp) {
-      GLuint i = ffsll(tmp)-1;
+      GLuint i = _mesa_ffsll(tmp)-1;
       struct brw_vertex_element *input = &brw->vb.inputs[i];
 
       tmp &= ~((GLuint64EXT)1<<i);
diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c
index 996839a..ad77373 100644
--- a/src/mesa/main/imports.c
+++ b/src/mesa/main/imports.c
@@ -574,6 +574,27 @@ _mesa_ffs(int i)
 #endif
 }
 
+int
+_mesa_ffsll(long long val)
+{
+#ifdef ffsll
+	return ffsll(val);
+#else
+	int bit;
+
+	assert(sizeof(val) == 8);
+
+	bit = ffs(val);
+	if (bit != 0)
+		return bit;
+
+	bit = ffs(val >> 32);
+	if (bit != 0)
+		return 32 + bit;
+
+	return 0;
+#endif
+}
 
 /**
  * Return number of bits set in given GLuint.
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index 19a9478..d9885db 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -688,6 +688,9 @@ _mesa_pow(double x, double y);
 extern int
 _mesa_ffs(int i);
 
+extern int
+_mesa_ffsll(long long i);
+
 extern unsigned int
 _mesa_bitcount(unsigned int n);
 
diff-tree dbb54b234cd919b8ef7e36e0603ec69f3ed3fc7f (from 507167d7e2cf3bc64d1c112d927efeb1baa3b495)
Author: Eric Anholt <eric at anholt.net>
Date:   Sat Jan 20 17:59:08 2007 -0800

    Remove dead code causing a warning.

diff --git a/src/mesa/drivers/dri/i965/intel_context.c b/src/mesa/drivers/dri/i965/intel_context.c
index 3f8c2c0..63809e0 100644
--- a/src/mesa/drivers/dri/i965/intel_context.c
+++ b/src/mesa/drivers/dri/i965/intel_context.c
@@ -87,11 +87,6 @@ int INTEL_DEBUG = (0);
 int VERBOSE = 0;
 #endif
 
-#if DEBUG_LOCKING
-char *prevLockFile;
-int prevLockLine;
-#endif
-
 /***************************************
  * Mesa's Driver Functions
  ***************************************/



More information about the mesa-commit mailing list