st/nine: Some D3DUSAGE_AUTOGENMIPMAP fixes
Signed-off-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
parent
24eca6a30d
commit
6f57e01436
|
@ -1214,6 +1214,13 @@ NineDevice9_UpdateTexture( struct NineDevice9 *This,
|
|||
if (dstb->base.usage & D3DUSAGE_AUTOGENMIPMAP) {
|
||||
/* Only the first level is updated, the others regenerated. */
|
||||
last_level = 0;
|
||||
/* if the source has D3DUSAGE_AUTOGENMIPMAP, we have to ignore
|
||||
* the sublevels, thus level 0 has to match */
|
||||
user_assert(!(srcb->base.usage & D3DUSAGE_AUTOGENMIPMAP) ||
|
||||
(srcb->base.info.width0 == dstb->base.info.width0 &&
|
||||
srcb->base.info.height0 == dstb->base.info.height0 &&
|
||||
srcb->base.info.depth0 == dstb->base.info.depth0),
|
||||
D3DERR_INVALIDCALL);
|
||||
} else {
|
||||
user_assert(!(srcb->base.usage & D3DUSAGE_AUTOGENMIPMAP), D3DERR_INVALIDCALL);
|
||||
}
|
||||
|
@ -1276,8 +1283,10 @@ NineDevice9_UpdateTexture( struct NineDevice9 *This,
|
|||
assert(!"invalid texture type");
|
||||
}
|
||||
|
||||
if (dstb->base.usage & D3DUSAGE_AUTOGENMIPMAP)
|
||||
if (dstb->base.usage & D3DUSAGE_AUTOGENMIPMAP) {
|
||||
dstb->dirty_mip = TRUE;
|
||||
NineBaseTexture9_GenerateMipSubLevels(dstb);
|
||||
}
|
||||
|
||||
return D3D_OK;
|
||||
}
|
||||
|
@ -1509,6 +1518,9 @@ NineDevice9_StretchRect( struct NineDevice9 *This,
|
|||
&blit.src.box);
|
||||
}
|
||||
|
||||
/* Communicate the container it needs to update sublevels - if apply */
|
||||
NineSurface9_MarkContainerDirty(dst);
|
||||
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ NineSurface9_GetContainer( struct NineSurface9 *This,
|
|||
return hr;
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
void
|
||||
NineSurface9_MarkContainerDirty( struct NineSurface9 *This )
|
||||
{
|
||||
if (This->texture) {
|
||||
|
|
|
@ -83,6 +83,9 @@ NineSurface9_dtor( struct NineSurface9 *This );
|
|||
|
||||
/*** Nine private ***/
|
||||
|
||||
void
|
||||
NineSurface9_MarkContainerDirty( struct NineSurface9 *This );
|
||||
|
||||
struct pipe_surface *
|
||||
NineSurface9_CreatePipeSurface( struct NineSurface9 *This, const int sRGB );
|
||||
|
||||
|
|
Loading…
Reference in New Issue