Branimir Karadžić před 7 roky
rodič
revize
4f42f9beb3
1 změnil soubory, kde provedl 3 přidání a 32 odebrání
  1. 3 32
      src/renderer_d3d12.cpp

+ 3 - 32
src/renderer_d3d12.cpp

@@ -4562,8 +4562,6 @@ data.NumQualityLevels = 0;
 				, swizzle ? " (swizzle BGRA8 -> RGBA8)" : ""
 				);
 
-			uint32_t totalSize = 0;
-
 			for (uint8_t side = 0; side < numSides; ++side)
 			{
 				uint32_t width  = textureWidth;
@@ -4597,7 +4595,6 @@ data.NumQualityLevels = 0;
 							srd[kk].pData      = temp;
 							srd[kk].RowPitch   = pitch;
 							srd[kk].SlicePitch = slice;
-							totalSize += size;
 						}
 						else if (compressed)
 						{
@@ -4617,7 +4614,6 @@ data.NumQualityLevels = 0;
 							srd[kk].pData      = temp;
 							srd[kk].RowPitch   = pitch;
 							srd[kk].SlicePitch = slice;
-							totalSize += size;
 						}
 						else
 						{
@@ -4637,7 +4633,6 @@ data.NumQualityLevels = 0;
 							srd[kk].pData = temp;
 							srd[kk].RowPitch   = pitch;
 							srd[kk].SlicePitch = slice;
-							totalSize += size;
 						}
 
 						++kk;
@@ -4646,7 +4641,6 @@ data.NumQualityLevels = 0;
 					{
 						const uint32_t pitch = bx::strideAlign(width*bpp / 8, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
 						const uint32_t slice = bx::strideAlign(height*pitch,  D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
-						totalSize += slice;
 					}
 
 					width  >>= 1;
@@ -4655,8 +4649,6 @@ data.NumQualityLevels = 0;
 				}
 			}
 
-			BX_TRACE("texture total size: %d", totalSize);
-
 			const uint32_t msaaQuality = bx::uint32_satsub( (m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
 			const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality];
 
@@ -4821,33 +4813,12 @@ data.NumQualityLevels = 0;
 //				DX_CHECK(m_ptr->Map(0, NULL, &directAccessPtr) );
 			}
 
+			if (kk != 0)
 			{
 				uint64_t uploadBufferSize;
-				uint32_t* numRows        = (uint32_t*)alloca(sizeof(uint32_t)*numSrd);
-				uint64_t* rowSizeInBytes = (uint64_t*)alloca(sizeof(uint64_t)*numSrd);
-				D3D12_PLACED_SUBRESOURCE_FOOTPRINT* layouts = (D3D12_PLACED_SUBRESOURCE_FOOTPRINT*)alloca(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT)*numSrd);
-
-				device->GetCopyableFootprints(&resourceDesc
-					, 0
-					, numSrd
-					, 0
-					, layouts
-					, numRows
-					, rowSizeInBytes
-					, &uploadBufferSize
-					);
-				BX_WARN(uploadBufferSize == totalSize, "uploadBufferSize %d (totalSize %d), numRows %d, rowSizeInBytes %d"
-					, uploadBufferSize
-					, totalSize
-					, numRows[0]
-					, rowSizeInBytes[0]
-					);
-				totalSize = uint32_t(uploadBufferSize);
-			}
+				device->GetCopyableFootprints(&resourceDesc, 0, numSrd, 0, NULL, NULL, NULL, &uploadBufferSize);
 
-			if (kk != 0)
-			{
-				ID3D12Resource* staging = createCommittedResource(s_renderD3D12->m_device, HeapProperty::Upload, totalSize);
+				ID3D12Resource* staging = createCommittedResource(s_renderD3D12->m_device, HeapProperty::Upload, uint32_t(uploadBufferSize) );
 
 				setState(commandList, D3D12_RESOURCE_STATE_COPY_DEST);