This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
// File: crn_utils.cpp
|
||||
#include "crn_core.h"
|
||||
#include "crn_utils.h"
|
||||
|
||||
namespace crnlib
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
void endian_switch_words(uint16* p, uint num)
|
||||
{
|
||||
uint16* p_end = p + num;
|
||||
while (p != p_end)
|
||||
{
|
||||
uint16 k = *p;
|
||||
*p++ = swap16(k);
|
||||
}
|
||||
}
|
||||
|
||||
void endian_switch_dwords(uint32* p, uint num)
|
||||
{
|
||||
uint32* p_end = p + num;
|
||||
while (p != p_end)
|
||||
{
|
||||
uint32 k = *p;
|
||||
*p++ = swap32(k);
|
||||
}
|
||||
}
|
||||
|
||||
void copy_words(uint16* pDst, const uint16* pSrc, uint num, bool endian_switch)
|
||||
{
|
||||
if (!endian_switch)
|
||||
memcpy(pDst, pSrc, num << 1U);
|
||||
else
|
||||
{
|
||||
uint16* pDst_end = pDst + num;
|
||||
while (pDst != pDst_end)
|
||||
*pDst++ = swap16(*pSrc++);
|
||||
}
|
||||
}
|
||||
|
||||
uint compute_max_mips(uint width, uint height)
|
||||
{
|
||||
if ((width | height) == 0)
|
||||
return 0;
|
||||
|
||||
uint num_mips = 1;
|
||||
|
||||
while ((width > 1U) || (height > 1U))
|
||||
{
|
||||
width >>= 1U;
|
||||
height >>= 1U;
|
||||
num_mips++;
|
||||
}
|
||||
|
||||
return num_mips;
|
||||
}
|
||||
|
||||
} // namespace utils
|
||||
|
||||
} // namespace crnlib
|
||||
Reference in New Issue
Block a user