mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 08:58:02 +02:00
st/nine: Track dirty region for SYSTEMMEM too
Dirty regions should be tracked for both MANAGED and SYSTEMMEM. Until now we didn't bother to track for SYSTEMMEM, because we hadn't implemented using the dirty region to avoid some copies Signed-off-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
parent
8a61894cdb
commit
e139e0debd
4 changed files with 17 additions and 11 deletions
|
|
@ -265,9 +265,11 @@ NineCubeTexture9_AddDirtyRect( struct NineCubeTexture9 *This,
|
|||
}
|
||||
return D3D_OK;
|
||||
}
|
||||
This->base.managed.dirty = TRUE;
|
||||
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
if (This->base.base.pool == D3DPOOL_MANAGED) {
|
||||
This->base.managed.dirty = TRUE;
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
}
|
||||
|
||||
if (!pDirtyRect) {
|
||||
u_box_origin_2d(This->base.base.info.width0,
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ NineSurface9_AddDirtyRect( struct NineSurface9 *This,
|
|||
This->texture == D3DRTYPE_CUBETEXTURE ||
|
||||
This->texture == D3DRTYPE_TEXTURE);
|
||||
|
||||
if (This->base.pool != D3DPOOL_MANAGED)
|
||||
if (This->base.pool == D3DPOOL_DEFAULT)
|
||||
return;
|
||||
|
||||
/* Add a dirty rect to level 0 of the parent texture */
|
||||
|
|
@ -287,7 +287,7 @@ NineSurface9_AddDirtyRect( struct NineSurface9 *This,
|
|||
NineTexture9(This->base.base.container);
|
||||
|
||||
NineTexture9_AddDirtyRect(tex, &dirty_rect);
|
||||
} else { /* This->texture == D3DRTYPE_CUBETEXTURE */
|
||||
} else if (This->texture == D3DRTYPE_CUBETEXTURE) {
|
||||
struct NineCubeTexture9 *ctex =
|
||||
NineCubeTexture9(This->base.base.container);
|
||||
|
||||
|
|
|
|||
|
|
@ -295,20 +295,22 @@ NineTexture9_AddDirtyRect( struct NineTexture9 *This,
|
|||
pDirtyRect ? pDirtyRect->left : 0, pDirtyRect ? pDirtyRect->top : 0,
|
||||
pDirtyRect ? pDirtyRect->right : 0, pDirtyRect ? pDirtyRect->bottom : 0);
|
||||
|
||||
/* Tracking dirty regions on DEFAULT or SYSTEMMEM resources is pointless,
|
||||
/* Tracking dirty regions on DEFAULT resources is pointless,
|
||||
* because we always write to the final storage. Just marked it dirty in
|
||||
* case we need to generate mip maps.
|
||||
*/
|
||||
if (This->base.base.pool != D3DPOOL_MANAGED) {
|
||||
if (This->base.base.pool == D3DPOOL_DEFAULT) {
|
||||
if (This->base.base.usage & D3DUSAGE_AUTOGENMIPMAP) {
|
||||
This->base.dirty_mip = TRUE;
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
}
|
||||
return D3D_OK;
|
||||
}
|
||||
This->base.managed.dirty = TRUE;
|
||||
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
if (This->base.base.pool == D3DPOOL_MANAGED) {
|
||||
This->base.managed.dirty = TRUE;
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
}
|
||||
|
||||
if (!pDirtyRect) {
|
||||
u_box_origin_2d(This->base.base.info.width0,
|
||||
|
|
|
|||
|
|
@ -193,12 +193,14 @@ NineVolumeTexture9_AddDirtyBox( struct NineVolumeTexture9 *This,
|
|||
{
|
||||
DBG("This=%p pDirtybox=%p\n", This, pDirtyBox);
|
||||
|
||||
if (This->base.base.pool != D3DPOOL_MANAGED) {
|
||||
if (This->base.base.pool == D3DPOOL_DEFAULT) {
|
||||
return D3D_OK;
|
||||
}
|
||||
This->base.managed.dirty = TRUE;
|
||||
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
if (This->base.base.pool == D3DPOOL_MANAGED) {
|
||||
This->base.managed.dirty = TRUE;
|
||||
BASETEX_REGISTER_UPDATE(&This->base);
|
||||
}
|
||||
|
||||
if (!pDirtyBox) {
|
||||
This->dirty_box.x = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue