Skip to content

Commit

Permalink
[d3d9] Unmark resources as dirty if they get discarded
Browse files Browse the repository at this point in the history
  • Loading branch information
misyltoad committed Jan 24, 2020
1 parent 6fa28bf commit 764cb56
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions src/d3d9/d3d9_device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3829,6 +3829,13 @@ namespace dxvk {
Flags &= ~D3DLOCK_READONLY;

pResource->SetLockFlags(Subresource, Flags);

bool renderable = desc.Usage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL | D3DUSAGE_AUTOGENMIPMAP);

// If we are dirty, then we need to copy -> buffer
// We are also always dirty if we are a render target,
// a depth stencil, or auto generate mipmaps.
bool dirty = pResource->SetDirty(Subresource, false) || renderable;

DxvkBufferSliceHandle physSlice;

Expand Down Expand Up @@ -3856,7 +3863,6 @@ namespace dxvk {
// or is reading. Remember! This will only trigger for MANAGED resources
// that cannot get affected by GPU, therefore readonly is A-OK for NOT waiting.
const bool readOnly = Flags & D3DLOCK_READONLY;
const bool dirty = pResource->SetDirty(Subresource, false);
const bool skipWait = (readOnly && managed) || scratch || (readOnly && systemmem && !dirty);

if (alloced)
Expand All @@ -3867,13 +3873,6 @@ namespace dxvk {
}
}
else {
bool renderable = desc.Usage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL | D3DUSAGE_AUTOGENMIPMAP);

// If we are dirty, then we need to copy -> buffer
// We are also always dirty if we are a render target,
// a depth stencil, or auto generate mipmaps.
bool dirty = pResource->SetDirty(Subresource, false) || renderable;

if (unlikely(dirty)) {
Rc<DxvkImage> resourceImage = pResource->GetImage();

Expand Down

0 comments on commit 764cb56

Please sign in to comment.