Skip to content

Commit e0457ac

Browse files
authored
Force non-WIC paths for FP32->FP16 conversions (#99)
1 parent 3771e6c commit e0457ac

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

DirectXTex/DirectXTexConvert.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4301,6 +4301,7 @@ namespace
43014301
return false;
43024302
}
43034303

4304+
// Check for special cases
43044305
#if defined(_XBOX_ONE) && defined(_TITLE)
43054306
if (sformat == DXGI_FORMAT_R16G16B16A16_FLOAT
43064307
|| sformat == DXGI_FORMAT_R16_FLOAT
@@ -4312,7 +4313,30 @@ namespace
43124313
}
43134314
#endif
43144315

4315-
// Check for special cases
4316+
switch (sformat)
4317+
{
4318+
case DXGI_FORMAT_R32G32B32A32_FLOAT:
4319+
case DXGI_FORMAT_R32G32B32_FLOAT:
4320+
case DXGI_FORMAT_R32G32_FLOAT:
4321+
case DXGI_FORMAT_R32_FLOAT:
4322+
case DXGI_FORMAT_D32_FLOAT:
4323+
switch (tformat)
4324+
{
4325+
case DXGI_FORMAT_R16G16B16A16_FLOAT:
4326+
case DXGI_FORMAT_R16G16_FLOAT:
4327+
case DXGI_FORMAT_R16_FLOAT:
4328+
// WIC conversions for FP32->FP16 can result in NaN values instead of clamping for min/max value
4329+
return false;
4330+
4331+
default:
4332+
break;
4333+
}
4334+
break;
4335+
4336+
default:
4337+
break;
4338+
}
4339+
43164340
switch (sformat)
43174341
{
43184342
case DXGI_FORMAT_R32G32B32A32_FLOAT:

0 commit comments

Comments
 (0)