@@ -1094,13 +1094,35 @@ GSDevice::PresentResult GSDevice11::BeginPresent(bool frame_skip)
10941094 m_state.rtv = m_swap_chain_rtv.get ();
10951095 m_state.rtv ->AddRef ();
10961096 m_state.current_rt = nullptr ;
1097+
1098+ if (m_state.dsv_as_rtv )
1099+ {
1100+ m_state.dsv_as_rtv ->Release ();
1101+ m_state.dsv_as_rtv = nullptr ;
1102+ }
1103+ m_state.current_ds_as_rt = nullptr ;
1104+
10971105 if (m_state.dsv )
10981106 {
10991107 m_state.dsv ->Release ();
11001108 m_state.dsv = nullptr ;
11011109 }
11021110 m_state.current_ds = nullptr ;
11031111
1112+ if (m_state.rt_uav )
1113+ {
1114+ m_state.rt_uav ->Release ();
1115+ m_state.rt_uav = nullptr ;
1116+ }
1117+ m_state.current_rt_uav = nullptr ;
1118+
1119+ if (m_state.ds_uav )
1120+ {
1121+ m_state.ds_uav ->Release ();
1122+ m_state.ds_uav = nullptr ;
1123+ }
1124+ m_state.current_ds_uav = nullptr ;
1125+
11041126 g_perfmon.Put (GSPerfMon::RenderPasses, 1 );
11051127
11061128 const GSVector2i size = GetWindowSize ();
@@ -2926,7 +2948,7 @@ void GSDevice11::OMSetRenderTargets(GSTexture* rt, GSTexture* ds_as_rt, GSTextur
29262948 m_state.dsv_as_rtv ->Release ();
29272949 if (dsv_as_rtv)
29282950 dsv_as_rtv->AddRef ();
2929- m_state.rtv = dsv_as_rtv;
2951+ m_state.dsv_as_rtv = dsv_as_rtv;
29302952 m_state.current_ds_as_rt = ds_as_rt;
29312953 }
29322954 if (m_state.dsv != dsv)
@@ -2984,6 +3006,7 @@ void GSDevice11::OMSetRenderTargets(GSTexture* rt, GSTexture* ds_as_rt, GSTextur
29843006 {
29853007 const GSVector2i size =
29863008 rt ? rt->GetSize () :
3009+ ds_as_rt ? ds_as_rt->GetSize () :
29873010 ds ? ds->GetSize () :
29883011 (rt_uav_tex && rt_uav_tex != m_null_texture) ? rt_uav_tex->GetSize () :
29893012 ds_uav_tex->GetSize ();
0 commit comments