D3D12: Cleanup.

This commit is contained in:
Branimir Karadžić 2018-04-26 16:54:11 -07:00
parent 7bb307d654
commit 2f446e10a1
3 changed files with 29 additions and 5 deletions

View File

@ -2148,7 +2148,8 @@ namespace bgfx
|| BX_PLATFORM_WINRT
) )
{
score += RendererType::Direct3D11 == renderer ? 20 : 0;
score += RendererType::Direct3D12 == renderer ? 20 : 0;
score += RendererType::Direct3D11 == renderer ? 10 : 0;
}
scores[numScores++] = (score<<8) | uint8_t(renderer);

View File

@ -4479,7 +4479,7 @@ namespace bgfx { namespace d3d11
case Texture2D:
case TextureCube:
{
D3D11_TEXTURE2D_DESC desc;
D3D11_TEXTURE2D_DESC desc = {};
desc.Width = textureWidth;
desc.Height = textureHeight;
desc.MipLevels = numMips;
@ -4583,7 +4583,7 @@ namespace bgfx { namespace d3d11
case Texture3D:
{
D3D11_TEXTURE3D_DESC desc;
D3D11_TEXTURE3D_DESC desc = {};
desc.Width = textureWidth;
desc.Height = textureHeight;
desc.Depth = imageContainer.m_depth;

View File

@ -439,7 +439,7 @@ namespace bgfx { namespace d3d12
initHeapProperties(_device, s_heapProperties[HeapProperty::ReadBack].m_properties);
}
ID3D12Resource* createCommittedResource(ID3D12Device* _device, HeapProperty::Enum _heapProperty, D3D12_RESOURCE_DESC* _resourceDesc, D3D12_CLEAR_VALUE* _clearValue)
ID3D12Resource* createCommittedResource(ID3D12Device* _device, HeapProperty::Enum _heapProperty, const D3D12_RESOURCE_DESC* _resourceDesc, const D3D12_CLEAR_VALUE* _clearValue, bool _memSet = false)
{
const HeapProperty& heapProperty = s_heapProperties[_heapProperty];
ID3D12Resource* resource;
@ -455,6 +455,16 @@ namespace bgfx { namespace d3d12
, _resourceDesc->Width
);
if (BX_ENABLED(BX_PLATFORM_XBOXONE)
&& _memSet)
{
void* ptr;
DX_CHECK(resource->Map(0, NULL, &ptr) );
D3D12_RESOURCE_ALLOCATION_INFO rai = _device->GetResourceAllocationInfo(1, 1, _resourceDesc);
bx::memSet(ptr, 0, rai.SizeInBytes);
resource->Unmap(0, NULL);
}
return resource;
}
@ -1898,6 +1908,19 @@ namespace bgfx { namespace d3d12
, (void**)&m_backBufferColor[ii]
) );
m_device->CreateRenderTargetView(m_backBufferColor[ii], NULL, handle);
if (BX_ENABLED(BX_PLATFORM_XBOXONE) )
{
ID3D12Resource* resource = m_backBufferColor[ii];
BX_CHECK(DXGI_FORMAT_R8G8B8A8_UNORM == m_scd.format, "");
const uint32_t size = m_scd.width*m_scd.height*4;
void* ptr;
DX_CHECK(resource->Map(0, NULL, &ptr) );
bx::memSet(ptr, 0, size);
resource->Unmap(0, NULL);
}
}
D3D12_RESOURCE_DESC resourceDesc;
@ -4620,7 +4643,7 @@ data.NumQualityLevels = 0;
break;
}
m_ptr = createCommittedResource(device, HeapProperty::Texture, &resourceDesc, clearValue);
m_ptr = createCommittedResource(device, HeapProperty::Texture, &resourceDesc, clearValue, renderTarget);
if (directAccess)
{