@@ -146,8 +146,6 @@ namespace dxvk {
146
146
m_presentThread.threadHandle = dxvk::thread ([this ]() { runPresentThread (); });
147
147
m_pacerThread.threadHandle = dxvk::thread ([this ]() { runPacerThread (); });
148
148
149
- // note: this is the size of the window client area, which isn't necessarily the same as the D3D9 swapchain size
150
- device->getCommon ()->metaDLFG ().setDisplaySize (uint2 (desc.imageExtent .width , desc.imageExtent .height ));
151
149
}
152
150
153
151
DxvkDLFGPresenter::~DxvkDLFGPresenter () {
@@ -1181,7 +1179,8 @@ namespace dxvk {
1181
1179
: CommonDeviceObject(device)
1182
1180
// xxxnsubtil: use swapchain frame count here
1183
1181
, m_dlfgEvalCommandLists(device, 1 )
1184
- , m_dlfgFrameEndSemaphore(RtxSemaphore::createTimeline(device, " DLFG frame end" )) {
1182
+ , m_dlfgFrameEndSemaphore(RtxSemaphore::createTimeline(device, " DLFG frame end" ))
1183
+ , m_currentDisplaySize{0 , 0 } {
1185
1184
1186
1185
m_queryPoolDLFG = new DxvkDLFGTimestampQueryPool (m_device, kMaxFramesInFlight );
1187
1186
@@ -1230,6 +1229,15 @@ namespace dxvk {
1230
1229
m_contextDirty = true ;
1231
1230
}
1232
1231
1232
+ // check if the output extents have changed
1233
+ VkExtent3D outputExtent = outputImage->imageInfo ().extent ;
1234
+ if (outputExtent.width != m_currentDisplaySize[0 ] ||
1235
+ outputExtent.height != m_currentDisplaySize[1 ]) {
1236
+ // note: this is the size of the window client area, which isn't necessarily the same as the D3D9 swapchain size
1237
+ setDisplaySize (uint2 (outputExtent.width , outputExtent.height ));
1238
+ m_contextDirty = true ;
1239
+ }
1240
+
1233
1241
if (m_contextDirty) {
1234
1242
assert (m_dlfgContext != nullptr );
1235
1243
0 commit comments