Fixes in usage of Map/Unmap to fix D3D Debug Layer EXECUTION WARNING #930: MAP_INVALID_NULLRANGE
diff --git a/src/Common.h b/src/Common.h
index 9fb62a5..c84f629 100644
--- a/src/Common.h
+++ b/src/Common.h
@@ -82,6 +82,8 @@
 

 static const float PI = 3.14159265358979323846264338327950288419716939937510582f;

 

+static const D3D12_RANGE EMPTY_RANGE = {0, 0};

+

 struct vec2

 {

     float x, y;

diff --git a/src/D3D12Sample.cpp b/src/D3D12Sample.cpp
index d7c71fc..a9c33fc 100644
--- a/src/D3D12Sample.cpp
+++ b/src/D3D12Sample.cpp
@@ -282,7 +282,7 @@
     }

 

     BYTE* pData;

-    HRESULT hr = pIntermediate->Map(0, NULL, reinterpret_cast<void**>(&pData));

+    HRESULT hr = pIntermediate->Map(0, &EMPTY_RANGE, reinterpret_cast<void**>(&pData));

     if (FAILED(hr))

     {

         return 0;

@@ -704,8 +704,7 @@
         cbvDesc.SizeInBytes = AlignUp<UINT>(sizeof(ConstantBuffer0_PS), 256);

         g_Device->CreateConstantBufferView(&cbvDesc, g_MainDescriptorHeap[i]->GetCPUDescriptorHandleForHeapStart());

 

-        D3D12_RANGE readRange{0, 0};

-        CHECK_HR( g_ConstantBufferUploadHeap[i]->Map(0, &readRange, &g_ConstantBufferAddress[i]) );

+        CHECK_HR( g_ConstantBufferUploadHeap[i]->Map(0, &EMPTY_RANGE, &g_ConstantBufferAddress[i]) );

     }

 

     // create input layout

@@ -1019,9 +1018,7 @@
             IID_PPV_ARGS(&g_CbPerObjectUploadHeaps[i])) );

         g_CbPerObjectUploadHeaps[i]->SetName(L"Constant Buffer Upload Resource Heap");

 

-        D3D12_RANGE readRange{0, 0};    // We do not intend to read from this resource on the CPU. (so end is less than or equal to begin)

-                                          // map the resource heap to get a gpu virtual address to the beginning of the heap

-        CHECK_HR( g_CbPerObjectUploadHeaps[i]->Map(0, &readRange, &g_CbPerObjectAddress[i]) );

+        CHECK_HR( g_CbPerObjectUploadHeaps[i]->Map(0, &EMPTY_RANGE, &g_CbPerObjectAddress[i]) );

     }

 

     // # TEXTURE

diff --git a/src/Tests.cpp b/src/Tests.cpp
index bc7b4a9..25b2517 100644
--- a/src/Tests.cpp
+++ b/src/Tests.cpp
@@ -677,7 +677,7 @@
         resources[i].allocation.reset(alloc);

 

         void* mappedPtr = NULL;

-        CHECK_HR( resources[i].resource->Map(0, NULL, &mappedPtr) );

+        CHECK_HR( resources[i].resource->Map(0, &EMPTY_RANGE, &mappedPtr) );

 

         FillData(mappedPtr, bufSize, i);

 

@@ -849,7 +849,7 @@
     for(UINT i = 0; i < count; ++i)

     {

         void* mappedPtr = nullptr;

-        CHECK_HR( resourcesUpload[i].resource->Map(0, NULL, &mappedPtr) );

+        CHECK_HR( resourcesUpload[i].resource->Map(0, &EMPTY_RANGE, &mappedPtr) );

 

         FillData(mappedPtr, bufSize, i);

 

@@ -894,8 +894,7 @@
         // Unmap every 3rd resource, leave others mapped.

         if((i % 3) != 0)

         {

-            const D3D12_RANGE writtenRange = {0, 0};

-            resourcesReadback[i].resource->Unmap(0, &writtenRange);

+            resourcesReadback[i].resource->Unmap(0, &EMPTY_RANGE);

         }

     }

 }

@@ -927,7 +926,7 @@
 

     {

         void* mappedPtr = nullptr;

-        CHECK_HR( bufUpload.resource->Map(0, NULL, &mappedPtr) );

+        CHECK_HR( bufUpload.resource->Map(0, &EMPTY_RANGE, &mappedPtr) );

         FillData(mappedPtr, bufSize, 5236245);

         bufUpload.resource->Unmap(0, NULL);

     }

@@ -959,10 +958,11 @@
 

         bool isZero = false;

         {

+            const D3D12_RANGE readRange{0, bufSize}; // I could pass pReadRange = NULL but it generates D3D Debug layer warning: EXECUTION WARNING #930: MAP_INVALID_NULLRANGE

             void* mappedPtr = nullptr;

-            CHECK_HR( bufReadback.resource->Map(0, NULL, &mappedPtr) );

+            CHECK_HR( bufReadback.resource->Map(0, &readRange, &mappedPtr) );

             isZero = ValidateDataZero(mappedPtr, bufSize);

-            bufReadback.resource->Unmap(0, NULL);

+            bufReadback.resource->Unmap(0, &EMPTY_RANGE);

         }

 

         wprintf(L"Should be zero: %u, is zero: %u\n", shouldBeZero ? 1 : 0, isZero ? 1 : 0);

@@ -1087,7 +1087,7 @@
                 res.allocation.reset(alloc);

                 

                 void* mappedPtr = nullptr;

-                CHECK_HR( res.resource->Map(0, NULL, &mappedPtr) );

+                CHECK_HR( res.resource->Map(0, &EMPTY_RANGE, &mappedPtr) );

 

                 FillData(mappedPtr, res.size, res.dataSeed);

 

@@ -1159,8 +1159,7 @@
                 // Unmap some of them, leave others mapped.

                 if((resIndex % 3) == 1)

                 {

-                    D3D12_RANGE writtenRange = {0, 0};

-                    resources[resIndex].resource->Unmap(0, &writtenRange);

+                    resources[resIndex].resource->Unmap(0, &EMPTY_RANGE);

                 } 

 

                 resources.pop_back();