@@ -61,29 +61,48 @@ void CRT::create(LPCSTR Name, u32 w, u32 h, D3DFORMAT f, u32 SampleCount)
6161 u32 usage = 0 ;
6262 if (D3DFMT_D24X8 == fmt)
6363 usage = D3DUSAGE_DEPTHSTENCIL;
64- else if (D3DFMT_D24S8 == fmt)
65- usage = D3DUSAGE_DEPTHSTENCIL;
6664 else if (D3DFMT_D15S1 == fmt)
6765 usage = D3DUSAGE_DEPTHSTENCIL;
68- else if (D3DFMT_D16 == fmt)
69- usage = D3DUSAGE_DEPTHSTENCIL;
70- else if (D3DFMT_D16_LOCKABLE == fmt)
71- usage = D3DUSAGE_DEPTHSTENCIL;
72- else if (D3DFMT_D32F_LOCKABLE == fmt)
73- usage = D3DUSAGE_DEPTHSTENCIL;
7466 else if ((D3DFORMAT)MAKEFOURCC (' D' , ' F' , ' 2' , ' 4' ) == fmt)
7567 usage = D3DUSAGE_DEPTHSTENCIL;
7668 else
7769 usage = D3DUSAGE_RENDERTARGET;
7870
7971 DXGI_FORMAT dx10FMT;
8072
81- if (fmt != D3DFMT_D24S8)
82- dx10FMT = dx10TextureUtils::ConvertTextureFormat (fmt);
83- else
73+ switch (fmt)
8474 {
75+ case D3DFMT_D32S8X24:
76+ dx10FMT = DXGI_FORMAT_R32G8X24_TYPELESS;
77+ usage = D3DUSAGE_DEPTHSTENCIL;
78+ break ;
79+
80+ case D3DFMT_D24S8:
8581 dx10FMT = DXGI_FORMAT_R24G8_TYPELESS;
8682 usage = D3DUSAGE_DEPTHSTENCIL;
83+ break ;
84+
85+ case D3DFMT_D32:
86+ VERIFY (false , " What? How this happen?" );
87+ [[fallthrough]];
88+
89+ case D3DFMT_D32F_LOCKABLE:
90+ dx10FMT = DXGI_FORMAT_R32_TYPELESS;
91+ usage = D3DUSAGE_DEPTHSTENCIL;
92+ break ;
93+
94+ case D3DFMT_D16:
95+ VERIFY (false , " What? How this happen?" );
96+ [[fallthrough]];
97+
98+ case D3DFMT_D16_LOCKABLE:
99+ dx10FMT = DXGI_FORMAT_R16_TYPELESS;
100+ usage = D3DUSAGE_DEPTHSTENCIL;
101+ break ;
102+
103+ default :
104+ dx10FMT = dx10TextureUtils::ConvertTextureFormat (fmt);
105+ break ;
87106 }
88107
89108 const bool useAsDepth = usage != D3DUSAGE_RENDERTARGET;
@@ -154,10 +173,24 @@ void CRT::create(LPCSTR Name, u32 w, u32 h, D3DFORMAT f, u32 SampleCount)
154173 }
155174
156175 ViewDesc.Texture2D .MipSlice = 0 ;
176+
157177 switch (desc.Format )
158178 {
159- case DXGI_FORMAT_R24G8_TYPELESS: ViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; break ;
160- case DXGI_FORMAT_R32_TYPELESS: ViewDesc.Format = DXGI_FORMAT_D32_FLOAT; break ;
179+ case DXGI_FORMAT_R16_TYPELESS:
180+ ViewDesc.Format = DXGI_FORMAT_D16_UNORM;
181+ break ;
182+
183+ case DXGI_FORMAT_R24G8_TYPELESS:
184+ ViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
185+ break ;
186+
187+ case DXGI_FORMAT_R32_TYPELESS:
188+ ViewDesc.Format = DXGI_FORMAT_D32_FLOAT;
189+ break ;
190+
191+ case DXGI_FORMAT_R32G8X24_TYPELESS:
192+ ViewDesc.Format = DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
193+ break ;
161194 }
162195
163196 CHK_DX (HW.pDevice ->CreateDepthStencilView (pSurface, &ViewDesc, &pZRT));
0 commit comments