diff options
| author | Keith Whitwell <keith@tungstengraphics.com> | 2008-09-18 18:57:46 +0100 | 
|---|---|---|
| committer | Keith Whitwell <keith@tungstengraphics.com> | 2008-09-18 19:03:02 +0100 | 
| commit | 89ab66448e1bcd78caab6678261c2885dcff741c (patch) | |
| tree | be36d7e3eba3f64e54da34ff7ba64b3eb14e56aa /src/mesa/drivers | |
| parent | 1074e8e4e47bb4af73c7ef730d0fec40e826cc7e (diff) | |
| parent | 5e530d8384b0d9bb867d6407315587c84a443902 (diff) | |
Merge commit 'origin/master' into gallium-0.2
Conflicts:
	progs/trivial/Makefile
	src/mesa/glapi/glthread.c
Diffstat (limited to 'src/mesa/drivers')
| -rw-r--r-- | src/mesa/drivers/dri/i915/i915_debug.c | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_context.c | 8 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_fbo.c | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 7 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_regions.c | 16 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_regions.h | 10 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_screen.c | 6 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_screen.h | 1 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_tex_image.c | 8 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/tdfx/tdfx_screen.c | 77 | 
10 files changed, 61 insertions, 76 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_debug.c b/src/mesa/drivers/dri/i915/i915_debug.c index 8eb1c5b49e..eb1a052b9e 100644 --- a/src/mesa/drivers/dri/i915/i915_debug.c +++ b/src/mesa/drivers/dri/i915/i915_debug.c @@ -177,7 +177,7 @@ static GLboolean debug_variable_length_prim( struct debug_stream *stream )  #define BITS( dw, hi, lo, ... )				\  do {							\ -   unsigned himask = ~0UL >> (31 - (hi));		\ +   unsigned himask = 0xffffffffU >> (31 - (hi));		\     PRINTF("\t\t ");				\     PRINTF(__VA_ARGS__);			\     PRINTF(": 0x%x\n", ((dw) & himask) >> (lo));	\ diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 7065bb35ee..2ca5732606 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -233,6 +233,9 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)  						&count,  						drawable->loaderPrivate); +   if (buffers == NULL) +      return; +     drawable->x = 0;     drawable->y = 0;     drawable->backX = 0; @@ -298,8 +301,9 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)         }         else            region = intel_region_alloc_for_handle(intel, buffers[i].cpp, -						 buffers[i].pitch / buffers[i].cpp, +						 drawable->w,  						 drawable->h, +						 buffers[i].pitch / buffers[i].cpp,  						 buffers[i].name,  						 region_name); @@ -818,8 +822,6 @@ intelDestroyContext(__DRIcontextPrivate * driContextPriv)        /* free the Mesa context */        _mesa_free_context_data(&intel->ctx); - -      dri_bufmgr_destroy(intel->bufmgr);     }  } diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 5bd2ebfdcf..6570f6e69b 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -296,7 +296,7 @@ intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb,        DBG("Allocating %d x %d Intel RBO (pitch %d)\n", width,  	  height, pitch); -      irb->region = intel_region_alloc(intel, cpp, pitch, height); +      irb->region = intel_region_alloc(intel, cpp, width, height, pitch);        if (!irb->region)           return GL_FALSE;       /* out of memory? */ diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c index 9be7e02eff..f28fac8394 100644 --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c @@ -117,7 +117,10 @@ intel_miptree_create(struct intel_context *intel,        return NULL;     mt->region = intel_region_alloc(intel, -				   mt->cpp, mt->pitch, mt->total_height); +				   mt->cpp, +				   mt->pitch, +				   mt->total_height, +				   mt->pitch);     if (!mt->region) {         free(mt); @@ -141,7 +144,7 @@ intel_miptree_create_for_region(struct intel_context *intel,     mt = intel_miptree_create_internal(intel, target, internal_format,  				      first_level, last_level, -				      region->pitch, region->height, depth0, +				      region->width, region->height, 1,  				      region->cpp, compress_byte);     if (!mt)        return mt; diff --git a/src/mesa/drivers/dri/intel/intel_regions.c b/src/mesa/drivers/dri/intel/intel_regions.c index 1cfc8ddd64..cb0f4ba083 100644 --- a/src/mesa/drivers/dri/intel/intel_regions.c +++ b/src/mesa/drivers/dri/intel/intel_regions.c @@ -105,7 +105,8 @@ intel_set_region_tiling_gem(struct intel_context *intel,  static struct intel_region *  intel_region_alloc_internal(struct intel_context *intel, -			    GLuint cpp, GLuint pitch, GLuint height, +			    GLuint cpp, +			    GLuint width, GLuint height, GLuint pitch,  			    dri_bo *buffer)  {     struct intel_region *region; @@ -117,8 +118,9 @@ intel_region_alloc_internal(struct intel_context *intel,     region = calloc(sizeof(*region), 1);     region->cpp = cpp; +   region->width = width; +   region->height = height;     region->pitch = pitch; -   region->height = height;     /* needed? */     region->refcount = 1;     region->buffer = buffer; @@ -131,19 +133,20 @@ intel_region_alloc_internal(struct intel_context *intel,  struct intel_region *  intel_region_alloc(struct intel_context *intel, -                   GLuint cpp, GLuint pitch, GLuint height) +                   GLuint cpp, GLuint width, GLuint height, GLuint pitch)  {     dri_bo *buffer;     buffer = dri_bo_alloc(intel->bufmgr, "region",  			 pitch * cpp * height, 64); -   return intel_region_alloc_internal(intel, cpp, pitch, height, buffer); +   return intel_region_alloc_internal(intel, cpp, width, height, pitch, buffer);  }  struct intel_region *  intel_region_alloc_for_handle(struct intel_context *intel, -			      GLuint cpp, GLuint pitch, GLuint height, +			      GLuint cpp, +			      GLuint width, GLuint height, GLuint pitch,  			      GLuint handle, const char *name)  {     struct intel_region *region; @@ -151,7 +154,8 @@ intel_region_alloc_for_handle(struct intel_context *intel,     buffer = intel_bo_gem_create_from_name(intel->bufmgr, name, handle); -   region = intel_region_alloc_internal(intel, cpp, pitch, height, buffer); +   region = intel_region_alloc_internal(intel, cpp, +					width, height, pitch, buffer);     if (region == NULL)        return region; diff --git a/src/mesa/drivers/dri/intel/intel_regions.h b/src/mesa/drivers/dri/intel/intel_regions.h index a561de485e..62eb049fba 100644 --- a/src/mesa/drivers/dri/intel/intel_regions.h +++ b/src/mesa/drivers/dri/intel/intel_regions.h @@ -55,8 +55,9 @@ struct intel_region     dri_bo *buffer;  /**< buffer manager's buffer */     GLuint refcount; /**< Reference count for region */     GLuint cpp;      /**< bytes per pixel */ -   GLuint pitch;    /**< in pixels */ +   GLuint width;    /**< in pixels */     GLuint height;   /**< in pixels */ +   GLuint pitch;    /**< in pixels */     GLubyte *map;    /**< only non-NULL when region is actually mapped */     GLuint map_refcount;  /**< Reference count for mapping */ @@ -72,12 +73,13 @@ struct intel_region   * copied by calling intel_reference_region().   */  struct intel_region *intel_region_alloc(struct intel_context *intel, -                                        GLuint cpp, -                                        GLuint pitch, GLuint height); +                                        GLuint cpp, GLuint width, +                                        GLuint height, GLuint pitch);  struct intel_region *  intel_region_alloc_for_handle(struct intel_context *intel, -			      GLuint cpp, GLuint pitch, GLuint height, +			      GLuint cpp, +			      GLuint width, GLuint height, GLuint pitch,  			      unsigned int handle, const char *name);  void intel_region_reference(struct intel_region **dst, diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 1de1ac49ea..373e0e155e 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -298,11 +298,6 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv)  			&intelScreen->irq_active))        return GL_FALSE; -   /* Determine if batchbuffers are allowed */ -   if (!intel_get_param(sPriv, I915_PARAM_ALLOW_BATCHBUFFER, -			&intelScreen->allow_batchbuffer)) -      return GL_FALSE; -     sPriv->extensions = intelScreenExtensions;     return GL_TRUE; @@ -314,6 +309,7 @@ intelDestroyScreen(__DRIscreenPrivate * sPriv)  {     intelScreenPrivate *intelScreen = (intelScreenPrivate *) sPriv->private; +   dri_bufmgr_destroy(intelScreen->bufmgr);     intelUnmapScreenRegions(intelScreen);     FREE(intelScreen); diff --git a/src/mesa/drivers/dri/intel/intel_screen.h b/src/mesa/drivers/dri/intel/intel_screen.h index daf2ab4c58..fc913da5bf 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.h +++ b/src/mesa/drivers/dri/intel/intel_screen.h @@ -74,7 +74,6 @@ typedef struct     int drmMinor;     int irq_active; -   int allow_batchbuffer;     GLboolean no_hw; diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index d1f540b0f1..1820d3dc05 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -733,6 +733,12 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)     intel_update_renderbuffers(pDRICtx, dPriv);     rb = intel_fb->color_rb[0]; +   /* If the region isn't set, then intel_update_renderbuffers was unable +    * to get the buffers for the drawable. +    */ +   if (rb->region == NULL) +      return; +     type = GL_BGRA;     format = GL_UNSIGNED_BYTE;     internalFormat = (rb->region->cpp == 3 ? 3 : 4); @@ -751,7 +757,7 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)     intelObj->mt = mt;     texImage = _mesa_get_tex_image(&intel->ctx, texObj, target, level);     _mesa_init_teximage_fields(&intel->ctx, target, texImage, -			      rb->region->pitch, rb->region->height, 1, +			      rb->region->width, rb->region->height, 1,  			      0, internalFormat);     intelImage = intel_texture_image(texImage); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.c b/src/mesa/drivers/dri/tdfx/tdfx_screen.c index 4e67b5d203..cdfc8a002d 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_screen.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.c @@ -64,6 +64,7 @@ DRI_CONF_END;  static const __DRIextension *tdfxExtensions[] = {      &driReadDrawableExtension, +    NULL  };  static const GLuint __driNConfigOptions = 1; @@ -349,12 +350,7 @@ tdfxFillInModes(__DRIscreenPrivate *psp,  		unsigned stencil_bits,  		GLboolean have_back_buffer)  { -	__DRIconfig **configs, **c; -	__GLcontextModes *m; -	unsigned num_modes; -	unsigned vis[2] = { GLX_TRUE_COLOR, GLX_DIRECT_COLOR };  	unsigned deep = (depth_bits > 17); -	unsigned i, db, depth, accum, stencil;  	/* Right now GLX_SWAP_COPY_OML isn't supported, but it would be easy  	 * enough to add support.  Basically, if a context is created with an @@ -362,55 +358,32 @@ tdfxFillInModes(__DRIscreenPrivate *psp,  	 * will never be used.  	 */ -	num_modes = (depth_bits == 16) ? 32 : 16; - -	configs = _mesa_malloc(num_modes * sizeof *configs); -	c = configs; - -	for (i = 0; i <= 1; i++) { -	    for (db = 0; db <= 1; db++) { -		for (depth = 0; depth <= 1; depth++) { -		    for (accum = 0; accum <= 1; accum++) { -			for (stencil = 0; stencil <= !deep; stencil++) { -			    *c = _mesa_malloc(sizeof **c); -			    m = &(*c++)->modes; -			    if (deep) stencil = depth; -			    m->redBits		= deep ? 8 : 5; -			    m->greenBits	= deep ? 8 : 6; -			    m->blueBits		= deep ? 8 : 5; -			    m->alphaBits	= deep ? 8 : 0; -			    m->redMask		= deep ?0xFF000000 :0x0000F800; -			    m->greenMask	= deep ?0x00FF0000 :0x000007E0; -			    m->blueMask		= deep ?0x0000FF00 :0x0000001F; -			    m->alphaMask	= deep ? 0x000000FF : 0; -			    m->rgbBits		= m->redBits + m->greenBits + -			    			  m->blueBits + m->alphaBits; -			    m->accumRedBits	= accum ? 16 : 0; -			    m->accumGreenBits	= accum ? 16 : 0; -			    m->accumBlueBits	= accum ? 16 : 0; -			    m->accumAlphaBits	= (accum && deep) ? 16 : 0; -			    m->stencilBits	= stencil ? 8 : 0; -			    m->depthBits	= deep -			    			  ? (depth ? 24 : 0) -			    			  : (depth ? 0 : depth_bits); -			    m->visualType	= vis[i]; -			    m->renderType	= GLX_RGBA_BIT; -			    m->drawableType	= GLX_WINDOW_BIT; -			    m->rgbMode		= GL_TRUE; -			    m->doubleBufferMode = db ? GL_TRUE : GL_FALSE; -			    if (db) -			    	m->swapMethod = GLX_SWAP_UNDEFINED_OML; -			    m->visualRating	= ((stencil && !deep) || accum) -			    			  ? GLX_SLOW_CONFIG -						  : GLX_NONE; -			    if (deep) stencil = 0; -			} -		    } -		} -	    } +	static const GLenum db_modes[2] = { GLX_NONE, GLX_SWAP_UNDEFINED_OML }; +	uint8_t depth_bits_array[4]; +	uint8_t stencil_bits_array[4]; +	if(deep) { +		depth_bits_array[0] = 0; +		depth_bits_array[1] = 24; +		stencil_bits_array[0] = 0; +		stencil_bits_array[1] = 8; +	} else { +		depth_bits_array[0] = depth_bits; +		depth_bits_array[1] = 0; +		depth_bits_array[2] = depth_bits; +		depth_bits_array[3] = 0; +		stencil_bits_array[0] = 0; +		stencil_bits_array[1] = 0; +		stencil_bits_array[2] = 8; +		stencil_bits_array[3] = 8;  	} -	return (const __DRIconfig **) configs; +	return driCreateConfigs( +		deep ? GL_RGBA : GL_RGB, +		deep ? GL_UNSIGNED_INT_8_8_8_8 : GL_UNSIGNED_SHORT_5_6_5, +		depth_bits_array, +		stencil_bits_array, +		deep ? 2 : 4, +		db_modes, 2);  }  /**  | 
