static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj ) { r128TexObjPtr t; if ( R128_DEBUG & DEBUG_VERBOSE_API ) { fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *) texObj ); } t = (r128TexObjPtr) CALLOC_STRUCT( r128_tex_obj ); texObj->DriverData = t; if ( t != NULL ) { /* Initialize non-image-dependent parts of the state: */ t->base.tObj = texObj; /* FIXME Something here to set initial values for other parts of * FIXME t->setup? */ make_empty_list( (driTextureObject *) t ); r128SetTexWrap( t, texObj->WrapS, texObj->WrapT ); r128SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); r128SetTexBorderColor( t, texObj->BorderColor.f ); } return t; }
static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj ) { r128TexObjPtr t; if ( R128_DEBUG & DEBUG_VERBOSE_API ) { fprintf( stderr, "%s( %p )\n", __FUNCTION__, texObj ); } t = (r128TexObjPtr) CALLOC_STRUCT( r128_tex_obj ); if (!t) return NULL; /* Initialize non-image-dependent parts of the state: */ t->tObj = texObj; t->dirty_images = ~0; make_empty_list( t ); r128SetTexWrap( t, texObj->WrapS, texObj->WrapT ); /*r128SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );*/ r128SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); r128SetTexBorderColor( t, texObj->BorderColor ); return t; }
static void r128TexParameter( GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); r128TexObjPtr t = (r128TexObjPtr)tObj->DriverData; if ( R128_DEBUG & DEBUG_VERBOSE_API ) { fprintf( stderr, "%s( %s )\n", __FUNCTION__, _mesa_lookup_enum_by_nr( pname ) ); } if ( ( target != GL_TEXTURE_2D ) && ( target != GL_TEXTURE_1D ) ) return; switch ( pname ) { case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: if ( t->base.bound ) FLUSH_BATCH( rmesa ); r128SetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: if ( t->base.bound ) FLUSH_BATCH( rmesa ); r128SetTexWrap( t, tObj->WrapS, tObj->WrapT ); break; case GL_TEXTURE_BORDER_COLOR: if ( t->base.bound ) FLUSH_BATCH( rmesa ); r128SetTexBorderColor( t, tObj->BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: case GL_TEXTURE_MAX_LEVEL: case GL_TEXTURE_MIN_LOD: case GL_TEXTURE_MAX_LOD: /* This isn't the most efficient solution but there doesn't appear to * be a nice alternative for R128. Since there's no LOD clamping, * we just have to rely on loading the right subset of mipmap levels * to simulate a clamped LOD. */ if ( t->base.bound ) FLUSH_BATCH( rmesa ); driSwapOutTextureObject( (driTextureObject *) t ); break; default: return; } }