summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/nine/device9.c3
-rw-r--r--src/gallium/state_trackers/nine/swapchain9.c13
-rw-r--r--src/gallium/state_trackers/nine/swapchain9.h3
3 files changed, 18 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c
index 1744b538717..7edba6b1e9f 100644
--- a/src/gallium/state_trackers/nine/device9.c
+++ b/src/gallium/state_trackers/nine/device9.c
@@ -548,6 +548,9 @@ NineDevice9_TestCooperativeLevel( struct NineDevice9 *This )
if (NineSwapChain9_GetOccluded(This->swapchains[0])) {
This->device_needs_reset = TRUE;
return D3DERR_DEVICELOST;
+ } else if (NineSwapChain9_ResolutionMismatch(This->swapchains[0])) {
+ This->device_needs_reset = TRUE;
+ return D3DERR_DEVICENOTRESET;
} else if (This->device_needs_reset) {
return D3DERR_DEVICENOTRESET;
}
diff --git a/src/gallium/state_trackers/nine/swapchain9.c b/src/gallium/state_trackers/nine/swapchain9.c
index e2fb4d4a1e3..803bd519a59 100644
--- a/src/gallium/state_trackers/nine/swapchain9.c
+++ b/src/gallium/state_trackers/nine/swapchain9.c
@@ -794,7 +794,8 @@ NineSwapChain9_Present( struct NineSwapChain9 *This,
return S_PRESENT_OCCLUDED;
}
} else {
- if (NineSwapChain9_GetOccluded(This)) {
+ if (NineSwapChain9_GetOccluded(This) ||
+ NineSwapChain9_ResolutionMismatch(This)) {
This->base.device->device_needs_reset = TRUE;
}
if (This->base.device->device_needs_reset) {
@@ -1016,3 +1017,13 @@ NineSwapChain9_GetOccluded( struct NineSwapChain9 *This )
return FALSE;
}
+
+BOOL
+NineSwapChain9_ResolutionMismatch( struct NineSwapChain9 *This )
+{
+ if (This->base.device->minor_version_num > 1) {
+ return ID3DPresent_ResolutionMismatch(This->present);
+ }
+
+ return FALSE;
+}
diff --git a/src/gallium/state_trackers/nine/swapchain9.h b/src/gallium/state_trackers/nine/swapchain9.h
index 7714cd52cdd..43032ce8543 100644
--- a/src/gallium/state_trackers/nine/swapchain9.h
+++ b/src/gallium/state_trackers/nine/swapchain9.h
@@ -142,4 +142,7 @@ NineSwapChain9_GetPresentParameters( struct NineSwapChain9 *This,
BOOL
NineSwapChain9_GetOccluded( struct NineSwapChain9 *This );
+BOOL
+NineSwapChain9_ResolutionMismatch( struct NineSwapChain9 *This );
+
#endif /* _NINE_SWAPCHAIN9_H_ */