diff options
| author | Roland Scheidegger <sroland@vmware.com> | 2009-06-20 00:27:36 +0200 | 
|---|---|---|
| committer | Roland Scheidegger <sroland@vmware.com> | 2009-06-20 00:28:39 +0200 | 
| commit | 402df41c1c7655439d22efead08153dc29fe2afd (patch) | |
| tree | 976389e7741fc2a62be0de323c200b7de65cfd2f /src | |
| parent | 7a5c5b9af3699f55b5c5be170a791f1ac2e05457 (diff) | |
radeon: make cubemap mipmap generation work
need to pass target parameter to radeon_teximage/radeon_subteximage functions
otherwise mipmap generation for cube maps can't work (assert/segfault in
_mesa_generate_mipmap)
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_texture.c | 29 | 
1 files changed, 13 insertions, 16 deletions
| diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c index 429ad50a7d..7dfed2c456 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.c +++ b/src/mesa/drivers/dri/radeon/radeon_texture.c @@ -512,7 +512,7 @@ const struct gl_texture_format *radeonChooseTextureFormat(GLcontext * ctx,   */  static void radeon_teximage(  	GLcontext *ctx, int dims, -	GLint face, GLint level, +	GLenum target, GLint level,  	GLint internalFormat,  	GLint width, GLint height, GLint depth,  	GLsizei imageSize, @@ -529,6 +529,7 @@ static void radeon_teximage(  	GLint postConvWidth = width;  	GLint postConvHeight = height;  	GLuint texelBytes; +	GLuint face = radeon_face_for_target(target);  	radeon_firevertices(rmesa); @@ -653,7 +654,7 @@ static void radeon_teximage(  		/* SGIS_generate_mipmap */  		if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -			radeon_generate_mipmap(ctx, texObj->Target, texObj); +			radeon_generate_mipmap(ctx, target, texObj);  		}  	} @@ -673,7 +674,7 @@ void radeonTexImage1D(GLcontext * ctx, GLenum target, GLint level,  		      struct gl_texture_object *texObj,  		      struct gl_texture_image *texImage)  { -	radeon_teximage(ctx, 1, 0, level, internalFormat, width, 1, 1, +	radeon_teximage(ctx, 1, target, level, internalFormat, width, 1, 1,  		0, format, type, pixels, packing, texObj, texImage, 0);  } @@ -686,9 +687,7 @@ void radeonTexImage2D(GLcontext * ctx, GLenum target, GLint level,  			   struct gl_texture_image *texImage)  { -	GLuint face = radeon_face_for_target(target); - -	radeon_teximage(ctx, 2, face, level, internalFormat, width, height, 1, +	radeon_teximage(ctx, 2, target, level, internalFormat, width, height, 1,  		0, format, type, pixels, packing, texObj, texImage, 0);  } @@ -699,9 +698,7 @@ void radeonCompressedTexImage2D(GLcontext * ctx, GLenum target,  				     struct gl_texture_object *texObj,  				     struct gl_texture_image *texImage)  { -	GLuint face = radeon_face_for_target(target); - -	radeon_teximage(ctx, 2, face, level, internalFormat, width, height, 1, +	radeon_teximage(ctx, 2, target, level, internalFormat, width, height, 1,  		imageSize, 0, 0, data, &ctx->Unpack, texObj, texImage, 1);  } @@ -714,14 +711,14 @@ void radeonTexImage3D(GLcontext * ctx, GLenum target, GLint level,  		      struct gl_texture_object *texObj,  		      struct gl_texture_image *texImage)  { -	radeon_teximage(ctx, 3, 0, level, internalFormat, width, height, depth, +	radeon_teximage(ctx, 3, target, level, internalFormat, width, height, depth,  		0, format, type, pixels, packing, texObj, texImage, 0);  }  /**   * Update a subregion of the given texture image.   */ -static void radeon_texsubimage(GLcontext* ctx, int dims, int level, +static void radeon_texsubimage(GLcontext* ctx, int dims, GLenum target, int level,  		GLint xoffset, GLint yoffset, GLint zoffset,  		GLsizei width, GLsizei height, GLsizei depth,  		GLsizei imageSize, @@ -781,7 +778,7 @@ static void radeon_texsubimage(GLcontext* ctx, int dims, int level,  		/* GL_SGIS_generate_mipmap */  		if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -			radeon_generate_mipmap(ctx, texObj->Target, texObj); +			radeon_generate_mipmap(ctx, target, texObj);  		}  	} @@ -801,7 +798,7 @@ void radeonTexSubImage1D(GLcontext * ctx, GLenum target, GLint level,  			 struct gl_texture_object *texObj,  			 struct gl_texture_image *texImage)  { -	radeon_texsubimage(ctx, 1, level, xoffset, 0, 0, width, 1, 1, 0, +	radeon_texsubimage(ctx, 1, target, level, xoffset, 0, 0, width, 1, 1, 0,  		format, type, pixels, packing, texObj, texImage, 0);  } @@ -814,7 +811,7 @@ void radeonTexSubImage2D(GLcontext * ctx, GLenum target, GLint level,  			 struct gl_texture_object *texObj,  			 struct gl_texture_image *texImage)  { -	radeon_texsubimage(ctx, 2, level, xoffset, yoffset, 0, width, height, 1, +	radeon_texsubimage(ctx, 2, target, level, xoffset, yoffset, 0, width, height, 1,  			   0, format, type, pixels, packing, texObj, texImage,  			   0);  } @@ -827,7 +824,7 @@ void radeonCompressedTexSubImage2D(GLcontext * ctx, GLenum target,  				   struct gl_texture_object *texObj,  				   struct gl_texture_image *texImage)  { -	radeon_texsubimage(ctx, 2, level, xoffset, yoffset, 0, width, height, 1, +	radeon_texsubimage(ctx, 2, target, level, xoffset, yoffset, 0, width, height, 1,  		imageSize, format, 0, data, &ctx->Unpack, texObj, texImage, 1);  } @@ -841,7 +838,7 @@ void radeonTexSubImage3D(GLcontext * ctx, GLenum target, GLint level,  			 struct gl_texture_object *texObj,  			 struct gl_texture_image *texImage)  { -	radeon_texsubimage(ctx, 3, level, xoffset, yoffset, zoffset, width, height, depth, 0, +	radeon_texsubimage(ctx, 3, target, level, xoffset, yoffset, zoffset, width, height, depth, 0,  		format, type, pixels, packing, texObj, texImage, 0);  } | 
