⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tex.c

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -