Comments (7)
Okay ! Thanks a lot for those answers !
I'm closing until next questions :D
from d3d12memoryallocator.
You are right. Just as the documentation says, allocations that can be defragmented shouldn't be released since the moment a call to BeginPass
starts. I recommend to store the list of allocations to be released and defer this release to the time after the defragmentation pass is complete.
I think calling AddRef
and Release
to manage reference counter of all the defragmented allocations would add too much of unnecessary performance overhead.
from d3d12memoryallocator.
Thanks for those answer. I will then prefer the list of allocations.
from d3d12memoryallocator.
Hello again Adam. Sorry for reopening this ticket. After reading again the documentation to be sure, I noticed this sentence :
Otherwise, a thread performing the allocation->Release() would block for the time BeginPass executes and then free the allocation when it finishes, while the allocation could have ended up on the list of allocations to move.
Is it okay to keep every allocation that need to be release into a list (that will be released after the EndPass) between the beginning and the end of BeginPass and after the end of BeginPass to keep in the list only allocations that are into the pass movements ?
To rephrase, is releasing allocations that aren't pass movements an issue if BeginPass is done ?
(I'm trying to optimize the number of allocations that go into that list because between Begin and End, it can be a lot ! )
Have a nice day !
from d3d12memoryallocator.
You are right, this optimization is correct. After BeginPass
call finishes, only allocations that ended up on the list of movements should not be released. Other allocations can be released and new allocations can be made between BeginPass
and EndPass
.
from d3d12memoryallocator.
Okay thanks a lot !
new allocations can be made
I'm afraid of this :). Do you mean allocations must not be made during BeginPass or just that they will be blocked by the mutex ?
from d3d12memoryallocator.
They will just be blocked by the mutex and then execute after BeginPass
, which is fine.
from d3d12memoryallocator.
Related Issues (20)
- D3D12MA_DEBUG_GLOBAL_MUTEX causes double lock on Release HOT 1
- FindAtOffset compile error with GDK HOT 1
- DivideRoudingUp spelling mistake HOT 1
- Crash on systems older than Windows 10 Build 20348 HOT 3
- Stats inside ASSERT conditional HOT 1
- Offset is not correctly written when exporting to json HOT 2
- Index Buffer Creation fail HOT 2
- XBOX support HOT 1
- UWP: ARM build issues HOT 2
- AlignUp SizeInBytes for buffer memory
- Regarding D3D12_HEAP_FLAG_CREATE_NOT_ZEROED HOT 2
- 32-bit compile error: ambiguous call to JsonWriter::WriteNumber with SIZE_T input. HOT 3
- C bindings for Direct3D 12 Memory Allocator HOT 3
- Question about ALLOCATION_FLAG_WITHIN_BUDGET flag HOT 4
- Question about support for deferring block frees HOT 4
- Update vcpkg port HOT 1
- C interface like VMA HOT 1
- GetResourceAllocation errors while using castable formats and CreateResource3
- Is D3D12MA::Allocator::BeginDefragmentation() Work Correctly ? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from d3d12memoryallocator.