📄 tex.c
字号:
IMG_UINT32 ui32Temp;
IMG_UINT8 ui8Invalue;
for (i=0; i<ui32Width; i++)
{
ui8Invalue = *pui8Src++;
ui32Temp = 0xFF000000 | (ui8Invalue << 16);
ui8Invalue = *pui8Src++;
ui32Temp |= (ui8Invalue << 8);
ui8Invalue = *pui8Src++;
ui32Temp |= ui8Invalue;
*pui32Dest++ = ui32Temp;
}
}
/***********************************************************************************
Function Name : ReadCopy8888to888Span
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from ARGB UB to RGB888 HW format
************************************************************************************/
static IMG_VOID ReadCopy8888to888Span(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT8 *pui8Src = (IMG_UINT8 *)psSpanInfo->pvInData;
IMG_UINT8 *pui8Dest = (IMG_UINT8 *)psSpanInfo->pvOutData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
pui8Dest[0] = pui8Src[0];
pui8Dest[1] = pui8Src[1];
pui8Dest[2] = pui8Src[2];
pui8Src = pui8Src + psSpanInfo->i32SrcGroupIncrement;
pui8Dest += 3;
}
}
/***********************************************************************************
Function Name : ReadCopy8888toLuminanceSpan
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from ARGB UB to L8 HW format
************************************************************************************/
static IMG_VOID ReadCopy8888toLuminanceSpan(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT32 ui32Temp;
IMG_UINT32 *pui32Src = (IMG_UINT32 *)psSpanInfo->pvInData;
IMG_UINT8 *pui8Dest = (IMG_UINT8 *)psSpanInfo->pvOutData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
ui32Temp = *pui32Src;
*pui8Dest = (IMG_UINT8)((ui32Temp >> 16) & 0xFF);
pui32Src = (IMG_UINT32 *)((IMG_UINT8 *)pui32Src + psSpanInfo->i32SrcGroupIncrement);
pui8Dest++;
}
}
/***********************************************************************************
Function Name : ReadCopy8888toLuminanceAlphaSpan
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from ARGB UB to LA UB HW format
************************************************************************************/
static IMG_VOID ReadCopy8888toLuminanceAlphaSpan(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT32 ui32Temp;
IMG_UINT16 ui16OutData;
IMG_UINT32 *pui32Src = (IMG_UINT32 *)psSpanInfo->pvInData;
IMG_UINT16 *pui16Dest = (IMG_UINT16 *)psSpanInfo->pvOutData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
ui32Temp = *pui32Src;
ui16OutData = (IMG_UINT16)(ui32Temp >> 16);
*pui16Dest = ui16OutData;
pui32Src = (IMG_UINT32 *)((IMG_UINT8 *)pui32Src + psSpanInfo->i32SrcGroupIncrement);
pui16Dest++;
}
}
/***********************************************************************************
Function Name : ReadCopy565toLuminanceSpan
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from RGB565 to L UB HW format
************************************************************************************/
static IMG_VOID ReadCopy565toLuminanceSpan(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT16 ui16Temp;
IMG_UINT8 ui8OutData;
IMG_UINT16 *pui16Src = (IMG_UINT16 *)psSpanInfo->pvInData;
IMG_UINT8 *pui8Dest = (IMG_UINT8 *)psSpanInfo->pvOutData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
ui16Temp = *pui16Src;
ui8OutData = ((ui16Temp >> 8) & 0xF8);
*pui8Dest = ui8OutData;
pui16Src = (IMG_UINT16 *)((IMG_UINT8 *)pui16Src + psSpanInfo->i32SrcGroupIncrement);
pui8Dest++;
}
}
/***********************************************************************************
Function Name : CopySpan888to565
Inputs : pui8Src, ui32Width
Outputs : pui16Dest
Returns : -
Description : Copies texture data from RGB888 to RGB565 HW format
************************************************************************************/
static IMG_VOID CopySpan888to565(IMG_UINT16 *pui16Dest, IMG_UINT8 *pui8Src, IMG_UINT32 ui32Width)
{
IMG_UINT32 i;
IMG_UINT16 ui16OutData;
IMG_UINT8 ui8Red, ui8Green, ui8Blue;
for (i=0; i<ui32Width; i++)
{
ui8Red = (*pui8Src++) >> 3;
ui8Green = (*pui8Src++) >> 2;
ui8Blue = (*pui8Src++) >> 3;
ui16OutData = (ui8Red << 11) | (ui8Green << 5) | ui8Blue;
*pui16Dest++ = ui16OutData;
}
}
/***********************************************************************************
Function Name : CopySpan8888to4444
Inputs : pui8Src, ui32Width
Outputs : pui16Dest
Returns : -
Description : Copies texture data from RGBA8888 to ARGB4444 HW format
************************************************************************************/
static IMG_VOID CopySpan8888to4444(IMG_UINT16 *pui16Dest, IMG_UINT8 *pui8Src, IMG_UINT32 ui32Width)
{
IMG_UINT32 i;
IMG_UINT16 ui16OutData;
IMG_UINT8 ui8Temp;
for (i=0; i<ui32Width; i++)
{
/* Red */
ui8Temp = (*pui8Src++) >> 4;
ui16OutData = ui8Temp << 8;
/* Green */
ui8Temp = (*pui8Src++) >> 4;
ui16OutData |= ui8Temp << 4;
/* Blue */
ui8Temp = (*pui8Src++) >> 4;
ui16OutData |= ui8Temp;
/* Alpha */
ui8Temp = (*pui8Src++) >> 4;
ui16OutData |= ui8Temp << 12;
*pui16Dest++ = ui16OutData;
}
}
/***********************************************************************************
Function Name : Copy64Span
Inputs : pui32Src, ui32Width
Outputs : pui32Dest
Returns : -
Description : Copies texture data from PVRTC2/4 to HW format
************************************************************************************/
static IMG_VOID Copy64Span(IMG_UINT32 *pui32Dest, IMG_UINT32 *pui32Src, IMG_UINT32 ui32Width)
{
IMG_UINT32 i;
for (i=0; i<ui32Width; i++)
{
*pui32Dest++ = *pui32Src++;
*pui32Dest++ = *pui32Src++;
}
}
/***********************************************************************************
Function Name : ReadCopy8888Span
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from ARGB8888 UB to ARGB8888 HW format
************************************************************************************/
static IMG_VOID ReadCopy8888Span(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT32 *pui32Dest = (IMG_UINT32 *)psSpanInfo->pvOutData;
IMG_UINT32 *pui32Src = (IMG_UINT32 *)psSpanInfo->pvInData;
for (i=0; i<psSpanInfo->ui32Width; i++, pui32Dest++)
{
*pui32Dest = *pui32Src;
pui32Src = (IMG_UINT32 *)((IMG_UINT8 *)pui32Src + psSpanInfo->i32SrcGroupIncrement);
}
}
/***********************************************************************************
Function Name : ReadCopy8888ToAlphaSpan
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from ARGB8888 UB to A/L UB HW format
************************************************************************************/
static IMG_VOID ReadCopy8888ToAlphaSpan(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT32 ui32Temp;
IMG_UINT8 *pui8Dest = (IMG_UINT8 *)psSpanInfo->pvOutData;
IMG_UINT32 *pui32Src = (IMG_UINT32 *)psSpanInfo->pvInData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
ui32Temp = *pui32Src;
*pui8Dest = (IMG_UINT8) ((ui32Temp >> 24) & 0xFF);
pui8Dest++;
pui32Src = pui32Src + psSpanInfo->i32SrcGroupIncrement;
}
}
/***********************************************************************************
Function Name : ReadCopyAlphaSpan
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from A/L UB to A/L UB HW format
************************************************************************************/
static IMG_VOID ReadCopyAlphaSpan(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT8 *pui8Dest = (IMG_UINT8 *)psSpanInfo->pvOutData;
IMG_UINT8 *pui8Src = (IMG_UINT8 *)psSpanInfo->pvInData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
*pui8Dest = *pui8Src;
pui8Dest++;
pui8Src = pui8Src + psSpanInfo->i32SrcGroupIncrement;
}
}
/***********************************************************************************
Function Name : ReadCopy565Span
Inputs : gc, psSpanInfo
Outputs : -
Returns : -
Description : Copies texture data from 565 to 565 HW format
************************************************************************************/
static IMG_VOID ReadCopy565Span(GLESContext *gc, GLESpixelSpanInfo *psSpanInfo)
{
IMG_UINT32 i;
IMG_UINT16 *pui16Dest = (IMG_UINT16 *)psSpanInfo->pvOutData;
IMG_UINT16 *pui16Src = (IMG_UINT16 *)psSpanInfo->pvInData;
for (i=0; i<psSpanInfo->ui32Width; i++)
{
*pui16Dest = *pui16Src;
pui16Dest++;
pui16Src = (IMG_UINT16 *)((IMG_UINT8 *)pui16Src + psSpanInfo->i32SrcGroupIncrement);
}
}
/***********************************************************************************
Function Name : Copy16Span
Inputs : pui16Src, ui32Width
Outputs : pui16Dest
Returns : -
Description : Copies texture data from LA UB to LA UB HW format
************************************************************************************/
static IMG_VOID Copy16Span(IMG_UINT16 *pui16Dest, IMG_UINT16 *pui16Src, IMG_UINT32 ui32Width)
{
IMG_UINT32 i;
for (i=0; i<ui32Width; i++)
{
*pui16Dest++ = *pui16Src++;
}
}
/***********************************************************************************
Function Name : Copy8Span
Inputs : pui8Src, ui32Width
Outputs : pui8Dest
Returns : -
Description : Copies texture data from A/L UB to A/L UB HW format
************************************************************************************/
static IMG_VOID Copy8Span(IMG_UINT8 *pui8Dest, IMG_UINT8 *pui8Src, IMG_UINT32 ui32Width)
{
IMG_UINT32 i;
for (i=0; i<ui32Width; i++)
{
*pui8Dest++ = *pui8Src++;
}
}
/***********************************************************************************
Function Name : Copy888Palette4Span
Inputs : pui8Src, ui32Width, pvPalette
Outputs : pui32Dest
Returns : -
Description : Copies texture data from 4bit Palette with 888 format
to RGBA8888 HW format
************************************************************************************/
static IMG_VOID Copy888Palette4Span(IMG_UINT32 *pui32Dest, IMG_UINT8 *pui8Src, IMG_UINT32 ui32Width,
const IMG_VOID *pvPalette)
{
IMG_UINT32 i;
IMG_UINT32 ui32Temp;
IMG_UINT8 ui8Invalue0, ui8Invalue1;
IMG_UINT8 *pui8Palette = (IMG_UINT8 *)pvPalette;
IMG_UINT8 aui8PalTemp[3];
if(ui32Width == 1)
{
ui8Invalue0 = *pui8Src++;
ui8Invalue0 >>= 4;
aui8PalTemp[0] = pui8Palette[ui8Invalue0*3];
aui8PalTemp[1] = pui8Palette[ui8Invalue0*3+1];
aui8PalTemp[2] = pui8Palette[ui8Invalue0*3+2];
ui32Temp = 0xFF000000 | (aui8PalTemp[0] << 16) | (aui8PalTemp[1] << 8) | aui8PalTemp[2];
*pui32Dest++ = ui32Temp;
}
else
{
for (i=0; i<ui32Width; i+=2)
{
ui8Invalue0 = *pui8Src++;
ui8Invalue1 = ui8Invalue0 & 0xF;
ui8Invalue0 >>= 4;
aui8PalTemp[0] = pui8Palette[ui8Invalue0*3];
aui8PalTemp[1] = pui8Palette[ui8Invalue0*3+1];
aui8PalTemp[2] = pui8Palette[ui8Invalue0*3+2];
ui32Temp = 0xFF000000 | (aui8PalTemp[0] << 16) | (aui8PalTemp[1] << 8) | aui8PalTemp[2];
*pui32Dest++ = ui32Temp;
aui8PalTemp[0] = pui8Palette[ui8Invalue1*3];
aui8PalTemp[1] = pui8Palette[ui8Invalue1*3+1];
aui8PalTemp[2] = pui8Palette[ui8Invalue1*3+2];
ui32Temp = 0xFF000000 | (aui8PalTemp[0] << 16) | (aui8PalTemp[1] << 8) | aui8PalTemp[2];
*pui32Dest++ = ui32Temp;
}
}
}
/***********************************************************************************
Function Name : Copy888Palette8Span
Inputs : pui8Src, ui32Width, pvPalette
Outputs : pui32Dest
Returns : -
Description : Copies texture data from 8bit Palette with 888 format
to RGBA8888 HW format
************************************************************************************/
static IMG_VOID Copy888Palette8Span(IMG_UINT32 *pui32Dest, IMG_UINT8 *pui8Src, IMG_UINT32 ui32Width,
const IMG_VOID *pvPalette)
{
IMG_UINT32 i;
IMG_UINT32 ui32Temp;
IMG_UINT8 ui8Invalue;
IMG_UINT8 *pui8Palette = (IMG_UINT8 *)pvPalette;
IMG_UINT8 aui8PalTemp[3];
for (i=0; i<ui32Width; i++)
{
ui8Invalue = *pui8Src++;
aui8PalTemp[0] = pui8Palette[ui8Invalue*3];
aui8PalTemp[1] = pui8Palette[ui8Invalue*3+1];
aui8PalTemp[2] = pui8Palette[ui8Invalue*3+2];
ui32Temp = 0xFF000000 | (aui8PalTemp[0] << 16) | (aui8PalTemp[1] << 8) | aui8PalTemp[2];
*pui32Dest++ = ui32Temp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -