wait on frame latency object
This commit is contained in:
parent
c548eacd35
commit
e3e0a98456
@ -83,5 +83,5 @@
|
|||||||
/* TODO: Move these to user-configurable settings */
|
/* TODO: Move these to user-configurable settings */
|
||||||
|
|
||||||
#define AUDIO_ENABLED 0
|
#define AUDIO_ENABLED 0
|
||||||
#define VSYNC_ENABLED 0
|
#define VSYNC_ENABLED 1
|
||||||
#define USER_FPS_LIMIT 300
|
#define USER_FPS_LIMIT 300
|
||||||
|
|||||||
@ -39,11 +39,9 @@
|
|||||||
# pragma comment(lib, "advapi32")
|
# pragma comment(lib, "advapi32")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#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_ALLOW_TEARING 1
|
#define DX12_ALLOW_TEARING 1
|
||||||
#define DX12_SWAPCHAIN_FLAGS (DX12_ALLOW_TEARING * DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING)
|
#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_BUFFER_COUNT (2)
|
||||||
#define DX12_SWAPCHAIN_FORMAT (DXGI_FORMAT_R8G8B8A8_UNORM)
|
#define DX12_SWAPCHAIN_FORMAT (DXGI_FORMAT_R8G8B8A8_UNORM)
|
||||||
@ -235,6 +233,7 @@ struct swapchain_buffer {
|
|||||||
struct swapchain {
|
struct swapchain {
|
||||||
IDXGISwapChain3 *swapchain;
|
IDXGISwapChain3 *swapchain;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
|
HANDLE waitable;
|
||||||
struct v2i32 resolution;
|
struct v2i32 resolution;
|
||||||
struct swapchain_buffer buffers[DX12_SWAPCHAIN_BUFFER_COUNT];
|
struct swapchain_buffer buffers[DX12_SWAPCHAIN_BUFFER_COUNT];
|
||||||
};
|
};
|
||||||
@ -2635,6 +2634,13 @@ INTERNAL struct swapchain_buffer *update_swapchain(struct swapchain *swapchain,
|
|||||||
sys_panic(LIT("Failed to create IDXGISwapChain3"));
|
sys_panic(LIT("Failed to create IDXGISwapChain3"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Create waitable object */
|
||||||
|
#if DX12_WAIT_FRAME_LATENCY
|
||||||
|
IDXGISwapChain3_SetMaximumFrameLatency(swapchain->swapchain, 1);
|
||||||
|
swapchain->waitable = IDXGISwapChain2_GetFrameLatencyWaitableObject(swapchain->swapchain);
|
||||||
|
ASSERT(swapchain->waitable);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Disable Alt+Enter changing monitor resolution to match window size */
|
/* Disable Alt+Enter changing monitor resolution to match window size */
|
||||||
IDXGIFactory_MakeWindowAssociation(G.factory, hwnd, DXGI_MWA_NO_ALT_ENTER);
|
IDXGIFactory_MakeWindowAssociation(G.factory, hwnd, DXGI_MWA_NO_ALT_ENTER);
|
||||||
|
|
||||||
@ -2780,6 +2786,12 @@ void gp_present(struct sys_window *window, struct v2i32 backresolution, struct g
|
|||||||
present_flags |= (DXGI_PRESENT_ALLOW_TEARING * DX12_ALLOW_TEARING);
|
present_flags |= (DXGI_PRESENT_ALLOW_TEARING * DX12_ALLOW_TEARING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Wait */
|
||||||
|
if (swapchain->waitable) {
|
||||||
|
__profn("Present wait");
|
||||||
|
WaitForSingleObjectEx(swapchain->waitable, 1000, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/* Present */
|
/* Present */
|
||||||
/* FIXME: Resource barrier */
|
/* FIXME: Resource barrier */
|
||||||
{
|
{
|
||||||
|
|||||||
@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
#if PROFILING
|
#if PROFILING
|
||||||
|
|
||||||
#define PROFILING_SYSTEM_TRACE 0
|
#define PROFILING_SYSTEM_TRACE 1
|
||||||
#define PROFILING_CAPTURE_FRAME_IMAGE 0
|
#define PROFILING_CAPTURE_FRAME_IMAGE 0
|
||||||
#define PROFILING_LOCKS 0
|
#define PROFILING_LOCKS 0
|
||||||
#define PROFILING_D3D 0
|
#define PROFILING_D3D 1
|
||||||
#define PROFILING_FILE_WSTR L".tracy"
|
#define PROFILING_FILE_WSTR L".tracy"
|
||||||
#define PROFILING_CMD_WSTR L"cmd /C start \"\" /wait tracy-capture.exe -o .tracy -a 127.0.0.1 && start \"\" tracy-profiler.exe .tracy"
|
#define PROFILING_CMD_WSTR L"cmd /C start \"\" /wait tracy-capture.exe -o .tracy -a 127.0.0.1 && start \"\" tracy-profiler.exe .tracy"
|
||||||
//#define PROFILING_CMD_WSTR L"tracy-profiler.exe -a 127.0.0.1"
|
//#define PROFILING_CMD_WSTR L"tracy-profiler.exe -a 127.0.0.1"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user