Added documentation about committed allocations in custom pools

Also a small improvement in TestStandardCustomCommittedPlaced.
diff --git a/src/D3D12MemAlloc.h b/src/D3D12MemAlloc.h
index 301964b..ded69c3 100644
--- a/src/D3D12MemAlloc.h
+++ b/src/D3D12MemAlloc.h
@@ -259,7 +259,7 @@


 To allocate resources out of a custom pool, only set member D3D12MA::ALLOCATION_DESC::CustomPool.

-Other members of this structure are then ignored. Example:




 ALLOCATION_DESC allocDesc = {};

@@ -271,8 +271,6 @@



-Currently all allocations from custom pools are created as Placed, never as Committed.


 All allocations must be released before releasing the pool.

 The pool must be released before relasing the allocator.


@@ -287,8 +285,10 @@
 more opportunities for internal optimizations, custom pools may be useful in following cases:


 - To keep some resources separate from others in memory.

+- To keep track of memory usage of just a specific group of resources. Statistics can be queried using

+  D3D12MA::Pool::CalculateStats.

 - To use specific size of a memory block (`ID3D12Heap`). To set it, use member D3D12MA::POOL_DESC::BlockSize.

-  When set to 0, the library uses automatically determined, increasing block sizes.

+  When set to 0, the library uses automatically determined, variable block sizes.

 - To reserve some minimum amount of memory allocated. To use it, set member D3D12MA::POOL_DESC::MinBlockCount.

 - To limit maximum amount of memory allocated. To use it, set member D3D12MA::POOL_DESC::MaxBlockCount.

 - To use extended parameters of the D3D12 memory allocation. While resources created from default pools

@@ -297,6 +297,27 @@
   (D3D12MA::POOL_DESC::HeapFlags), which is useful e.g. for cross-adapter sharing or UMA

   (see also D3D12MA::Allocator::IsUMA).


+New versions of this library support creating **committed allocations in custom pools**.

+It is supported only when D3D12MA::POOL_DESC::BlockSize = 0.

+To use this feature, set D3D12MA::ALLOCATION_DESC::CustomPool to the pointer to your custom pool and




+ALLOCATION_DESC allocDesc = {};

+allocDesc.CustomPool = pool;



+D3D12_RESOURCE_DESC resDesc = ...

+Allocation* alloc;

+ID3D12Resource* res;

+hr = allocator->CreateResource(&allocDesc, &resDesc,




+This feature may seem unnecessary, but creating committed allocations from custom pools may be useful

+in some cases, e.g. to have separate memory usage statistics for some group of resources or to use

+extended allocation parameters, like custom `D3D12_HEAP_PROPERTIES`, which are available only in custom pools.



 \page resource_aliasing Resource aliasing (overlap)


diff --git a/src/Tests.cpp b/src/Tests.cpp
index 8374feb..2d91a1b 100644
--- a/src/Tests.cpp
+++ b/src/Tests.cpp
@@ -856,6 +856,10 @@

             bool expectSuccess = !neverAllocate; // NEVER_ALLOCATE should always fail with COMMITTED.

             CHECK_BOOL(expectSuccess == SUCCEEDED(hr));

+            if(SUCCEEDED(hr) && useCommitted)

+            {

+                CHECK_BOOL(allocPtr->GetHeap() == NULL); // Committed allocation has implicit heap.

+            }