Fix minor issues in D3D12
This commit is contained in:
@@ -269,6 +269,7 @@ void GPUContextDX12::Reset()
|
||||
_currentAllocator = _device->GetCommandQueue()->RequestAllocator();
|
||||
_commandList->Reset(_currentAllocator, nullptr);
|
||||
}
|
||||
IsOpen = true;
|
||||
|
||||
// Setup initial state
|
||||
_currentState = nullptr;
|
||||
@@ -327,6 +328,7 @@ uint64 GPUContextDX12::Execute(bool waitForCompletion)
|
||||
_currentState = nullptr;
|
||||
|
||||
// Execute commands
|
||||
IsOpen = false;
|
||||
const uint64 fenceValue = queue->ExecuteCommandList(_commandList);
|
||||
|
||||
// Cleanup used allocator
|
||||
|
||||
@@ -93,6 +93,9 @@ public:
|
||||
return _commandList;
|
||||
}
|
||||
|
||||
// Flag for command list state.
|
||||
bool IsOpen = false;
|
||||
|
||||
uint64 FrameFenceValues[2];
|
||||
|
||||
public:
|
||||
|
||||
@@ -171,7 +171,7 @@ bool GPUTextureDX12::OnInit()
|
||||
if (isWrite)
|
||||
{
|
||||
_device->Locker.Lock();
|
||||
if (IsInMainThread() && _device->IsRendering())
|
||||
if (IsInMainThread() && _device->IsRendering() && _device->GetMainContextDX12()->IsOpen)
|
||||
_device->GetMainContextDX12()->GetCommandList()->DiscardResource(_resource, nullptr);
|
||||
else
|
||||
_device->PendingResourceDiscards.Add(_resource);
|
||||
|
||||
@@ -83,6 +83,7 @@ protected:
|
||||
#if GRAPHICS_API_DIRECTX12
|
||||
case D3D_FEATURE_LEVEL_12_0:
|
||||
case D3D_FEATURE_LEVEL_12_1:
|
||||
case D3D_FEATURE_LEVEL_12_2:
|
||||
return ShaderProfile::DirectX_SM5;
|
||||
#endif
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user