From 2b2f90259af4ca9d5da63735d99755b2825fae56 Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Thu, 22 Feb 2018 00:17:49 -0800 Subject: [PATCH] texconv/diag/assemble updated with format name aliases like DXT3 and FP16 --- Texassemble/texassemble.cpp | 20 +++++++++++++++++--- Texconv/texconv.cpp | 30 +++++++++++++++++++++++++----- Texdiag/texdiag.cpp | 20 +++++++++++++++++--- 3 files changed, 59 insertions(+), 11 deletions(-) diff --git a/Texassemble/texassemble.cpp b/Texassemble/texassemble.cpp index 5d441d7..2191ce2 100644 --- a/Texassemble/texassemble.cpp +++ b/Texassemble/texassemble.cpp @@ -220,6 +220,14 @@ const SValue g_pFormats [] = { nullptr, DXGI_FORMAT_UNKNOWN } }; +const SValue g_pFormatAliases [] = +{ + { L"FP16", DXGI_FORMAT_R16G16B16A16_FLOAT }, + { L"FP32", DXGI_FORMAT_R32G32B32A32_FLOAT }, + + { nullptr, DXGI_FORMAT_UNKNOWN } +}; + const SValue g_pFilters [] = { { L"POINT", TEX_FILTER_POINT }, @@ -518,6 +526,8 @@ namespace wprintf(L"\n : "); PrintList(13, g_pFormats); + wprintf(L" "); + PrintList(13, g_pFormatAliases); wprintf(L"\n : "); PrintList(13, g_pFilters); @@ -1016,11 +1026,15 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) break; case OPT_FORMAT: - format = (DXGI_FORMAT)LookupByName(pValue, g_pFormats); + format = static_cast(LookupByName(pValue, g_pFormats)); if (!format) { - wprintf(L"Invalid value specified with -f (%ls)\n", pValue); - return 1; + format = static_cast(LookupByName(pValue, g_pFormatAliases)); + if (!format) + { + wprintf(L"Invalid value specified with -f (%ls)\n", pValue); + return 1; + } } break; diff --git a/Texconv/texconv.cpp b/Texconv/texconv.cpp index 11f04fb..ac9fc17 100644 --- a/Texconv/texconv.cpp +++ b/Texconv/texconv.cpp @@ -280,6 +280,20 @@ const SValue g_pFormats[] = { nullptr, DXGI_FORMAT_UNKNOWN } }; +const SValue g_pFormatAliases[] = +{ + { L"DXT1", DXGI_FORMAT_BC1_UNORM }, + { L"DXT2", DXGI_FORMAT_BC2_UNORM }, + { L"DXT3", DXGI_FORMAT_BC2_UNORM }, + { L"DXT4", DXGI_FORMAT_BC3_UNORM }, + { L"DXT5", DXGI_FORMAT_BC3_UNORM }, + + { L"FP16", DXGI_FORMAT_R16G16B16A16_FLOAT }, + { L"FP32", DXGI_FORMAT_R32G32B32A32_FLOAT }, + + { nullptr, DXGI_FORMAT_UNKNOWN } +}; + const SValue g_pReadOnlyFormats[] = { DEFFMT(R32G32B32A32_TYPELESS), @@ -730,6 +744,8 @@ namespace wprintf(L"\n : "); PrintList(13, g_pFormats); + wprintf(L" "); + PrintList(13, g_pFormatAliases); wprintf(L"\n : "); PrintList(13, g_pFilters); @@ -1080,13 +1096,17 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) break; case OPT_FORMAT: - format = (DXGI_FORMAT)LookupByName(pValue, g_pFormats); + format = static_cast(LookupByName(pValue, g_pFormats)); if (!format) { - wprintf(L"Invalid value specified with -f (%ls)\n", pValue); - wprintf(L"\n"); - PrintUsage(); - return 1; + format = static_cast(LookupByName(pValue, g_pFormatAliases)); + if (!format) + { + wprintf(L"Invalid value specified with -f (%ls)\n", pValue); + wprintf(L"\n"); + PrintUsage(); + return 1; + } } break; diff --git a/Texdiag/texdiag.cpp b/Texdiag/texdiag.cpp index e5491a5..a4d5fd7 100644 --- a/Texdiag/texdiag.cpp +++ b/Texdiag/texdiag.cpp @@ -196,6 +196,14 @@ const SValue g_pFormats[] = { nullptr, DXGI_FORMAT_UNKNOWN } }; +const SValue g_pFormatAliases [] = +{ + { L"FP16", DXGI_FORMAT_R16G16B16A16_FLOAT }, + { L"FP32", DXGI_FORMAT_R32G32B32A32_FLOAT }, + + { nullptr, DXGI_FORMAT_UNKNOWN } +}; + const SValue g_pReadOnlyFormats[] = { DEFFMT(R32G32B32A32_TYPELESS), @@ -542,6 +550,8 @@ namespace wprintf(L"\n : "); PrintList(13, g_pFormats); + wprintf(L" "); + PrintList(13, g_pFormatAliases); wprintf(L"\n : "); PrintList(13, g_pFilters); @@ -3098,11 +3108,15 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) } else { - diffFormat = (DXGI_FORMAT)LookupByName(pValue, g_pFormats); + diffFormat = static_cast(LookupByName(pValue, g_pFormats)); if (!diffFormat) { - wprintf(L"Invalid value specified with -f (%ls)\n", pValue); - return 1; + diffFormat = static_cast(LookupByName(pValue, g_pFormatAliases)); + if (!diffFormat) + { + wprintf(L"Invalid value specified with -f (%ls)\n", pValue); + return 1; + } } } break;