From effc73931f86c7961b4eb296d2d4c5d91624a9e3 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Mon, 5 Jan 2004 02:40:28 +0000 Subject: Added def_max_anisotropy and no_neg_lod_bias options to radeon and r200. The def_max_anisotropy option breaks driconf. :( I'm going to upload a fixed version soon. --- src/mesa/drivers/dri/radeon/radeon_screen.c | 4 +++- src/mesa/drivers/dri/radeon/radeon_tex.c | 26 ++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers/dri/radeon') diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index edd7c0f34e..ec773de854 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -63,6 +63,8 @@ DRI_CONF_BEGIN DRI_CONF_SECTION_END DRI_CONF_SECTION_QUALITY DRI_CONF_TEXTURE_DEPTH(DRI_CONF_TEXTURE_DEPTH_FB) + DRI_CONF_DEF_MAX_ANISOTROPY(1.0,"1.0,2.0,4.0,8.0,16.0") + DRI_CONF_NO_NEG_LOD_BIAS(false) DRI_CONF_COLOR_REDUCTION(DRI_CONF_COLOR_REDUCTION_DITHER) DRI_CONF_ROUND_MODE(DRI_CONF_ROUND_TRUNC) DRI_CONF_DITHER_MODE(DRI_CONF_DITHER_XERRORDIFF) @@ -71,7 +73,7 @@ DRI_CONF_BEGIN DRI_CONF_NO_RAST(false) DRI_CONF_SECTION_END DRI_CONF_END; -static const GLuint __driNConfigOptions = 8; +static const GLuint __driNConfigOptions = 10; #if 1 /* Including xf86PciInfo.h introduces a bunch of errors... diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c index 269c0a4ebb..73825a8d90 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex.c @@ -42,6 +42,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "texformat.h" #include "texstore.h" #include "teximage.h" +#include "texobj.h" #include "radeon_context.h" @@ -567,7 +568,7 @@ static void radeonTexEnv( GLcontext *ctx, GLenum target, } case GL_TEXTURE_LOD_BIAS_EXT: { - GLfloat bias; + GLfloat bias, min; GLuint b; /* The Radeon's LOD bias is a signed 2's complement value with a @@ -575,7 +576,9 @@ static void radeonTexEnv( GLcontext *ctx, GLenum target, * functions, one mapping [-1.0,0.0] to [-128,0] and one mapping * [0.0,4.0] to [0,127]. */ - bias = CLAMP( *param, -1.0, 4.0 ); + min = driQueryOptionb (&rmesa->optionCache, "no_neg_lod_bias") ? + 0.0 : -1.0; + bias = CLAMP( *param, min, 4.0 ); if ( bias == 0 ) { b = 0; } else if ( bias > 0 ) { @@ -712,6 +715,18 @@ static void radeonTexGen( GLcontext *ctx, rmesa->recheck_texgen[unit] = GL_TRUE; } +/* Fixup MaxAnisotropy according to user preference. + */ +static struct gl_texture_object *radeonNewTextureObject ( GLcontext *ctx, + GLuint name, + GLenum target ) { + struct gl_texture_object *obj; + obj = _mesa_new_texture_object (ctx, name, target); + obj->MaxAnisotropy = driQueryOptionf (&RADEON_CONTEXT(ctx)->optionCache, + "def_max_anisotropy"); + return obj; +} + void radeonInitTextureFuncs( GLcontext *ctx ) { @@ -732,6 +747,7 @@ void radeonInitTextureFuncs( GLcontext *ctx ) ctx->Driver.CopyTexSubImage3D = _swrast_copy_texsubimage3d; ctx->Driver.TestProxyTexImage = _mesa_test_proxy_teximage; + ctx->Driver.NewTextureObject = radeonNewTextureObject; ctx->Driver.BindTexture = radeonBindTexture; ctx->Driver.CreateTexture = NULL; /* FIXME: Is this used??? */ ctx->Driver.DeleteTexture = radeonDeleteTexture; @@ -747,4 +763,10 @@ void radeonInitTextureFuncs( GLcontext *ctx ) driInitTextureObjects( ctx, & rmesa->swapped, DRI_TEXMGR_DO_TEXTURE_1D | DRI_TEXMGR_DO_TEXTURE_2D ); + + /* Hack: radeonNewTextureObject is not yet installed when the + * default textures are created. Therefore set MaxAnisotropy of the + * default 2D texture now. */ + ctx->Shared->Default2D->MaxAnisotropy = driQueryOptionf (&rmesa->optionCache, + "def_max_anisotropy"); } -- cgit v1.2.3