diff --git a/engine/src/RHI/D3D12/D3D12CommandList.cpp b/engine/src/RHI/D3D12/D3D12CommandList.cpp index 394eca87..61401d64 100644 --- a/engine/src/RHI/D3D12/D3D12CommandList.cpp +++ b/engine/src/RHI/D3D12/D3D12CommandList.cpp @@ -19,6 +19,7 @@ bool D3D12CommandList::Initialize(ID3D12Device* device, CommandQueueType type, I D3D12_COMMAND_LIST_TYPE listType = ToD3D12(type); m_commandAllocator = allocator; + m_device = device; HRESULT hResult = device->CreateCommandList( 0, @@ -34,11 +35,22 @@ bool D3D12CommandList::Initialize(ID3D12Device* device, CommandQueueType type, I m_type = type; + D3D12_DESCRIPTOR_HEAP_DESC heapDesc = {}; + heapDesc.NumDescriptors = 16; + heapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; + heapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + heapDesc.NodeMask = 0; + hResult = device->CreateDescriptorHeap(&heapDesc, IID_PPV_ARGS(&m_rtvHeap)); + if (FAILED(hResult)) { + return false; + } + return true; } void D3D12CommandList::Shutdown() { m_commandList.Reset(); + m_rtvHeap.Reset(); m_resourceStateMap.clear(); m_trackedResources.clear(); } @@ -312,8 +324,6 @@ void D3D12CommandList::DrawIndexedInstancedIndirectInternal(ID3D12Resource* argB } void D3D12CommandList::ClearRenderTargetView(ID3D12Resource* renderTarget, const float color[4], uint32_t rectCount, const D3D12_RECT* rects) { - D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle = {}; - m_commandList->ClearRenderTargetView(rtvHandle, color, rectCount, rects); } void D3D12CommandList::ClearRenderTargetView(D3D12_CPU_DESCRIPTOR_HANDLE renderTargetHandle, const float color[4], uint32_t rectCount, const D3D12_RECT* rects) { diff --git a/engine/src/RHI/D3D12/D3D12Device.cpp b/engine/src/RHI/D3D12/D3D12Device.cpp index 3668de56..6832dd57 100644 --- a/engine/src/RHI/D3D12/D3D12Device.cpp +++ b/engine/src/RHI/D3D12/D3D12Device.cpp @@ -279,10 +279,10 @@ RHITexture* D3D12Device::CreateTexture(const TextureDesc& desc) { d3d12Desc.Width = desc.width; d3d12Desc.Height = desc.height; - d3d12Desc.DepthOrArraySize = desc.depth; - d3d12Desc.MipLevels = desc.mipLevels; + d3d12Desc.DepthOrArraySize = desc.depth > 0 ? desc.depth : 1; + d3d12Desc.MipLevels = desc.mipLevels > 0 ? desc.mipLevels : 1; d3d12Desc.Format = static_cast(desc.format); - d3d12Desc.SampleDesc.Count = desc.sampleCount; + d3d12Desc.SampleDesc.Count = desc.sampleCount > 0 ? desc.sampleCount : 1; d3d12Desc.SampleDesc.Quality = desc.sampleQuality; d3d12Desc.Flags = static_cast(desc.flags); d3d12Desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;