mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-07 06:08:16 +02:00
r100: fix 3D texture fallback
This commit is contained in:
parent
c3ca94bc91
commit
639b5fca0c
5 changed files with 19 additions and 9 deletions
|
|
@ -312,7 +312,9 @@ GLushort *radeonAllocEltsOpenEnded( r100ContextPtr rmesa,
|
|||
GLushort *retval;
|
||||
int align_min_nr;
|
||||
BATCH_LOCALS(&rmesa->radeon);
|
||||
|
||||
if (RADEON_DEBUG & DEBUG_IOCTL)
|
||||
fprintf(stderr, "%s %d prim %x\n", __FUNCTION__, min_nr, primitive);
|
||||
|
||||
assert((primitive & RADEON_CP_VC_CNTL_PRIM_WALK_IND));
|
||||
|
||||
|
|
|
|||
|
|
@ -440,16 +440,14 @@ static void tex_emit(GLcontext *ctx, struct radeon_state_atom *atom)
|
|||
int i = atom->idx;
|
||||
radeonTexObj *t = r100->state.texture.unit[i].texobj;
|
||||
|
||||
fprintf(stderr,"t is %p, i is %d\n", t, i );
|
||||
|
||||
if (t && !t->image_override)
|
||||
if (t && t->mt && !t->image_override)
|
||||
dwords += 2;
|
||||
BEGIN_BATCH_NO_AUTOSTATE(dwords);
|
||||
OUT_BATCH_TABLE(atom->cmd, 3);
|
||||
if (t && !t->image_override) {
|
||||
if (t && t->mt && !t->image_override) {
|
||||
OUT_BATCH_RELOC(t->tile_bits, t->mt->bo, 0,
|
||||
RADEON_GEM_DOMAIN_VRAM, 0, 0);
|
||||
} else if (!t) {
|
||||
} else {
|
||||
/* workaround for old CS mechanism */
|
||||
OUT_BATCH(r100->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]);
|
||||
// OUT_BATCH(r100->radeon.radeonScreen);
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ static GLushort *radeonAllocElts( r100ContextPtr rmesa, GLuint nr )
|
|||
rmesa->tcl.hw_primitive, nr );
|
||||
}
|
||||
|
||||
#define CLOSE_ELTS() RADEON_NEWPRIM( rmesa )
|
||||
#define CLOSE_ELTS() if (0) RADEON_NEWPRIM( rmesa )
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -373,6 +373,7 @@ static void radeonDeleteTexture( GLcontext *ctx,
|
|||
{
|
||||
r100ContextPtr rmesa = R100_CONTEXT(ctx);
|
||||
radeonTexObj* t = radeon_tex_obj(texObj);
|
||||
int i;
|
||||
|
||||
if ( RADEON_DEBUG & (DEBUG_STATE|DEBUG_TEXTURE) ) {
|
||||
fprintf( stderr, "%s( %p (target = %s) )\n", __FUNCTION__, (void *)texObj,
|
||||
|
|
@ -381,7 +382,13 @@ static void radeonDeleteTexture( GLcontext *ctx,
|
|||
|
||||
if ( rmesa ) {
|
||||
RADEON_FIREVERTICES( rmesa );
|
||||
|
||||
for ( i = 0 ; i < rmesa->radeon.glCtx->Const.MaxTextureUnits ; i++ ) {
|
||||
if ( t == rmesa->state.texture.unit[i].texobj ) {
|
||||
rmesa->state.texture.unit[i].texobj = NULL;
|
||||
rmesa->hw.tex[i].dirty = GL_FALSE;
|
||||
rmesa->hw.cube[i].dirty = GL_FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (t->mt) {
|
||||
|
|
@ -453,7 +460,6 @@ void radeonInitTextureFuncs( struct dd_function_table *functions )
|
|||
functions->NewTextureObject = radeonNewTextureObject;
|
||||
// functions->BindTexture = radeonBindTexture;
|
||||
functions->DeleteTexture = radeonDeleteTexture;
|
||||
functions->IsTextureResident = driIsTextureResident;
|
||||
|
||||
functions->TexEnv = radeonTexEnv;
|
||||
functions->TexParameter = radeonTexParameter;
|
||||
|
|
|
|||
|
|
@ -1044,7 +1044,11 @@ static GLboolean radeonUpdateTextureUnit( GLcontext *ctx, int unit )
|
|||
r100ContextPtr rmesa = R100_CONTEXT(ctx);
|
||||
struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
|
||||
|
||||
fprintf(stderr,"really enabled %d\n", ctx->Texture.Unit[unit]._ReallyEnabled);
|
||||
|
||||
if (ctx->Texture.Unit[unit]._ReallyEnabled & TEXTURE_3D_BIT) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
if (!ctx->Texture.Unit[unit]._ReallyEnabled) {
|
||||
/* disable the unit */
|
||||
disable_tex_obj_state(rmesa, unit);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue