mirror of
https://github.com/microsoft/DirectXTex.git
synced 2025-07-09 11:40:14 +02:00
Fix of CaptureTexture for Reserved and MultiSample resources (#218)
This commit is contained in:
parent
fe43f39242
commit
87e5b0e9fa
@ -141,12 +141,6 @@ namespace
|
|||||||
return HRESULT_E_NOT_SUPPORTED;
|
return HRESULT_E_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D12_HEAP_PROPERTIES sourceHeapProperties;
|
|
||||||
D3D12_HEAP_FLAGS sourceHeapFlags;
|
|
||||||
HRESULT hr = pSource->GetHeapProperties(&sourceHeapProperties, &sourceHeapFlags);
|
|
||||||
if (FAILED(hr))
|
|
||||||
return hr;
|
|
||||||
|
|
||||||
numberOfResources = (desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D)
|
numberOfResources = (desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D)
|
||||||
? 1u : desc.DepthOrArraySize;
|
? 1u : desc.DepthOrArraySize;
|
||||||
numberOfResources *= desc.MipLevels;
|
numberOfResources *= desc.MipLevels;
|
||||||
@ -171,7 +165,9 @@ namespace
|
|||||||
device->GetCopyableFootprints(&desc, 0, numberOfResources, 0,
|
device->GetCopyableFootprints(&desc, 0, numberOfResources, 0,
|
||||||
pLayout, pNumRows, pRowSizesInBytes, &totalResourceSize);
|
pLayout, pNumRows, pRowSizesInBytes, &totalResourceSize);
|
||||||
|
|
||||||
if (sourceHeapProperties.Type == D3D12_HEAP_TYPE_READBACK)
|
D3D12_HEAP_PROPERTIES sourceHeapProperties;
|
||||||
|
HRESULT hr = pSource->GetHeapProperties(&sourceHeapProperties, nullptr);
|
||||||
|
if (SUCCEEDED(hr) && sourceHeapProperties.Type == D3D12_HEAP_TYPE_READBACK)
|
||||||
{
|
{
|
||||||
// Handle case where the source is already a staging texture we can use directly
|
// Handle case where the source is already a staging texture we can use directly
|
||||||
pStaging = pSource;
|
pStaging = pSource;
|
||||||
@ -218,6 +214,7 @@ namespace
|
|||||||
auto descCopy = desc;
|
auto descCopy = desc;
|
||||||
descCopy.SampleDesc.Count = 1;
|
descCopy.SampleDesc.Count = 1;
|
||||||
descCopy.SampleDesc.Quality = 0;
|
descCopy.SampleDesc.Quality = 0;
|
||||||
|
descCopy.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
|
||||||
|
|
||||||
ComPtr<ID3D12Resource> pTemp;
|
ComPtr<ID3D12Resource> pTemp;
|
||||||
hr = device->CreateCommittedResource(
|
hr = device->CreateCommittedResource(
|
||||||
|
@ -691,12 +691,8 @@ namespace
|
|||||||
return HRESULT_E_NOT_SUPPORTED;
|
return HRESULT_E_NOT_SUPPORTED;
|
||||||
|
|
||||||
D3D12_HEAP_PROPERTIES sourceHeapProperties;
|
D3D12_HEAP_PROPERTIES sourceHeapProperties;
|
||||||
D3D12_HEAP_FLAGS sourceHeapFlags;
|
HRESULT hr = pSource->GetHeapProperties(&sourceHeapProperties, nullptr);
|
||||||
HRESULT hr = pSource->GetHeapProperties(&sourceHeapProperties, &sourceHeapFlags);
|
if (SUCCEEDED(hr) && sourceHeapProperties.Type == D3D12_HEAP_TYPE_READBACK)
|
||||||
if (FAILED(hr))
|
|
||||||
return hr;
|
|
||||||
|
|
||||||
if (sourceHeapProperties.Type == D3D12_HEAP_TYPE_READBACK)
|
|
||||||
{
|
{
|
||||||
// Handle case where the source is already a staging texture we can use directly
|
// Handle case where the source is already a staging texture we can use directly
|
||||||
pStaging = pSource;
|
pStaging = pSource;
|
||||||
@ -745,6 +741,7 @@ namespace
|
|||||||
auto descCopy = desc;
|
auto descCopy = desc;
|
||||||
descCopy.SampleDesc.Count = 1;
|
descCopy.SampleDesc.Count = 1;
|
||||||
descCopy.SampleDesc.Quality = 0;
|
descCopy.SampleDesc.Quality = 0;
|
||||||
|
descCopy.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
|
||||||
|
|
||||||
ComPtr<ID3D12Resource> pTemp;
|
ComPtr<ID3D12Resource> pTemp;
|
||||||
hr = device->CreateCommittedResource(
|
hr = device->CreateCommittedResource(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user