Small refactoring changes.

This commit is contained in:
Pavel Krajcevski 2013-02-05 21:54:06 -05:00
parent 8ca5d7ac44
commit 8cad373e8e
3 changed files with 35 additions and 23 deletions

View File

@ -103,19 +103,19 @@ namespace BC7C
// Compress the image given as RGBA data to BC7 format. Width and Height are the dimensions of
// the image in pixels.
void CompressImageBC7(
const unsigned char *inBuf,
unsigned char *outBuf,
unsigned int width,
unsigned int height
);
void CompressImageBC7Stats(
const unsigned char *inBuf,
unsigned char *outBuf,
unsigned int width,
unsigned int height,
BlockStatManager &statManager
);
const unsigned char *inBuf,
unsigned char *outBuf,
unsigned int width,
unsigned int height
);
void CompressImageBC7Stats(
const unsigned char *inBuf,
unsigned char *outBuf,
unsigned int width,
unsigned int height,
BlockStatManager &statManager
);
#ifdef HAS_SSE_41
// Compress the image given as RGBA data to BC7 format using an algorithm optimized for SIMD

View File

@ -70,6 +70,7 @@
// Forward Declarations
class BitStream;
struct VisitedState;
const int kMaxEndpoints = 3;
static const int kPBits[4][2] = {
@ -187,9 +188,9 @@ private:
}
else {
return (
((maskSeed >> (24 + m_Attributes->colorChannelPrecision - 1) & 0xFF) |
((maskSeed >> (24 + m_Attributes->colorChannelPrecision - 1) & 0xFF) |
(maskSeed >> (16 + m_Attributes->colorChannelPrecision - 1) & 0xFF00) |
(maskSeed >> (8 + m_Attributes->colorChannelPrecision - 1) & 0xFF0000)) &
(maskSeed >> (8 + m_Attributes->colorChannelPrecision - 1) & 0xFF0000)) &
(0x00FFFFFF)
);
}
@ -213,13 +214,12 @@ private:
}
}
double OptimizeEndpointsForCluster(const RGBACluster &cluster, RGBAVector &p1, RGBAVector &p2, int *bestIndices, int &bestPbitCombo) const;
struct VisitedState {
RGBAVector p1;
RGBAVector p2;
int pBitCombo;
};
double OptimizeEndpointsForCluster(
const RGBACluster &cluster,
RGBAVector &p1, RGBAVector &p2,
int *bestIndices,
int &bestPbitCombo
) const;
void PickBestNeighboringEndpoints(
const RGBACluster &cluster,

View File

@ -517,7 +517,19 @@ static void ChangePointForDirWithPbitChange(RGBAVector &v, int dir, int oldPbit,
}
}
void BC7CompressionMode::PickBestNeighboringEndpoints(const RGBACluster &cluster, const RGBAVector &p1, const RGBAVector &p2, const int curPbitCombo, RGBAVector &np1, RGBAVector &np2, int &nPbitCombo, const VisitedState *visitedStates, int nVisited, float stepSz) const {
struct VisitedState {
RGBAVector p1;
RGBAVector p2;
int pBitCombo;
};
void BC7CompressionMode::PickBestNeighboringEndpoints(
const RGBACluster &cluster,
const RGBAVector &p1, const RGBAVector &p2, const int curPbitCombo,
RGBAVector &np1, RGBAVector &np2, int &nPbitCombo,
const VisitedState *visitedStates, int nVisited,
float stepSz
) const {
// !SPEED! There might be a way to make this faster since we're working
// with floating point values that are powers of two. We should be able