@@ -2815,6 +2815,180 @@ TEXTURE_FORMAT TypelessFormatToSRGB(TEXTURE_FORMAT Fmt)
28152815 }
28162816}
28172817
2818+ TEXTURE_FORMAT FormatToTypeless (TEXTURE_FORMAT Fmt)
2819+ {
2820+ switch (Fmt)
2821+ {
2822+ case TEX_FORMAT_RGBA32_TYPELESS:
2823+ case TEX_FORMAT_RGBA32_FLOAT:
2824+ case TEX_FORMAT_RGBA32_UINT:
2825+ case TEX_FORMAT_RGBA32_SINT:
2826+ return TEX_FORMAT_RGBA32_TYPELESS;
2827+
2828+ case TEX_FORMAT_RGB32_TYPELESS:
2829+ case TEX_FORMAT_RGB32_FLOAT:
2830+ case TEX_FORMAT_RGB32_UINT:
2831+ case TEX_FORMAT_RGB32_SINT:
2832+ return TEX_FORMAT_RGB32_TYPELESS;
2833+
2834+ case TEX_FORMAT_RGBA16_TYPELESS:
2835+ case TEX_FORMAT_RGBA16_FLOAT:
2836+ case TEX_FORMAT_RGBA16_UNORM:
2837+ case TEX_FORMAT_RGBA16_UINT:
2838+ case TEX_FORMAT_RGBA16_SNORM:
2839+ case TEX_FORMAT_RGBA16_SINT:
2840+ return TEX_FORMAT_RGBA16_TYPELESS;
2841+
2842+ case TEX_FORMAT_RG32_TYPELESS:
2843+ case TEX_FORMAT_RG32_FLOAT:
2844+ case TEX_FORMAT_RG32_UINT:
2845+ case TEX_FORMAT_RG32_SINT:
2846+ return TEX_FORMAT_RG32_TYPELESS;
2847+
2848+ case TEX_FORMAT_R32G8X24_TYPELESS:
2849+ case TEX_FORMAT_D32_FLOAT_S8X24_UINT:
2850+ case TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS:
2851+ case TEX_FORMAT_X32_TYPELESS_G8X24_UINT:
2852+ return TEX_FORMAT_R32G8X24_TYPELESS;
2853+
2854+ case TEX_FORMAT_RGB10A2_TYPELESS:
2855+ case TEX_FORMAT_RGB10A2_UNORM:
2856+ case TEX_FORMAT_RGB10A2_UINT:
2857+ return TEX_FORMAT_RGB10A2_TYPELESS;
2858+
2859+ case TEX_FORMAT_R11G11B10_FLOAT:
2860+ return Fmt;
2861+
2862+ case TEX_FORMAT_RGBA8_TYPELESS:
2863+ case TEX_FORMAT_RGBA8_UNORM:
2864+ case TEX_FORMAT_RGBA8_UNORM_SRGB:
2865+ case TEX_FORMAT_RGBA8_UINT:
2866+ case TEX_FORMAT_RGBA8_SNORM:
2867+ case TEX_FORMAT_RGBA8_SINT:
2868+ return TEX_FORMAT_RGBA8_TYPELESS;
2869+
2870+ case TEX_FORMAT_RG16_TYPELESS:
2871+ case TEX_FORMAT_RG16_FLOAT:
2872+ case TEX_FORMAT_RG16_UNORM:
2873+ case TEX_FORMAT_RG16_UINT:
2874+ case TEX_FORMAT_RG16_SNORM:
2875+ case TEX_FORMAT_RG16_SINT:
2876+ return TEX_FORMAT_RG16_TYPELESS;
2877+
2878+ case TEX_FORMAT_R32_TYPELESS:
2879+ case TEX_FORMAT_D32_FLOAT:
2880+ case TEX_FORMAT_R32_FLOAT:
2881+ case TEX_FORMAT_R32_UINT:
2882+ case TEX_FORMAT_R32_SINT:
2883+ return TEX_FORMAT_R32_TYPELESS;
2884+
2885+ case TEX_FORMAT_R24G8_TYPELESS:
2886+ case TEX_FORMAT_D24_UNORM_S8_UINT:
2887+ case TEX_FORMAT_R24_UNORM_X8_TYPELESS:
2888+ case TEX_FORMAT_X24_TYPELESS_G8_UINT:
2889+ return TEX_FORMAT_R24G8_TYPELESS;
2890+
2891+ case TEX_FORMAT_RG8_TYPELESS:
2892+ case TEX_FORMAT_RG8_UNORM:
2893+ case TEX_FORMAT_RG8_UINT:
2894+ case TEX_FORMAT_RG8_SNORM:
2895+ case TEX_FORMAT_RG8_SINT:
2896+ return TEX_FORMAT_RG8_TYPELESS;
2897+
2898+ case TEX_FORMAT_R16_TYPELESS:
2899+ case TEX_FORMAT_R16_FLOAT:
2900+ case TEX_FORMAT_D16_UNORM:
2901+ case TEX_FORMAT_R16_UNORM:
2902+ case TEX_FORMAT_R16_UINT:
2903+ case TEX_FORMAT_R16_SNORM:
2904+ case TEX_FORMAT_R16_SINT:
2905+ return TEX_FORMAT_R16_TYPELESS;
2906+
2907+ case TEX_FORMAT_R8_TYPELESS:
2908+ case TEX_FORMAT_R8_UNORM:
2909+ case TEX_FORMAT_R8_UINT:
2910+ case TEX_FORMAT_R8_SNORM:
2911+ case TEX_FORMAT_R8_SINT:
2912+ return TEX_FORMAT_R8_TYPELESS;
2913+
2914+ case TEX_FORMAT_A8_UNORM:
2915+ return Fmt;
2916+
2917+ case TEX_FORMAT_R1_UNORM:
2918+ return Fmt;
2919+
2920+ case TEX_FORMAT_RGB9E5_SHAREDEXP:
2921+ case TEX_FORMAT_RG8_B8G8_UNORM:
2922+ case TEX_FORMAT_G8R8_G8B8_UNORM:
2923+ return Fmt;
2924+
2925+ case TEX_FORMAT_BC1_TYPELESS:
2926+ case TEX_FORMAT_BC1_UNORM:
2927+ case TEX_FORMAT_BC1_UNORM_SRGB:
2928+ return TEX_FORMAT_BC1_TYPELESS;
2929+
2930+ case TEX_FORMAT_BC2_TYPELESS:
2931+ case TEX_FORMAT_BC2_UNORM:
2932+ case TEX_FORMAT_BC2_UNORM_SRGB:
2933+ return TEX_FORMAT_BC2_TYPELESS;
2934+
2935+ case TEX_FORMAT_BC3_TYPELESS:
2936+ case TEX_FORMAT_BC3_UNORM:
2937+ case TEX_FORMAT_BC3_UNORM_SRGB:
2938+ return TEX_FORMAT_BC3_TYPELESS;
2939+
2940+ case TEX_FORMAT_BC4_TYPELESS:
2941+ case TEX_FORMAT_BC4_UNORM:
2942+ case TEX_FORMAT_BC4_SNORM:
2943+ return TEX_FORMAT_BC4_TYPELESS;
2944+
2945+ case TEX_FORMAT_BC5_TYPELESS:
2946+ case TEX_FORMAT_BC5_UNORM:
2947+ case TEX_FORMAT_BC5_SNORM:
2948+ return TEX_FORMAT_BC5_TYPELESS;
2949+
2950+ case TEX_FORMAT_B5G6R5_UNORM:
2951+ case TEX_FORMAT_B5G5R5A1_UNORM:
2952+ return Fmt;
2953+
2954+ case TEX_FORMAT_BGRA8_TYPELESS:
2955+ case TEX_FORMAT_BGRA8_UNORM:
2956+ case TEX_FORMAT_BGRA8_UNORM_SRGB:
2957+ return TEX_FORMAT_BGRA8_TYPELESS;
2958+
2959+ case TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
2960+ return Fmt;
2961+
2962+ case TEX_FORMAT_BGRX8_TYPELESS:
2963+ case TEX_FORMAT_BGRX8_UNORM:
2964+ case TEX_FORMAT_BGRX8_UNORM_SRGB:
2965+ return TEX_FORMAT_BGRX8_TYPELESS;
2966+
2967+ case TEX_FORMAT_BC6H_TYPELESS:
2968+ case TEX_FORMAT_BC6H_UF16:
2969+ case TEX_FORMAT_BC6H_SF16:
2970+ return TEX_FORMAT_BC6H_TYPELESS;
2971+
2972+ case TEX_FORMAT_BC7_TYPELESS:
2973+ case TEX_FORMAT_BC7_UNORM:
2974+ case TEX_FORMAT_BC7_UNORM_SRGB:
2975+ return TEX_FORMAT_BC7_TYPELESS;
2976+
2977+ case TEX_FORMAT_ETC2_RGB8_UNORM:
2978+ case TEX_FORMAT_ETC2_RGB8_UNORM_SRGB:
2979+ case TEX_FORMAT_ETC2_RGB8A1_UNORM:
2980+ case TEX_FORMAT_ETC2_RGB8A1_UNORM_SRGB:
2981+ case TEX_FORMAT_ETC2_RGBA8_UNORM:
2982+ case TEX_FORMAT_ETC2_RGBA8_UNORM_SRGB:
2983+ return Fmt;
2984+
2985+ default :
2986+ UNEXPECTED (" Unexpected texture format" );
2987+ return TEX_FORMAT_UNKNOWN;
2988+ }
2989+ static_assert (TEX_FORMAT_NUM_FORMATS == 106 , " Please update the switch above to handle the new texture format, if needed" );
2990+ }
2991+
28182992bool IsSRGBFormat (TEXTURE_FORMAT Fmt)
28192993{
28202994 return (Fmt == TEX_FORMAT_RGBA8_UNORM_SRGB ||
0 commit comments