Browse Source

Fixed issue #1085.

Branimir Karadžić 8 years ago
parent
commit
082b2a0c02
2 changed files with 18 additions and 1 deletions
  1. 16 0
      src/renderer_d3d11.cpp
  2. 2 1
      src/renderer_d3d12.cpp

+ 16 - 0
src/renderer_d3d11.cpp

@@ -4582,12 +4582,28 @@ BX_PRAGMA_DIAGNOSTIC_POP();
 					desc.CPUAccessFlags = 0;
 					desc.CPUAccessFlags = 0;
 					desc.MiscFlags      = 0;
 					desc.MiscFlags      = 0;
 
 
+					if (renderTarget)
+					{
+						desc.BindFlags |= D3D11_BIND_RENDER_TARGET;
+						desc.Usage = D3D11_USAGE_DEFAULT;
+						desc.MiscFlags |= 0
+							| (1 < numMips ? D3D11_RESOURCE_MISC_GENERATE_MIPS : 0)
+							;
+					}
+
 					if (computeWrite)
 					if (computeWrite)
 					{
 					{
 						desc.BindFlags |= D3D11_BIND_UNORDERED_ACCESS;
 						desc.BindFlags |= D3D11_BIND_UNORDERED_ACCESS;
 						desc.Usage = D3D11_USAGE_DEFAULT;
 						desc.Usage = D3D11_USAGE_DEFAULT;
 					}
 					}
 
 
+					if (readBack)
+					{
+						desc.BindFlags = 0;
+						desc.Usage = D3D11_USAGE_STAGING;
+						desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
+					}
+
 					srvd.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE3D;
 					srvd.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE3D;
 					srvd.Texture3D.MipLevels = numMips;
 					srvd.Texture3D.MipLevels = numMips;
 
 

+ 2 - 1
src/renderer_d3d12.cpp

@@ -4270,7 +4270,8 @@ data.NumQualityLevels = 0;
 				break;
 				break;
 
 
 			case Texture3D:
 			case Texture3D:
-				resourceDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE3D;
+				resourceDesc.Dimension        = D3D12_RESOURCE_DIMENSION_TEXTURE3D;
+				resourceDesc.DepthOrArraySize = m_depth;
 				m_srvd.ViewDimension                 = D3D12_SRV_DIMENSION_TEXTURE3D;
 				m_srvd.ViewDimension                 = D3D12_SRV_DIMENSION_TEXTURE3D;
 				m_srvd.Texture3D.MostDetailedMip     = 0;
 				m_srvd.Texture3D.MostDetailedMip     = 0;
 				m_srvd.Texture3D.MipLevels           = numMips;
 				m_srvd.Texture3D.MipLevels           = numMips;