dx12 update

This commit is contained in:
Turanszki Janos
2021-04-14 13:58:15 +02:00
parent 165fc24243
commit b8e7a47904
3 changed files with 11 additions and 9 deletions
+10 -7
View File
@@ -2724,7 +2724,7 @@ using namespace DX12_Internal;
{
auto internal_state = std::make_shared<Texture_DX12>();
internal_state->allocationhandler = allocationhandler;
internal_state->resource = backBuffers[backbuffer_index];
internal_state->resource = backBuffers[swapChain->GetCurrentBackBufferIndex()];
D3D12_RESOURCE_DESC desc = internal_state->resource->GetDesc();
device->GetCopyableFootprints(&desc, 0, 1, 0, &internal_state->footprint, nullptr, nullptr, nullptr);
@@ -5310,7 +5310,7 @@ using namespace DX12_Internal;
{
D3D12_RESOURCE_BARRIER barrier = {};
barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
barrier.Transition.pResource = backBuffers[backbuffer_index].Get();
barrier.Transition.pResource = backBuffers[swapChain->GetCurrentBackBufferIndex()].Get();
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
@@ -5322,7 +5322,7 @@ using namespace DX12_Internal;
const float clearcolor[] = { 0,0,0,1 };
D3D12_RENDER_PASS_RENDER_TARGET_DESC RTV = {};
RTV.cpuDescriptor = backbufferRTV[backbuffer_index];
RTV.cpuDescriptor = backbufferRTV[swapChain->GetCurrentBackBufferIndex()];
RTV.BeginningAccess.Type = D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR;
RTV.BeginningAccess.Clear.ClearValue.Color[0] = clearcolor[0];
RTV.BeginningAccess.Clear.ClearValue.Color[1] = clearcolor[1];
@@ -5342,7 +5342,7 @@ using namespace DX12_Internal;
// Indicate that the back buffer will now be used to present.
D3D12_RESOURCE_BARRIER barrier = {};
barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
barrier.Transition.pResource = backBuffers[backbuffer_index].Get();
barrier.Transition.pResource = backBuffers[swapChain->GetCurrentBackBufferIndex()].Get();
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT;
barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
@@ -5353,7 +5353,6 @@ using namespace DX12_Internal;
HRESULT hr = swapChain->Present(VSYNC, 0);
assert(SUCCEEDED(hr));
backbuffer_index = (backbuffer_index + 1) % BACKBUFFER_COUNT;
#if 0
D3D12MA::Stats stats = {};
@@ -5364,18 +5363,22 @@ using namespace DX12_Internal;
CommandList GraphicsDevice_DX12::BeginCommandList()
{
HRESULT hr;
CommandList cmd = cmd_count.fetch_add(1);
if (GetDirectCommandList(cmd) == nullptr)
{
// need to create one more command list:
assert(cmd < COMMANDLIST_COUNT);
HRESULT hr;
for (uint32_t fr = 0; fr < BACKBUFFER_COUNT; ++fr)
{
hr = device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&frames[fr].commandAllocators[cmd]));
assert(SUCCEEDED(hr));
hr = device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, frames[fr].commandAllocators[cmd].Get(), nullptr, IID_PPV_ARGS(&frames[fr].commandLists[cmd]));
assert(SUCCEEDED(hr));
hr = frames[fr].commandLists[cmd]->Close();
assert(SUCCEEDED(hr));
frames[fr].resourceBuffer[cmd].init(this, 1024 * 1024); // 1 MB starting size
@@ -5388,7 +5391,7 @@ using namespace DX12_Internal;
}
// Start the command list in a default state:
HRESULT hr = GetFrameResources().commandAllocators[cmd]->Reset();
hr = GetFrameResources().commandAllocators[cmd]->Reset();
assert(SUCCEEDED(hr));
hr = GetDirectCommandList(cmd)->Reset(GetFrameResources().commandAllocators[cmd].Get(), nullptr);
assert(SUCCEEDED(hr));
-1
View File
@@ -35,7 +35,6 @@ namespace wiGraphics
Microsoft::WRL::ComPtr<IDXGIFactory6> factory;
Microsoft::WRL::ComPtr<ID3D12CommandQueue> directQueue;
uint32_t backbuffer_index = 0;
Microsoft::WRL::ComPtr<ID3D12Resource> backBuffers[BACKBUFFER_COUNT];
Microsoft::WRL::ComPtr<ID3D12CommandSignature> dispatchIndirectCommandSignature;
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wiVersion
// minor features, major updates, breaking compatibility changes
const int minor = 55;
// minor bug fixes, alterations, refactors, updates
const int revision = 26;
const int revision = 27;
const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);