summaryrefslogtreecommitdiffstats
path: root/TextureLoader/src/KTXLoader.cpp
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-11-25 03:19:41 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-11-25 03:19:41 +0000
commit942fdb82bb026350f1a27856efbc231e89fcada6 (patch)
tree3769a22f6e52831d2383f99f328e393404c97e37 /TextureLoader/src/KTXLoader.cpp
parentclang-formatted NativeApp (diff)
downloadDiligentTools-942fdb82bb026350f1a27856efbc231e89fcada6.tar.gz
DiligentTools-942fdb82bb026350f1a27856efbc231e89fcada6.zip
clang-formatted TextureLoader project
Diffstat (limited to 'TextureLoader/src/KTXLoader.cpp')
-rw-r--r--TextureLoader/src/KTXLoader.cpp202
1 files changed, 102 insertions, 100 deletions
diff --git a/TextureLoader/src/KTXLoader.cpp b/TextureLoader/src/KTXLoader.cpp
index 9c70ac1..c358a6a 100644
--- a/TextureLoader/src/KTXLoader.cpp
+++ b/TextureLoader/src/KTXLoader.cpp
@@ -26,71 +26,71 @@
#include "GraphicsAccessories.h"
#include "Align.h"
-#define GL_RGBA32F 0x8814
-#define GL_RGBA32UI 0x8D70
-#define GL_RGBA32I 0x8D82
-#define GL_RGB32F 0x8815
-#define GL_RGB32UI 0x8D71
-#define GL_RGB32I 0x8D83
-#define GL_RGBA16F 0x881A
-#define GL_RGBA16 0x805B
-#define GL_RGBA16UI 0x8D76
-#define GL_RGBA16_SNORM 0x8F9B
-#define GL_RGBA16I 0x8D88
-#define GL_RG32F 0x8230
-#define GL_RG32UI 0x823C
-#define GL_RG32I 0x823B
-#define GL_DEPTH32F_STENCIL8 0x8CAD
-#define GL_RGB10_A2 0x8059
-#define GL_RGB10_A2UI 0x906F
-#define GL_R11F_G11F_B10F 0x8C3A
-#define GL_RGBA8 0x8058
-#define GL_RGBA8UI 0x8D7C
-#define GL_RGBA8_SNORM 0x8F97
-#define GL_RGBA8I 0x8D8E
-#define GL_RG16F 0x822F
-#define GL_RG16 0x822C
-#define GL_RG16UI 0x823A
-#define GL_RG16_SNORM 0x8F99
-#define GL_RG16I 0x8239
-#define GL_R32F 0x822E
-#define GL_DEPTH_COMPONENT32F 0x8CAC
-#define GL_R32UI 0x8236
-#define GL_R32I 0x8235
-#define GL_DEPTH24_STENCIL8 0x88F0
-#define GL_RG8 0x822B
-#define GL_RG8UI 0x8238
-#define GL_RG8_SNORM 0x8F95
-#define GL_RG8I 0x8237
-#define GL_R16F 0x822D
-#define GL_DEPTH_COMPONENT16 0x81A5
-#define GL_R16 0x822A
-#define GL_R16UI 0x8234
-#define GL_R16_SNORM 0x8F98
-#define GL_R16I 0x8233
-#define GL_R8 0x8229
-#define GL_R8UI 0x8232
-#define GL_R8_SNORM 0x8F94
-#define GL_R8I 0x8231
-#define GL_RGB9_E5 0x8C3D
+#define GL_RGBA32F 0x8814
+#define GL_RGBA32UI 0x8D70
+#define GL_RGBA32I 0x8D82
+#define GL_RGB32F 0x8815
+#define GL_RGB32UI 0x8D71
+#define GL_RGB32I 0x8D83
+#define GL_RGBA16F 0x881A
+#define GL_RGBA16 0x805B
+#define GL_RGBA16UI 0x8D76
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_RGBA16I 0x8D88
+#define GL_RG32F 0x8230
+#define GL_RG32UI 0x823C
+#define GL_RG32I 0x823B
+#define GL_DEPTH32F_STENCIL8 0x8CAD
+#define GL_RGB10_A2 0x8059
+#define GL_RGB10_A2UI 0x906F
+#define GL_R11F_G11F_B10F 0x8C3A
+#define GL_RGBA8 0x8058
+#define GL_RGBA8UI 0x8D7C
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_RGBA8I 0x8D8E
+#define GL_RG16F 0x822F
+#define GL_RG16 0x822C
+#define GL_RG16UI 0x823A
+#define GL_RG16_SNORM 0x8F99
+#define GL_RG16I 0x8239
+#define GL_R32F 0x822E
+#define GL_DEPTH_COMPONENT32F 0x8CAC
+#define GL_R32UI 0x8236
+#define GL_R32I 0x8235
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_RG8 0x822B
+#define GL_RG8UI 0x8238
+#define GL_RG8_SNORM 0x8F95
+#define GL_RG8I 0x8237
+#define GL_R16F 0x822D
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_R16 0x822A
+#define GL_R16UI 0x8234
+#define GL_R16_SNORM 0x8F98
+#define GL_R16I 0x8233
+#define GL_R8 0x8229
+#define GL_R8UI 0x8232
+#define GL_R8_SNORM 0x8F94
+#define GL_R8I 0x8231
+#define GL_RGB9_E5 0x8C3D
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
-#define GL_COMPRESSED_RED_RGTC1 0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
-#define GL_COMPRESSED_RG_RGTC2 0x8DBD
-#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
-#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+#define GL_COMPRESSED_RED_RGTC1 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+#define GL_COMPRESSED_RG_RGTC2 0x8DBD
+#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
+#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
namespace Diligent
{
@@ -102,6 +102,7 @@ TEXTURE_FORMAT FindDiligentTextureFormat(std::uint32_t GLInternalFormat)
{
switch (GLInternalFormat)
{
+ // clang-format off
case GL_RGBA32F: return TEX_FORMAT_RGBA32_FLOAT;
case GL_RGBA32UI: return TEX_FORMAT_RGBA32_UINT;
case GL_RGBA32I: return TEX_FORMAT_RGBA32_SINT;
@@ -178,6 +179,7 @@ TEXTURE_FORMAT FindDiligentTextureFormat(std::uint32_t GLInternalFormat)
case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: return TEX_FORMAT_BC6H_SF16;
case GL_COMPRESSED_RGBA_BPTC_UNORM: return TEX_FORMAT_BC7_UNORM;
case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: return TEX_FORMAT_BC7_UNORM_SRGB;
+ // clang-format on
default:
UNSUPPORTED("Unsupported internal format");
return TEX_FORMAT_UNKNOWN;
@@ -189,82 +191,82 @@ TEXTURE_FORMAT FindDiligentTextureFormat(std::uint32_t GLInternalFormat)
struct KTX10Header
{
- std::uint32_t Endianness;
- std::uint32_t GLType;
- std::uint32_t GLTypeSize;
- std::uint32_t GLFormat;
- std::uint32_t GLInternalFormat;
- std::uint32_t GLBaseInternalFormat;
- std::uint32_t Width;
- std::uint32_t Height;
- std::uint32_t Depth;
- std::uint32_t NumberOfArrayElements;
- std::uint32_t NumberOfFaces;
- std::uint32_t NumberOfMipmapLevels;
- std::uint32_t BytesOfKeyValueData;
+ std::uint32_t Endianness;
+ std::uint32_t GLType;
+ std::uint32_t GLTypeSize;
+ std::uint32_t GLFormat;
+ std::uint32_t GLInternalFormat;
+ std::uint32_t GLBaseInternalFormat;
+ std::uint32_t Width;
+ std::uint32_t Height;
+ std::uint32_t Depth;
+ std::uint32_t NumberOfArrayElements;
+ std::uint32_t NumberOfFaces;
+ std::uint32_t NumberOfMipmapLevels;
+ std::uint32_t BytesOfKeyValueData;
};
-void CreateTextureFromKTX( IDataBlob* pKTXData,
- const TextureLoadInfo& TexLoadInfo,
- IRenderDevice* pDevice,
- ITexture** ppTexture )
+void CreateTextureFromKTX(IDataBlob* pKTXData,
+ const TextureLoadInfo& TexLoadInfo,
+ IRenderDevice* pDevice,
+ ITexture** ppTexture)
{
static constexpr Uint8 KTX10FileIdentifier[12] = {0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A};
- const Uint8* pData = reinterpret_cast<const Uint8*>(pKTXData->GetDataPtr());
- const auto DataSize = pKTXData->GetSize();
+ const Uint8* pData = reinterpret_cast<const Uint8*>(pKTXData->GetDataPtr());
+ const auto DataSize = pKTXData->GetSize();
if (DataSize >= 12 && memcmp(pData, KTX10FileIdentifier, sizeof(KTX10FileIdentifier)) == 0)
{
pData += sizeof(KTX10FileIdentifier);
- const KTX10Header& Header = *reinterpret_cast<KTX10Header const*>(pData);
- pData += sizeof(KTX10Header);
- // Skip key value data
- pData += Header.BytesOfKeyValueData;
+ const KTX10Header& Header = *reinterpret_cast<KTX10Header const*>(pData);
+ pData += sizeof(KTX10Header);
+ // Skip key value data
+ pData += Header.BytesOfKeyValueData;
TextureDesc TexDesc;
- TexDesc.Name = TexLoadInfo.Name;
- TexDesc.Format = FindDiligentTextureFormat(Header.GLInternalFormat);
+ TexDesc.Name = TexLoadInfo.Name;
+ TexDesc.Format = FindDiligentTextureFormat(Header.GLInternalFormat);
if (TexDesc.Format == TEX_FORMAT_UNKNOWN)
LOG_ERROR_AND_THROW("Failed to find appropriate Diligent format for internal gl format ", Header.GLInternalFormat);
TexDesc.Width = Header.Width;
TexDesc.Height = std::max(Header.Height, 1u);
- TexDesc.Depth = std::max(Header.Depth, 1u);
+ TexDesc.Depth = std::max(Header.Depth, 1u);
TexDesc.MipLevels = std::max(Header.NumberOfMipmapLevels, 1u);
TexDesc.BindFlags = TexLoadInfo.BindFlags;
TexDesc.Usage = TexLoadInfo.Usage;
- auto NumFaces = std::max(Header.NumberOfFaces, 1u);
+ auto NumFaces = std::max(Header.NumberOfFaces, 1u);
if (NumFaces == 6)
{
TexDesc.ArraySize = std::max(Header.NumberOfArrayElements, 1u) * NumFaces;
- TexDesc.Type = TexDesc.ArraySize > 6 ? RESOURCE_DIM_TEX_CUBE_ARRAY : RESOURCE_DIM_TEX_CUBE;
+ TexDesc.Type = TexDesc.ArraySize > 6 ? RESOURCE_DIM_TEX_CUBE_ARRAY : RESOURCE_DIM_TEX_CUBE;
}
else
{
if (TexDesc.Depth > 1)
{
TexDesc.ArraySize = 1;
- TexDesc.Type = RESOURCE_DIM_TEX_3D;
+ TexDesc.Type = RESOURCE_DIM_TEX_3D;
}
else
{
TexDesc.ArraySize = std::max(Header.NumberOfArrayElements, 1u);
- TexDesc.Type = TexDesc.ArraySize > 1 ? RESOURCE_DIM_TEX_2D_ARRAY : RESOURCE_DIM_TEX_2D;
+ TexDesc.Type = TexDesc.ArraySize > 1 ? RESOURCE_DIM_TEX_2D_ARRAY : RESOURCE_DIM_TEX_2D;
}
}
- auto ArraySize = (TexDesc.Type != RESOURCE_DIM_TEX_3D ? TexDesc.ArraySize : 1);
+ auto ArraySize = (TexDesc.Type != RESOURCE_DIM_TEX_3D ? TexDesc.ArraySize : 1);
std::vector<TextureSubResData> SubresData(TexDesc.MipLevels * ArraySize);
- for (Uint32 mip = 0; mip < TexDesc.MipLevels; ++mip)
- {
- pData += sizeof(std::uint32_t);
+ for (Uint32 mip = 0; mip < TexDesc.MipLevels; ++mip)
+ {
+ pData += sizeof(std::uint32_t);
auto MipInfo = GetMipLevelProperties(TexDesc, mip);
- for (Uint32 layer = 0; layer < ArraySize; ++layer)
+ for (Uint32 layer = 0; layer < ArraySize; ++layer)
{
SubresData[mip + layer * TexDesc.MipLevels] =
TextureSubResData{pData, MipInfo.RowSize, MipInfo.DepthSliceSize};
pData += Align(MipInfo.MipSize, 4u);
}
- }
+ }
VERIFY(pData - reinterpret_cast<const Uint8*>(pKTXData->GetDataPtr()) == static_cast<ptrdiff_t>(DataSize), "Unexpected data size");
TextureData InitData(SubresData.data(), static_cast<Uint32>(SubresData.size()));
@@ -276,4 +278,4 @@ void CreateTextureFromKTX( IDataBlob* pKTXData,
}
}
-}
+} // namespace Diligent