SCALERS: Get rid of MAKE_WRAPPER; make RGBtoYUV internal
svn-id: r48189
This commit is contained in:
parent
78b6bed8db
commit
a558e60fec
8 changed files with 93 additions and 43 deletions
|
@ -51,7 +51,14 @@ void PocketPCPortraitTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPt
|
||||||
dstPtr += dstPitch;
|
dstPtr += dstPitch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MAKE_WRAPPER(PocketPCPortrait)
|
|
||||||
|
void PocketPCPortrait(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
PocketPCPortraitTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
PocketPCPortraitTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
void PocketPCLandscapeAspect(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
void PocketPCLandscapeAspect(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
|
||||||
|
@ -157,7 +164,14 @@ void SmartphoneLandscapeTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *ds
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MAKE_WRAPPER(SmartphoneLandscape)
|
|
||||||
|
void SmartphoneLandscape(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
SmartphoneLandscapeTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
SmartphoneLandscapeTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -59,22 +59,27 @@ uint32 hqx_greenMask = 0;
|
||||||
uint32 hqx_redBlueMask = 0;
|
uint32 hqx_redBlueMask = 0;
|
||||||
uint32 hqx_green_redBlue_Mask = 0;
|
uint32 hqx_green_redBlue_Mask = 0;
|
||||||
|
|
||||||
// FIXME/TODO: The RGBtoYUV table sucks up 256 KB. This is bad.
|
/**
|
||||||
// In addition we never free it...
|
* 16bit RGB to YUV conversion table. This table is setup by InitLUT().
|
||||||
//
|
* Used by the hq scaler family.
|
||||||
// Note: a memory lookup table is *not* necessarily faster than computing
|
*
|
||||||
// these things on the fly, because of its size. The table together with
|
* FIXME/TODO: The RGBtoYUV table sucks up 256 KB. This is bad.
|
||||||
// the code, plus the input/output GFX data, may not fit in the cache on some
|
* In addition we never free it...
|
||||||
// systems, so main memory has to be accessed, which is about the worst thing
|
*
|
||||||
// that can happen to code which tries to be fast...
|
* Note: a memory lookup table is *not* necessarily faster than computing
|
||||||
//
|
* these things on the fly, because of its size. The table together with
|
||||||
// So we should think about ways to get this smaller / removed. Maybe we can
|
* the code, plus the input/output GFX data, may not fit in the cache on some
|
||||||
// use the same technique employed by our MPEG code to reduce the size of the
|
* systems, so main memory has to be accessed, which is about the worst thing
|
||||||
// lookup table at the cost of some additional computations?
|
* that can happen to code which tries to be fast...
|
||||||
//
|
*
|
||||||
// Of course, the above is largely a conjecture, and the actual speed
|
* So we should think about ways to get this smaller / removed. Maybe we can
|
||||||
// differences are likely to vary a lot between different architectures and
|
* use the same technique employed by our MPEG code to reduce the size of the
|
||||||
// CPUs.
|
* lookup table at the cost of some additional computations?
|
||||||
|
*
|
||||||
|
* Of course, the above is largely a conjecture, and the actual speed
|
||||||
|
* differences are likely to vary a lot between different architectures and
|
||||||
|
* CPUs.
|
||||||
|
*/
|
||||||
uint32 *RGBtoYUV = 0;
|
uint32 *RGBtoYUV = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,7 +327,13 @@ void Normal1o5xTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uin
|
||||||
height -= 2;
|
height -= 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MAKE_WRAPPER(Normal1o5x)
|
|
||||||
|
void Normal1o5x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
Normal1o5xTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
Normal1o5xTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Scale2x filter, also known as AdvMame2x.
|
* The Scale2x filter, also known as AdvMame2x.
|
||||||
|
@ -368,7 +379,13 @@ void TV2xTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 ds
|
||||||
q += nextlineDst << 1;
|
q += nextlineDst << 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MAKE_WRAPPER(TV2x)
|
|
||||||
|
void TV2x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
TV2xTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
TV2xTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
static inline uint16 DOT_16(const uint16 *dotmatrix, uint16 c, int j, int i) {
|
static inline uint16 DOT_16(const uint16 *dotmatrix, uint16 c, int j, int i) {
|
||||||
return c - ((c >> 2) & dotmatrix[((j & 3) << 2) + (i & 3)]);
|
return c - ((c >> 2) & dotmatrix[((j & 3) << 2) + (i & 3)]);
|
||||||
|
|
|
@ -153,7 +153,13 @@ void Super2xSaITemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MAKE_WRAPPER(Super2xSaI)
|
void Super2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
Super2xSaITemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
Super2xSaITemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
template<typename ColorMask>
|
template<typename ColorMask>
|
||||||
void SuperEagleTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
void SuperEagleTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
@ -258,7 +264,14 @@ void SuperEagleTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MAKE_WRAPPER(SuperEagle)
|
|
||||||
|
void SuperEagle(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
SuperEagleTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
SuperEagleTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
template<typename ColorMask>
|
template<typename ColorMask>
|
||||||
void _2xSaITemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
void _2xSaITemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
@ -394,4 +407,11 @@ void _2xSaITemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MAKE_WRAPPER(_2xSaI)
|
|
||||||
|
void _2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
_2xSaITemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
_2xSaITemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
|
@ -176,6 +176,7 @@ int stretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, i
|
||||||
}
|
}
|
||||||
|
|
||||||
int stretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY) {
|
int stretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY) {
|
||||||
|
extern int gBitFormat;
|
||||||
if (gBitFormat == 565)
|
if (gBitFormat == 565)
|
||||||
return stretch200To240<Graphics::ColorMasks<565> >(buf, pitch, width, height, srcX, srcY, origSrcY);
|
return stretch200To240<Graphics::ColorMasks<565> >(buf, pitch, width, height, srcX, srcY, origSrcY);
|
||||||
else // gBitFormat == 555
|
else // gBitFormat == 555
|
||||||
|
|
|
@ -63,7 +63,14 @@ void DownscaleAllByHalfTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dst
|
||||||
dstPtr += dstPitch;
|
dstPtr += dstPitch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MAKE_WRAPPER(DownscaleAllByHalf)
|
|
||||||
|
void DownscaleAllByHalf(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
DownscaleAllByHalfTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
DownscaleAllByHalfTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -93,4 +100,11 @@ void DownscaleHorizByHalfTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *d
|
||||||
dstPtr += dstPitch;
|
dstPtr += dstPitch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MAKE_WRAPPER(DownscaleHorizByHalf)
|
|
||||||
|
void DownscaleHorizByHalf(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
|
||||||
|
extern int gBitFormat;
|
||||||
|
if (gBitFormat == 565)
|
||||||
|
DownscaleHorizByHalfTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
else
|
||||||
|
DownscaleHorizByHalfTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height);
|
||||||
|
}
|
||||||
|
|
|
@ -96,6 +96,7 @@ void HQ2x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
|
||||||
#define PIXEL11_90 *(q+1+nextlineDst) = interpolate16_2_3_3<ColorMask >(w5, w6, w8);
|
#define PIXEL11_90 *(q+1+nextlineDst) = interpolate16_2_3_3<ColorMask >(w5, w6, w8);
|
||||||
#define PIXEL11_100 *(q+1+nextlineDst) = interpolate16_14_1_1<ColorMask >(w5, w6, w8);
|
#define PIXEL11_100 *(q+1+nextlineDst) = interpolate16_14_1_1<ColorMask >(w5, w6, w8);
|
||||||
|
|
||||||
|
extern "C" uint32 *RGBtoYUV;
|
||||||
#define YUV(x) RGBtoYUV[w ## x]
|
#define YUV(x) RGBtoYUV[w ## x]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,7 @@ void HQ3x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
|
||||||
#define PIXEL22_5 *(q+2+nextlineDst2) = interpolate16_1_1<ColorMask >(w6, w8);
|
#define PIXEL22_5 *(q+2+nextlineDst2) = interpolate16_1_1<ColorMask >(w6, w8);
|
||||||
#define PIXEL22_C *(q+2+nextlineDst2) = w5;
|
#define PIXEL22_C *(q+2+nextlineDst2) = w5;
|
||||||
|
|
||||||
|
extern "C" uint32 *RGBtoYUV;
|
||||||
#define YUV(x) RGBtoYUV[w ## x]
|
#define YUV(x) RGBtoYUV[w ## x]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -211,22 +211,4 @@ static inline bool diffYUV(int yuv1, int yuv2) {
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 16bit RGB to YUV conversion table. This table is setup by InitLUT().
|
|
||||||
* Used by the hq scaler family.
|
|
||||||
*/
|
|
||||||
extern "C" uint32 *RGBtoYUV;
|
|
||||||
|
|
||||||
/** Auxiliary macro to simplify creating those template function wrappers. */
|
|
||||||
#define MAKE_WRAPPER(FUNC) \
|
|
||||||
void FUNC(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { \
|
|
||||||
if (gBitFormat == 565) \
|
|
||||||
FUNC ## Template<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); \
|
|
||||||
else \
|
|
||||||
FUNC ## Template<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); \
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Specifies the currently active 16bit pixel format, 555 or 565. */
|
|
||||||
extern int gBitFormat;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue