@@ -897,12 +897,12 @@ void RenderDeviceGLImpl::InitAdapterInfo()
897
897
void RenderDeviceGLImpl::FlagSupportedTexFormats ()
898
898
{
899
899
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 };
901
901
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+
906
906
907
907
#define FLAG_FORMAT (Fmt, IsSupported ) \
908
908
m_TextureFormatsInfo[Fmt].Supported = IsSupported
@@ -911,109 +911,109 @@ void RenderDeviceGLImpl::FlagSupportedTexFormats()
911
911
// Note that GLES2.0 does not specify any required formats
912
912
913
913
// 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
1010
1010
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);
1017
1017
// clang-format on
1018
1018
1019
1019
#ifdef DILIGENT_DEBUG
0 commit comments