📄 mqmacros.blt
字号:
ulCount = ulDWords; \
while ( ulCount ) \
{ \
ulCount--; \
ulRData = *pulData++; \
LOOKUP_32BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
pSrcBits += lSrcStride; \
} \
while( ulExtras ) \
{ \
ulExtras--; \
geREG(SRC_IMAGE_DATA, 0UL); \
}
#endif //CHECK_SRCFIFO
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Really Packed Src FIFO $$$$$$$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO
#define MACRO_PUMP_REALLY_PACKED_SRCFIFO(pulSrc, ulDWordsTotal, ulExtras) \
while( ulDWordsTotal >= SRC_FIFO_MAX_DWORDS ) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for( LONG i = 0UL; i < SRC_FIFO_MAX_DWORDS; i++ ) \
geREG(SRC_IMAGE_DATA, *pulSrc++); \
ulDWordsTotal -= SRC_FIFO_MAX_DWORDS; \
} \
if ( ulDWordsTotal + ulExtras ) \
{ \
geWAITSRCFIFO( ulDWordsTotal + ulExtras ); \
while ( ulDWordsTotal-- ) \
geREG(SRC_IMAGE_DATA, *pulSrc++); \
while ( ulExtras-- ) \
{ \
geREG(SRC_IMAGE_DATA, 0UL); \
} \
}
#else //CHECK_SRCFIFO
#define MACRO_PUMP_REALLY_PACKED_SRCFIFO(pulSrc, ulDWordsTotal, ulExtras) \
while( ulDWordsTotal-- ) \
geREG(SRC_IMAGE_DATA, *pulSrc++); \
while ( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#endif //CHECK_SRCFIFO
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO LKUP 2BPP $$$$$$$$$$$$$$$$$$$$$
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP2_8BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PUCHAR pubData; \
ULONG ulData, i;\
while( height-- ) \
{ \
pubData = (PUCHAR)pSrcBits; \
for ( i = 0; i < ulDWords; i++ ) \
{ \
ulData = (pLookup[(*pubData >> 6) & 0x03UL]) \
| (pLookup[(*pubData >> 4) & 0x03UL] << 8) \
| (pLookup[(*pubData >> 2) & 0x03UL] << 16) \
| (pLookup[ *pubData & 0x03UL] << 24); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
pSrcBits += lSrcStride; \
pubData++; \
} \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP2_16BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PUCHAR pubData; \
ULONG ulData, i; \
while( height-- ) \
{ \
pubData = (PUCHAR)pSrcBits; \
for (i = 0; 0 < ulDWords; pubData++) \
{ \
for (int j = 6; j >= 0 && i < ulDWords; j -= 4) \
{ \
ulData = (pLookup[(*pubData >> j) & 0x03UL]) \
| (pLookup[(*pubData >> (j-2)) & 0x03UL] << 16); \
geREG(SRC_IMAGE_DATA, ulData); \
i++; \
} \
} \
pSrcBits += lSrcStride; \
}
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP2_32BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PUCHAR pubData; \
ULONG i; \
while( height-- ) \
{ \
pubData = (PUCHAR)pSrcBits; \
for ( i = 0; i < ulDWords; pubData++) \
{ \
for (int j = 6; j >= 0 && i < ulDWords; j -= 2) \
{ \
geREG(SRC_IMAGE_DATA, pLookup[(*pubData >> j) & 0x03UL]); \
i++; \
} \
} \
pSrcBits += lSrcStride; \
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO LKUP 4BPP $$$$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_8BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG ulData, ulRData, ulCount; \
ULONG i, j, k; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
j = ulDWords; \
while (j >= SRC_FIFO_MAX_DWORDS) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for (i=0; i < SRC_FIFO_MAX_DWORDS; i+=2) \
{ \
ulRData = *pulData++; \
for (k=0; k < 32; k+=16) \
{ \
ulRData >>= k; \
LOOKUP4_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
j -= SRC_FIFO_MAX_DWORDS; \
} \
geWAITSRCFIFO(j); \
ulCount = j >> 1; \
while (ulCount) \
{ \
ulRData = *pulData++; \
for (k=0; k < 32; k+=16) \
{ \
ulRData >>= k; \
LOOKUP4_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
ulCount--; \
} \
if (j & 0x01UL) \
{ \
ulRData = *pulData; \
LOOKUP4_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
pSrcBits += lSrcStride; \
}
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_16BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG ulData, ulRData, ulRByte, ulMax, ulCount, ulNByte, i, j, k; \
if (ulOffset) \
{ \
if ((0x04UL - ulOffset) <= ulDWords) \
{ \
ulMax = 0x20UL; \
ulCount = ulDWords + ulOffset - 0x04UL; \
} \
else \
{ \
ulMax = (ulDWords + ulOffset) << 3; \
ulCount = 0UL; \
} \
ulOffset <<= 3; \
} \
else \
ulCount = ulDWords; \
ulNByte = (ulCount & 0x03UL) << 3; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
if (ulOffset) \
{ \
ulRData = *pulData++; \
geWAITSRCFIFO(4); \
for (i=ulOffset; i < ulMax; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
j = ulCount; \
while (j >= SRC_FIFO_MAX_DWORDS) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for (k = 0; k < SRC_FIFO_MAX_DWORDS; k+=4) \
{ \
ulRData = *pulData++; \
for (i=0; i < 32; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
j -= SRC_FIFO_MAX_DWORDS; \
} \
geWAITSRCFIFO(j); \
if (j >>= 2) \
{ \
for (k = 0; k < j; k++) \
{ \
ulRData = *pulData++; \
for (i=0; i < 32; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
} \
if (ulNByte) \
{ \
ulRData = *pulData; \
for (i=0; i < ulNByte; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
pSrcBits += lSrcStride; \
}
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_32BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG i,j,k,ulRData,ulRByte,ulCount,ulBCnt,ulNCnt,ulMax; \
if (ulOffset) \
{ \
ulOffset <<= 1; \
if ((0x08UL - ulOffset) <= ulDWords) \
{ \
ulMax = 0x20UL; \
ulCount = ulDWords + ulOffset - 0x08UL; \
} \
else \
{ \
ulMax = (ulDWords + ulOffset) << 2; \
ulCount = 0UL; \
} \
ulOffset <<= 2; \
} \
else \
ulCount = ulDWords; \
ulBCnt = (ulCount & 0x07UL) >> 1; \
ulNCnt = ulCount & 0x01UL; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
if (ulOffset) \
{ \
ulRData = *pulData++; \
geWAITSRCFIFO(4); \
for (i=ulOffset; i < ulMax; i+=8) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_32BPP(ulRByte,pLookup); \
} \
} \
j = ulCount; \
while (j >= SRC_FIFO_MAX_DWORDS) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for (k = 0; k < SRC_FIFO_MAX_DWORDS; k+=8) \
{ \
ulRData = *pulData++; \
for (i=0; i < 32; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_32BPP(ulRByte, pLookup); \
} \
} \
j -= SRC_FIFO_MAX_DWORDS; \
} \
geWAITSRCFIFO(j); \
if (j >>= 3) \
{ \
for (k = 0; k < j; k++) \
{ \
ulRData = *pulData++; \
for (i=0; i < 32; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_32BPP(ulRByte, pLookup); \
} \
} \
} \
if (ulBCnt || ulNCnt) \
{ \
ulRData = *pulData; \
for (k=0;k < ulBCnt;k++) \
{ \
LOOKUP4_32BPP(ulRData,pLookup); \
ulRData >>= 8; \
} \
if (ulNCnt) \
{ \
geREG(SRC_IMAGE_DATA, pLookup[ulRData & 0x0FUL]); \
} \
} \
pSrcBits += lSrcStride; \
}
#else /* CHECK_SRCFIFO DISABLED */
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_8BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG ulData,ulCount,ulRData,i,j; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
ulCount = ulDWords >> 1; \
for (i=0; i < ulCount; i++ ) \
{ \
ulRData = *pulData++; \
for (j=0; j < 32; j+=16) \
{ \
ulRData >>= j; \
LOOKUP4_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
if (ulDWords & 0x01UL) \
{ \
ulRData = *pulData; \
LOOKUP4_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
pSrcBits += lSrcStride; \
}
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_16BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG ulData, ulRData, ulMax, ulRByte, ulCount, ulNByte, i, j; \
if (ulOffset) \
{ \
if ((0x04UL - ulOffset) <= ulDWords) \
{ \
ulMax = 0x20UL; \
ulCount = ulDWords + ulOffset - 0x04UL; \
} \
else \
{ \
ulMax = (ulDWords + ulOffset) << 3; \
ulCount = 0UL; \
} \
ulOffset <<= 3; \
} \
else \
ulCount = ulDWords; \
ulNByte = (ulCount & 0x03UL) << 3; \
ulCount >>= 2; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
if (ulOffset) \
{ \
ulRData = *pulData++; \
for (i=ulOffset; i < ulMax; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
for (j=0; j < ulCount; j++) \
{ \
ulRData = *pulData++; \
for (i=0; i < 32; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
if (ulNByte) \
{ \
ulRData = *pulData++; \
for (i=0; i < ulNByte; i+=8 ) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
} \
pSrcBits += lSrcStride; \
}
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_32BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG i,j,ulRData,ulRByte,ulCount,ulBCnt,ulNCnt,ulMax; \
if (ulOffset) \
{ \
ulOffset <<= 1; \
if ((0x08UL - ulOffset) <= ulDWords) \
{ \
ulMax = 0x20UL; \
ulCount = ulDWords + ulOffset - 0x08UL; \
} \
else \
{ \
ulMax = (ulDWords + ulOffset) << 2; \
ulCount = 0UL; \
} \
ulOffset <<= 2; \
} \
else \
ulCount = ulDWords; \
ulBCnt = (ulCount & 0x07UL) >> 1; \
ulNCnt = ulCount & 0x01UL; \
ulCount >>= 3; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
if (ulOffset) \
{ \
ulRData = *pulData++; \
for (i=ulOffset; i < ulMax; i+=8) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_32BPP(ulRByte,pLookup); \
} \
} \
for (j=0;j < ulCount;j++) \
{ \
ulRData = *pulData++; \
for (i=0; i < 32; i+=8) \
{ \
ulRByte = ulRData >> i; \
LOOKUP4_32BPP(ulRByte,pLookup); \
} \
} \
if (ulBCnt || ulNCnt) \
{ \
ulRData = *pulData; \
for (j=0;j < ulBCnt;j++) \
{ \
LOOKUP4_32BPP(ulRData,pLookup); \
ulRData >>= 8; \
} \
if (ulNCnt) \
{ \
geREG(SRC_IMAGE_DATA, pLookup[ulRData & 0x0FUL]); \
} \
} \
pSrcBits += lSrcStride; \
}
#endif
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO LKUP 8BPP $$$$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8_16BPP(pSrcBits, ulDWords, ulExtras, \
ulOffset, lSrcStride, height, pLookup) \
PULONG pulData; \
ULONG ulRData1,ulRData2,ulRData3,ulData,ulCount,i,j,lsb=0,msb=0; \
lsb = ulOffset << 3; \
msb = 0x20UL - lsb; \
while( height-- ) \
{ \
pulData = (PULONG)pSrcBits; \
if (ulOffset) \
{ \
ulRData1 = *pulData++; \
} \
ulCount = ulDWords; \
while (ulCount >= SRC_FIFO_MAX_DWORDS) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for(j=0; j < SRC_FIFO_MAX_DWORDS; j+=2) \
{ \
if (ulOffset) \
{ \
ulRData2 = *pulData++; \
ulRData3 = (ulRData2 << msb)|(ulRData1 >> lsb); \
ulRData1 = ulRData2; \
} \
else \
{ \
ulRData3 = *pulData++; \
} \
for (i=0; i < 32; i+=16) \
{ \
ulData = (pLookup[(ulRData3 >> i) & 0xFFUL]) \
| ((pLookup[(ulRData3 >> (i+8)) & 0xFFUL]) << 16); \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -