MCPcopy Create free account
hub / github.com/baldurk/renderdoc / GetCompressedByteSize

Function GetCompressedByteSize

renderdoc/driver/gl/gl_resources.cpp:82–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80};
81
82size_t GetCompressedByteSize(GLsizei w, GLsizei h, GLsizei d, GLenum internalformat)
83{
84 if(!IsCompressedFormat(internalformat))
85 {
86 RDCERR("Not compressed format %s", ToStr(internalformat).c_str());
87 return GetByteSize(w, h, d, GetBaseFormat(internalformat), GetDataType(internalformat));
88 }
89
90 uint32_t astc[3] = {0, 0, 1u};
91
92 size_t numBlockAlignedTexels = size_t(AlignUp4(w)) * size_t(AlignUp4(h)) * size_t(d);
93
94 switch(internalformat)
95 {
96 // BC1
97 case eGL_COMPRESSED_RGB_S3TC_DXT1_EXT:
98 case eGL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
99 case eGL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
100 case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: return numBlockAlignedTexels / 2;
101 // BC2
102 case eGL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
103 case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: return numBlockAlignedTexels;
104 // BC3
105 case eGL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
106 case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: return numBlockAlignedTexels;
107 // BC4
108 case eGL_COMPRESSED_RED_RGTC1:
109 case eGL_COMPRESSED_SIGNED_RED_RGTC1: return numBlockAlignedTexels / 2;
110 // BC5
111 case eGL_COMPRESSED_RG_RGTC2:
112 case eGL_COMPRESSED_SIGNED_RG_RGTC2: return numBlockAlignedTexels;
113 // BC6
114 case eGL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB:
115 case eGL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB: return numBlockAlignedTexels;
116 // BC7
117 case eGL_COMPRESSED_RGBA_BPTC_UNORM_ARB:
118 case eGL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB: return numBlockAlignedTexels;
119 // ETC1
120 case eGL_ETC1_RGB8_OES:
121 // ETC2
122 case eGL_COMPRESSED_RGB8_ETC2:
123 case eGL_COMPRESSED_SRGB8_ETC2:
124 case eGL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
125 case eGL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: return numBlockAlignedTexels / 2;
126 // EAC
127 case eGL_COMPRESSED_RGBA8_ETC2_EAC:
128 case eGL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: return numBlockAlignedTexels;
129 case eGL_COMPRESSED_R11_EAC:
130 case eGL_COMPRESSED_SIGNED_R11_EAC: return numBlockAlignedTexels / 2;
131 case eGL_COMPRESSED_RG11_EAC:
132 case eGL_COMPRESSED_SIGNED_RG11_EAC: return numBlockAlignedTexels;
133 // ASTC
134 case eGL_COMPRESSED_RGBA_ASTC_4x4_KHR:
135 case eGL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
136 astc[0] = 4;
137 astc[1] = 4;
138 break;
139 case eGL_COMPRESSED_RGBA_ASTC_5x4_KHR:

Callers 13

CacheTextureMethod · 0.85
GetTextureDataMethod · 0.85
CreateProxyTextureMethod · 0.85
RenderTextureInternalMethod · 0.85
GetSize_InitialStateMethod · 0.85
Apply_InitialStateMethod · 0.85
CreateTextureImageMethod · 0.85
glCopyImageSubDataMethod · 0.85

Calls 8

IsCompressedFormatFunction · 0.85
ToStrFunction · 0.85
GetBaseFormatFunction · 0.85
GetDataTypeFunction · 0.85
AlignUp4Function · 0.85
GetByteSizeFunction · 0.70
AlignUpFunction · 0.50
c_strMethod · 0.45

Tested by

no test coverage detected