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 @@
 \endcode

 

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

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

+Example:

 

 \code

 ALLOCATION_DESC allocDesc = {};

@@ -271,8 +271,6 @@
     D3D12_RESOURCE_STATE_GENERIC_READ, NULL, &alloc, IID_NULL, NULL);

 \endcode

 

-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

+D3D12MA::ALLOCATION_DESC::Flags to D3D12MA::ALLOCATION_FLAG_COMMITTED. Example:

+

+\code

+ALLOCATION_DESC allocDesc = {};

+allocDesc.CustomPool = pool;

+allocDesc.Flags = ALLOCATION_FLAG_COMMITTED;

+

+D3D12_RESOURCE_DESC resDesc = ...

+Allocation* alloc;

+ID3D12Resource* res;

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

+    D3D12_RESOURCE_STATE_GENERIC_READ, NULL, &alloc, IID_PPV_ARGS(&res));

+\endcode

+

+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.

+            }

         }

     }