diff --git a/src/engine/renderer/dx.cpp b/src/engine/renderer/dx.cpp index fccf860..709af3f 100644 --- a/src/engine/renderer/dx.cpp +++ b/src/engine/renderer/dx.cpp @@ -1390,6 +1390,9 @@ void dx_begin_frame() { } void dx_end_frame() { + if (!dx.active) + return; + dx.command_list->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(dx.render_targets[dx.frame_index], D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT)); diff --git a/src/engine/renderer/tr_backend.c b/src/engine/renderer/tr_backend.c index b96f0e6..d0610fd 100644 --- a/src/engine/renderer/tr_backend.c +++ b/src/engine/renderer/tr_backend.c @@ -1115,8 +1115,8 @@ void RB_ExecuteRenderCommands( const void *data ) { backEnd.smpFrame = 1; } - bool vk_begin_frame_called = false; - bool vk_end_frame_called = false; + bool begin_frame_called = false; + bool end_frame_called = false; while ( 1 ) { switch ( *(const int *)data ) { @@ -1131,11 +1131,11 @@ void RB_ExecuteRenderCommands( const void *data ) { break; case RC_DRAW_BUFFER: data = RB_DrawBuffer( data ); - vk_begin_frame_called = true; + begin_frame_called = true; break; case RC_SWAP_BUFFERS: data = RB_SwapBuffers( data ); - vk_end_frame_called = true; + end_frame_called = true; break; case RC_SCREENSHOT: data = RB_TakeScreenshotCmd( data ); @@ -1148,8 +1148,11 @@ void RB_ExecuteRenderCommands( const void *data ) { backEnd.pc.msec = t2 - t1; // VULKAN - if (com_errorEntered && (vk_begin_frame_called && !vk_end_frame_called)) + // DX12 + if (com_errorEntered && (begin_frame_called && !end_frame_called)) { vk_end_frame(); + dx_end_frame(); + } return; }