@@ -897,12 +897,12 @@ void RenderDeviceGLImpl::InitAdapterInfo()
897897void RenderDeviceGLImpl::FlagSupportedTexFormats ()
898898{
899899 const auto & DeviceInfo = GetDeviceInfo ();
900- bool bGL33OrAbove = DeviceInfo.Type == RENDER_DEVICE_TYPE_GL && DeviceInfo.APIVersion >= Version{4 , 3 };
900+ const auto bGL33OrAbove = DeviceInfo.Type == RENDER_DEVICE_TYPE_GL && DeviceInfo.APIVersion >= Version{3 , 3 };
901901
902- bool bRGTC = CheckExtension (" GL_ARB_texture_compression_rgtc" );
903- bool bBPTC = CheckExtension (" GL_ARB_texture_compression_bptc" );
904- bool bS3TC = CheckExtension (" GL_EXT_texture_compression_s3tc" );
905- bool bTexNorm16 = CheckExtension (" GL_EXT_texture_norm16" ); // Only for ES3.1+
902+ const bool bRGTC = CheckExtension (" GL_ARB_texture_compression_rgtc" );
903+ const bool bBPTC = CheckExtension (" GL_ARB_texture_compression_bptc" );
904+ const bool bS3TC = CheckExtension (" GL_EXT_texture_compression_s3tc" );
905+ const bool bTexNorm16 = CheckExtension (" GL_EXT_texture_norm16" ); // Only for ES3.1+
906906
907907#define FLAG_FORMAT (Fmt, IsSupported ) \
908908 m_TextureFormatsInfo[Fmt].Supported = IsSupported
@@ -911,109 +911,109 @@ void RenderDeviceGLImpl::FlagSupportedTexFormats()
911911 // Note that GLES2.0 does not specify any required formats
912912
913913 // clang-format off
914- FLAG_FORMAT (TEX_FORMAT_RGBA32_TYPELESS, true );
915- FLAG_FORMAT (TEX_FORMAT_RGBA32_FLOAT, true );
916- FLAG_FORMAT (TEX_FORMAT_RGBA32_UINT, true );
917- FLAG_FORMAT (TEX_FORMAT_RGBA32_SINT, true );
918- FLAG_FORMAT (TEX_FORMAT_RGB32_TYPELESS, true );
919- FLAG_FORMAT (TEX_FORMAT_RGB32_FLOAT, true );
920- FLAG_FORMAT (TEX_FORMAT_RGB32_UINT, true );
921- FLAG_FORMAT (TEX_FORMAT_RGB32_SINT, true );
922- FLAG_FORMAT (TEX_FORMAT_RGBA16_TYPELESS, true );
923- FLAG_FORMAT (TEX_FORMAT_RGBA16_FLOAT, true );
924- FLAG_FORMAT (TEX_FORMAT_RGBA16_UNORM, bGL33OrAbove || bTexNorm16 );
925- FLAG_FORMAT (TEX_FORMAT_RGBA16_UINT, true );
926- FLAG_FORMAT (TEX_FORMAT_RGBA16_SNORM, bGL33OrAbove || bTexNorm16 );
927- FLAG_FORMAT (TEX_FORMAT_RGBA16_SINT, true );
928- FLAG_FORMAT (TEX_FORMAT_RG32_TYPELESS, true );
929- FLAG_FORMAT (TEX_FORMAT_RG32_FLOAT, true );
930- FLAG_FORMAT (TEX_FORMAT_RG32_UINT, true );
931- FLAG_FORMAT (TEX_FORMAT_RG32_SINT, true );
932- FLAG_FORMAT (TEX_FORMAT_R32G8X24_TYPELESS, true );
933- FLAG_FORMAT (TEX_FORMAT_D32_FLOAT_S8X24_UINT, true );
934- FLAG_FORMAT (TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS, true );
935- FLAG_FORMAT (TEX_FORMAT_X32_TYPELESS_G8X24_UINT, false );
936- FLAG_FORMAT (TEX_FORMAT_RGB10A2_TYPELESS, true );
937- FLAG_FORMAT (TEX_FORMAT_RGB10A2_UNORM, true );
938- FLAG_FORMAT (TEX_FORMAT_RGB10A2_UINT, true );
939- FLAG_FORMAT (TEX_FORMAT_R11G11B10_FLOAT, true );
940- FLAG_FORMAT (TEX_FORMAT_RGBA8_TYPELESS, true );
941- FLAG_FORMAT (TEX_FORMAT_RGBA8_UNORM, true );
942- FLAG_FORMAT (TEX_FORMAT_RGBA8_UNORM_SRGB, true );
943- FLAG_FORMAT (TEX_FORMAT_RGBA8_UINT, true );
944- FLAG_FORMAT (TEX_FORMAT_RGBA8_SNORM, true );
945- FLAG_FORMAT (TEX_FORMAT_RGBA8_SINT, true );
946- FLAG_FORMAT (TEX_FORMAT_RG16_TYPELESS, true );
947- FLAG_FORMAT (TEX_FORMAT_RG16_FLOAT, true );
948- FLAG_FORMAT (TEX_FORMAT_RG16_UNORM, bGL33OrAbove || bTexNorm16 );
949- FLAG_FORMAT (TEX_FORMAT_RG16_UINT, true );
950- FLAG_FORMAT (TEX_FORMAT_RG16_SNORM, bGL33OrAbove || bTexNorm16 );
951- FLAG_FORMAT (TEX_FORMAT_RG16_SINT, true );
952- FLAG_FORMAT (TEX_FORMAT_R32_TYPELESS, true );
953- FLAG_FORMAT (TEX_FORMAT_D32_FLOAT, true );
954- FLAG_FORMAT (TEX_FORMAT_R32_FLOAT, true );
955- FLAG_FORMAT (TEX_FORMAT_R32_UINT, true );
956- FLAG_FORMAT (TEX_FORMAT_R32_SINT, true );
957- FLAG_FORMAT (TEX_FORMAT_R24G8_TYPELESS, true );
958- FLAG_FORMAT (TEX_FORMAT_D24_UNORM_S8_UINT, true );
959- FLAG_FORMAT (TEX_FORMAT_R24_UNORM_X8_TYPELESS, true );
960- FLAG_FORMAT (TEX_FORMAT_X24_TYPELESS_G8_UINT, false );
961- FLAG_FORMAT (TEX_FORMAT_RG8_TYPELESS, true );
962- FLAG_FORMAT (TEX_FORMAT_RG8_UNORM, true );
963- FLAG_FORMAT (TEX_FORMAT_RG8_UINT, true );
964- FLAG_FORMAT (TEX_FORMAT_RG8_SNORM, true );
965- FLAG_FORMAT (TEX_FORMAT_RG8_SINT, true );
966- FLAG_FORMAT (TEX_FORMAT_R16_TYPELESS, true );
967- FLAG_FORMAT (TEX_FORMAT_R16_FLOAT, true );
968- FLAG_FORMAT (TEX_FORMAT_D16_UNORM, true );
969- FLAG_FORMAT (TEX_FORMAT_R16_UNORM, bGL33OrAbove || bTexNorm16 );
970- FLAG_FORMAT (TEX_FORMAT_R16_UINT, true );
971- FLAG_FORMAT (TEX_FORMAT_R16_SNORM, bGL33OrAbove || bTexNorm16 );
972- FLAG_FORMAT (TEX_FORMAT_R16_SINT, true );
973- FLAG_FORMAT (TEX_FORMAT_R8_TYPELESS, true );
974- FLAG_FORMAT (TEX_FORMAT_R8_UNORM, true );
975- FLAG_FORMAT (TEX_FORMAT_R8_UINT, true );
976- FLAG_FORMAT (TEX_FORMAT_R8_SNORM, true );
977- FLAG_FORMAT (TEX_FORMAT_R8_SINT, true );
978- FLAG_FORMAT (TEX_FORMAT_A8_UNORM, false ); // Not supported in OpenGL
979- FLAG_FORMAT (TEX_FORMAT_R1_UNORM, false ); // Not supported in OpenGL
980- FLAG_FORMAT (TEX_FORMAT_RGB9E5_SHAREDEXP, true );
981- FLAG_FORMAT (TEX_FORMAT_RG8_B8G8_UNORM, false ); // Not supported in OpenGL
982- FLAG_FORMAT (TEX_FORMAT_G8R8_G8B8_UNORM, false ); // Not supported in OpenGL
983-
984- FLAG_FORMAT (TEX_FORMAT_BC1_TYPELESS, bS3TC );
985- FLAG_FORMAT (TEX_FORMAT_BC1_UNORM, bS3TC );
986- FLAG_FORMAT (TEX_FORMAT_BC1_UNORM_SRGB, bS3TC );
987- FLAG_FORMAT (TEX_FORMAT_BC2_TYPELESS, bS3TC );
988- FLAG_FORMAT (TEX_FORMAT_BC2_UNORM, bS3TC );
989- FLAG_FORMAT (TEX_FORMAT_BC2_UNORM_SRGB, bS3TC );
990- FLAG_FORMAT (TEX_FORMAT_BC3_TYPELESS, bS3TC );
991- FLAG_FORMAT (TEX_FORMAT_BC3_UNORM, bS3TC );
992- FLAG_FORMAT (TEX_FORMAT_BC3_UNORM_SRGB, bS3TC );
993-
994- FLAG_FORMAT (TEX_FORMAT_BC4_TYPELESS, bRGTC );
995- FLAG_FORMAT (TEX_FORMAT_BC4_UNORM, bRGTC );
996- FLAG_FORMAT (TEX_FORMAT_BC4_SNORM, bRGTC );
997- FLAG_FORMAT (TEX_FORMAT_BC5_TYPELESS, bRGTC );
998- FLAG_FORMAT (TEX_FORMAT_BC5_UNORM, bRGTC );
999- FLAG_FORMAT (TEX_FORMAT_BC5_SNORM, bRGTC );
1000-
1001- FLAG_FORMAT (TEX_FORMAT_B5G6R5_UNORM, false ); // Not supported in OpenGL
1002- FLAG_FORMAT (TEX_FORMAT_B5G5R5A1_UNORM, false ); // Not supported in OpenGL
1003- FLAG_FORMAT (TEX_FORMAT_BGRA8_UNORM, false ); // Not supported in OpenGL
1004- FLAG_FORMAT (TEX_FORMAT_BGRX8_UNORM, false ); // Not supported in OpenGL
1005- FLAG_FORMAT (TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM, false ); // Not supported in OpenGL
1006- FLAG_FORMAT (TEX_FORMAT_BGRA8_TYPELESS, false ); // Not supported in OpenGL
1007- FLAG_FORMAT (TEX_FORMAT_BGRA8_UNORM_SRGB, false ); // Not supported in OpenGL
1008- FLAG_FORMAT (TEX_FORMAT_BGRX8_TYPELESS, false ); // Not supported in OpenGL
1009- FLAG_FORMAT (TEX_FORMAT_BGRX8_UNORM_SRGB, false ); // Not supported in OpenGL
914+ FLAG_FORMAT (TEX_FORMAT_RGBA32_TYPELESS, true );
915+ FLAG_FORMAT (TEX_FORMAT_RGBA32_FLOAT, true );
916+ FLAG_FORMAT (TEX_FORMAT_RGBA32_UINT, true );
917+ FLAG_FORMAT (TEX_FORMAT_RGBA32_SINT, true );
918+ FLAG_FORMAT (TEX_FORMAT_RGB32_TYPELESS, true );
919+ FLAG_FORMAT (TEX_FORMAT_RGB32_FLOAT, true );
920+ FLAG_FORMAT (TEX_FORMAT_RGB32_UINT, true );
921+ FLAG_FORMAT (TEX_FORMAT_RGB32_SINT, true );
922+ FLAG_FORMAT (TEX_FORMAT_RGBA16_TYPELESS, true );
923+ FLAG_FORMAT (TEX_FORMAT_RGBA16_FLOAT, true );
924+ FLAG_FORMAT (TEX_FORMAT_RGBA16_UNORM, bGL33OrAbove || bTexNorm16);
925+ FLAG_FORMAT (TEX_FORMAT_RGBA16_UINT, true );
926+ FLAG_FORMAT (TEX_FORMAT_RGBA16_SNORM, bGL33OrAbove || bTexNorm16);
927+ FLAG_FORMAT (TEX_FORMAT_RGBA16_SINT, true );
928+ FLAG_FORMAT (TEX_FORMAT_RG32_TYPELESS, true );
929+ FLAG_FORMAT (TEX_FORMAT_RG32_FLOAT, true );
930+ FLAG_FORMAT (TEX_FORMAT_RG32_UINT, true );
931+ FLAG_FORMAT (TEX_FORMAT_RG32_SINT, true );
932+ FLAG_FORMAT (TEX_FORMAT_R32G8X24_TYPELESS, true );
933+ FLAG_FORMAT (TEX_FORMAT_D32_FLOAT_S8X24_UINT, true );
934+ FLAG_FORMAT (TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS, true );
935+ FLAG_FORMAT (TEX_FORMAT_X32_TYPELESS_G8X24_UINT, false );
936+ FLAG_FORMAT (TEX_FORMAT_RGB10A2_TYPELESS, true );
937+ FLAG_FORMAT (TEX_FORMAT_RGB10A2_UNORM, true );
938+ FLAG_FORMAT (TEX_FORMAT_RGB10A2_UINT, true );
939+ FLAG_FORMAT (TEX_FORMAT_R11G11B10_FLOAT, true );
940+ FLAG_FORMAT (TEX_FORMAT_RGBA8_TYPELESS, true );
941+ FLAG_FORMAT (TEX_FORMAT_RGBA8_UNORM, true );
942+ FLAG_FORMAT (TEX_FORMAT_RGBA8_UNORM_SRGB, true );
943+ FLAG_FORMAT (TEX_FORMAT_RGBA8_UINT, true );
944+ FLAG_FORMAT (TEX_FORMAT_RGBA8_SNORM, true );
945+ FLAG_FORMAT (TEX_FORMAT_RGBA8_SINT, true );
946+ FLAG_FORMAT (TEX_FORMAT_RG16_TYPELESS, true );
947+ FLAG_FORMAT (TEX_FORMAT_RG16_FLOAT, true );
948+ FLAG_FORMAT (TEX_FORMAT_RG16_UNORM, bGL33OrAbove || bTexNorm16);
949+ FLAG_FORMAT (TEX_FORMAT_RG16_UINT, true );
950+ FLAG_FORMAT (TEX_FORMAT_RG16_SNORM, bGL33OrAbove || bTexNorm16);
951+ FLAG_FORMAT (TEX_FORMAT_RG16_SINT, true );
952+ FLAG_FORMAT (TEX_FORMAT_R32_TYPELESS, true );
953+ FLAG_FORMAT (TEX_FORMAT_D32_FLOAT, true );
954+ FLAG_FORMAT (TEX_FORMAT_R32_FLOAT, true );
955+ FLAG_FORMAT (TEX_FORMAT_R32_UINT, true );
956+ FLAG_FORMAT (TEX_FORMAT_R32_SINT, true );
957+ FLAG_FORMAT (TEX_FORMAT_R24G8_TYPELESS, true );
958+ FLAG_FORMAT (TEX_FORMAT_D24_UNORM_S8_UINT, true );
959+ FLAG_FORMAT (TEX_FORMAT_R24_UNORM_X8_TYPELESS, true );
960+ FLAG_FORMAT (TEX_FORMAT_X24_TYPELESS_G8_UINT, false );
961+ FLAG_FORMAT (TEX_FORMAT_RG8_TYPELESS, true );
962+ FLAG_FORMAT (TEX_FORMAT_RG8_UNORM, true );
963+ FLAG_FORMAT (TEX_FORMAT_RG8_UINT, true );
964+ FLAG_FORMAT (TEX_FORMAT_RG8_SNORM, true );
965+ FLAG_FORMAT (TEX_FORMAT_RG8_SINT, true );
966+ FLAG_FORMAT (TEX_FORMAT_R16_TYPELESS, true );
967+ FLAG_FORMAT (TEX_FORMAT_R16_FLOAT, true );
968+ FLAG_FORMAT (TEX_FORMAT_D16_UNORM, true );
969+ FLAG_FORMAT (TEX_FORMAT_R16_UNORM, bGL33OrAbove || bTexNorm16);
970+ FLAG_FORMAT (TEX_FORMAT_R16_UINT, true );
971+ FLAG_FORMAT (TEX_FORMAT_R16_SNORM, bGL33OrAbove || bTexNorm16);
972+ FLAG_FORMAT (TEX_FORMAT_R16_SINT, true );
973+ FLAG_FORMAT (TEX_FORMAT_R8_TYPELESS, true );
974+ FLAG_FORMAT (TEX_FORMAT_R8_UNORM, true );
975+ FLAG_FORMAT (TEX_FORMAT_R8_UINT, true );
976+ FLAG_FORMAT (TEX_FORMAT_R8_SNORM, true );
977+ FLAG_FORMAT (TEX_FORMAT_R8_SINT, true );
978+ FLAG_FORMAT (TEX_FORMAT_A8_UNORM, false ); // Not supported in OpenGL
979+ FLAG_FORMAT (TEX_FORMAT_R1_UNORM, false ); // Not supported in OpenGL
980+ FLAG_FORMAT (TEX_FORMAT_RGB9E5_SHAREDEXP, true );
981+ FLAG_FORMAT (TEX_FORMAT_RG8_B8G8_UNORM, false ); // Not supported in OpenGL
982+ FLAG_FORMAT (TEX_FORMAT_G8R8_G8B8_UNORM, false ); // Not supported in OpenGL
983+
984+ FLAG_FORMAT (TEX_FORMAT_BC1_TYPELESS, bS3TC);
985+ FLAG_FORMAT (TEX_FORMAT_BC1_UNORM, bS3TC);
986+ FLAG_FORMAT (TEX_FORMAT_BC1_UNORM_SRGB, bS3TC);
987+ FLAG_FORMAT (TEX_FORMAT_BC2_TYPELESS, bS3TC);
988+ FLAG_FORMAT (TEX_FORMAT_BC2_UNORM, bS3TC);
989+ FLAG_FORMAT (TEX_FORMAT_BC2_UNORM_SRGB, bS3TC);
990+ FLAG_FORMAT (TEX_FORMAT_BC3_TYPELESS, bS3TC);
991+ FLAG_FORMAT (TEX_FORMAT_BC3_UNORM, bS3TC);
992+ FLAG_FORMAT (TEX_FORMAT_BC3_UNORM_SRGB, bS3TC);
993+
994+ FLAG_FORMAT (TEX_FORMAT_BC4_TYPELESS, bRGTC);
995+ FLAG_FORMAT (TEX_FORMAT_BC4_UNORM, bRGTC);
996+ FLAG_FORMAT (TEX_FORMAT_BC4_SNORM, bRGTC);
997+ FLAG_FORMAT (TEX_FORMAT_BC5_TYPELESS, bRGTC);
998+ FLAG_FORMAT (TEX_FORMAT_BC5_UNORM, bRGTC);
999+ FLAG_FORMAT (TEX_FORMAT_BC5_SNORM, bRGTC);
1000+
1001+ FLAG_FORMAT (TEX_FORMAT_B5G6R5_UNORM, false ); // Not supported in OpenGL
1002+ FLAG_FORMAT (TEX_FORMAT_B5G5R5A1_UNORM, false ); // Not supported in OpenGL
1003+ FLAG_FORMAT (TEX_FORMAT_BGRA8_UNORM, false ); // Not supported in OpenGL
1004+ FLAG_FORMAT (TEX_FORMAT_BGRX8_UNORM, false ); // Not supported in OpenGL
1005+ FLAG_FORMAT (TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM, false ); // Not supported in OpenGL
1006+ FLAG_FORMAT (TEX_FORMAT_BGRA8_TYPELESS, false ); // Not supported in OpenGL
1007+ FLAG_FORMAT (TEX_FORMAT_BGRA8_UNORM_SRGB, false ); // Not supported in OpenGL
1008+ FLAG_FORMAT (TEX_FORMAT_BGRX8_TYPELESS, false ); // Not supported in OpenGL
1009+ FLAG_FORMAT (TEX_FORMAT_BGRX8_UNORM_SRGB, false ); // Not supported in OpenGL
10101010
1011- FLAG_FORMAT (TEX_FORMAT_BC6H_TYPELESS, bBPTC );
1012- FLAG_FORMAT (TEX_FORMAT_BC6H_UF16, bBPTC );
1013- FLAG_FORMAT (TEX_FORMAT_BC6H_SF16, bBPTC );
1014- FLAG_FORMAT (TEX_FORMAT_BC7_TYPELESS, bBPTC );
1015- FLAG_FORMAT (TEX_FORMAT_BC7_UNORM, bBPTC );
1016- FLAG_FORMAT (TEX_FORMAT_BC7_UNORM_SRGB, bBPTC );
1011+ FLAG_FORMAT (TEX_FORMAT_BC6H_TYPELESS, bBPTC);
1012+ FLAG_FORMAT (TEX_FORMAT_BC6H_UF16, bBPTC);
1013+ FLAG_FORMAT (TEX_FORMAT_BC6H_SF16, bBPTC);
1014+ FLAG_FORMAT (TEX_FORMAT_BC7_TYPELESS, bBPTC);
1015+ FLAG_FORMAT (TEX_FORMAT_BC7_UNORM, bBPTC);
1016+ FLAG_FORMAT (TEX_FORMAT_BC7_UNORM_SRGB, bBPTC);
10171017 // clang-format on
10181018
10191019#ifdef DILIGENT_DEBUG
0 commit comments