move latency waitable to end of present
This commit is contained in:
parent
63a8dc7595
commit
b270737bec
@ -42,10 +42,7 @@
|
||||
#define DX12_ALLOW_TEARING 1
|
||||
#define DX12_WAIT_FRAME_LATENCY 1
|
||||
#define DX12_SWAPCHAIN_FLAGS ((DX12_ALLOW_TEARING * DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING) | (DX12_WAIT_FRAME_LATENCY * DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT))
|
||||
|
||||
#define DX12_SWAPCHAIN_BUFFER_COUNT (2)
|
||||
#define DX12_SWAPCHAIN_FORMAT (DXGI_FORMAT_R8G8B8A8_UNORM)
|
||||
//#define DX12_SWAPCHAIN_RTV_FORMAT (DXGI_FORMAT_R8G8B8A8_UNORM_SRGB)
|
||||
#define DX12_SWAPCHAIN_BUFFER_COUNT (4)
|
||||
|
||||
/* Arbitrary limits */
|
||||
#define DX12_NUM_CBV_SRV_UAV_DESCRIPTORS (1024 * 64)
|
||||
@ -2611,7 +2608,7 @@ INTERNAL struct swapchain_buffer *update_swapchain(struct swapchain *swapchain,
|
||||
IDXGISwapChain1 *swapchain1 = 0;
|
||||
{
|
||||
DXGI_SWAP_CHAIN_DESC1 desc = ZI;
|
||||
desc.Format = DX12_SWAPCHAIN_FORMAT;
|
||||
desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
desc.Width = resolution.x;
|
||||
desc.Height = resolution.y;
|
||||
desc.SampleDesc.Count = 1;
|
||||
@ -2771,11 +2768,11 @@ INTERNAL void present_blit(struct swapchain_buffer *dst, struct dx12_resource *s
|
||||
pipeline_scope_end(pipeline_scope);
|
||||
}
|
||||
|
||||
void gp_present(struct sys_window *window, struct v2i32 backresolution, struct gp_resource *texture, struct xform texture_xf, i32 vsync)
|
||||
void gp_present(struct sys_window *window, struct v2i32 backbuffer_resolution, struct gp_resource *texture, struct xform texture_xf, i32 vsync)
|
||||
{
|
||||
__prof;
|
||||
struct swapchain *swapchain = &G.swapchain;
|
||||
struct swapchain_buffer *swapchain_buffer = update_swapchain(swapchain, window, backresolution);
|
||||
struct swapchain_buffer *swapchain_buffer = update_swapchain(swapchain, window, backbuffer_resolution);
|
||||
struct dx12_resource *texture_resource = (struct dx12_resource *)texture;
|
||||
|
||||
/* Blit */
|
||||
@ -2786,14 +2783,7 @@ void gp_present(struct sys_window *window, struct v2i32 backresolution, struct g
|
||||
present_flags |= (DXGI_PRESENT_ALLOW_TEARING * DX12_ALLOW_TEARING);
|
||||
}
|
||||
|
||||
/* Wait */
|
||||
if (swapchain->waitable) {
|
||||
__profn("Present wait");
|
||||
WaitForSingleObjectEx(swapchain->waitable, 1000, 1);
|
||||
}
|
||||
|
||||
/* Present */
|
||||
/* FIXME: Resource barrier */
|
||||
{
|
||||
__profn("Present");
|
||||
HRESULT hr = IDXGISwapChain3_Present(swapchain->swapchain, vsync, present_flags);
|
||||
@ -2822,6 +2812,13 @@ void gp_present(struct sys_window *window, struct v2i32 backresolution, struct g
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Wait on swapchain */
|
||||
/* TODO: Move this to system layer */
|
||||
if (swapchain->waitable) {
|
||||
__profn("Present wait");
|
||||
WaitForSingleObjectEx(swapchain->waitable, 1000, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================== *
|
||||
|
||||
Loading…
Reference in New Issue
Block a user