|  | /****************************************************************************** | 
|  |  | 
|  | @File         PVRTTexture.cpp | 
|  |  | 
|  | @Title        PVRTTexture | 
|  |  | 
|  | @Version | 
|  |  | 
|  | @Copyright    Copyright (c) Imagination Technologies Limited. | 
|  |  | 
|  | @Platform     ANSI compatible | 
|  |  | 
|  | @Description  Texture loading. | 
|  |  | 
|  | ******************************************************************************/ | 
|  | #include <string.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | #include "PVRTTexture.h" | 
|  | #include "PVRTMap.h" | 
|  |  | 
|  | /***************************************************************************** | 
|  | ** Functions | 
|  | *****************************************************************************/ | 
|  | /*!*************************************************************************** | 
|  | @Function		ReadFromPtr | 
|  | @Input			pDataCursor		The data to read | 
|  | @Description	Reads from a pointer of memory in to the meta data block. | 
|  | *****************************************************************************/ | 
|  | bool MetaDataBlock::ReadFromPtr(const unsigned char** pDataCursor) | 
|  | { | 
|  | memcpy(&DevFOURCC,	 *pDataCursor, sizeof(PVRTuint32));		*pDataCursor += sizeof(PVRTuint32); | 
|  | memcpy(&u32Key,		 *pDataCursor, sizeof(PVRTuint32));		*pDataCursor += sizeof(PVRTuint32); | 
|  | memcpy(&u32DataSize, *pDataCursor, sizeof(PVRTuint32));		*pDataCursor += sizeof(PVRTuint32); | 
|  | if(u32DataSize > 0) | 
|  | { | 
|  | Data = new PVRTuint8[u32DataSize]; | 
|  | memcpy(Data, *pDataCursor, u32DataSize); | 
|  | *pDataCursor += u32DataSize; | 
|  | } | 
|  |  | 
|  | return true; | 
|  | } | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @Function		PVRTTextureLoadTiled | 
|  | @Modified		pDst			Texture to place the tiled data | 
|  | @Input			nWidthDst		Width of destination texture | 
|  | @Input			nHeightDst		Height of destination texture | 
|  | @Input			pSrc			Texture to tile | 
|  | @Input			nWidthSrc		Width of source texture | 
|  | @Input			nHeightSrc		Height of source texture | 
|  | @Input 			nElementSize	Bytes per pixel | 
|  | @Input			bTwiddled		True if the data is twiddled | 
|  | @Description	Needed by PVRTTextureTile() in the various PVRTTextureAPIs | 
|  | *****************************************************************************/ | 
|  | void PVRTTextureLoadTiled( | 
|  | PVRTuint8		* const pDst, | 
|  | const unsigned int	nWidthDst, | 
|  | const unsigned int	nHeightDst, | 
|  | const PVRTuint8	* const pSrc, | 
|  | const unsigned int	nWidthSrc, | 
|  | const unsigned int	nHeightSrc, | 
|  | const unsigned int	nElementSize, | 
|  | const bool			bTwiddled) | 
|  | { | 
|  | unsigned int nXs, nYs; | 
|  | unsigned int nXd, nYd; | 
|  | unsigned int nIdxSrc, nIdxDst; | 
|  |  | 
|  | for(nIdxDst = 0; nIdxDst < nWidthDst*nHeightDst; ++nIdxDst) | 
|  | { | 
|  | if(bTwiddled) | 
|  | { | 
|  | PVRTTextureDeTwiddle(nXd, nYd, nIdxDst); | 
|  | } | 
|  | else | 
|  | { | 
|  | nXd = nIdxDst % nWidthDst; | 
|  | nYd = nIdxDst / nWidthDst; | 
|  | } | 
|  |  | 
|  | nXs = nXd % nWidthSrc; | 
|  | nYs = nYd % nHeightSrc; | 
|  |  | 
|  | if(bTwiddled) | 
|  | { | 
|  | PVRTTextureTwiddle(nIdxSrc, nXs, nYs); | 
|  | } | 
|  | else | 
|  | { | 
|  | nIdxSrc = nYs * nWidthSrc + nXs; | 
|  | } | 
|  |  | 
|  | memcpy(pDst + nIdxDst*nElementSize, pSrc + nIdxSrc*nElementSize, nElementSize); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @Function		PVRTTextureCreate | 
|  | @Input			w			Size of the texture | 
|  | @Input			h			Size of the texture | 
|  | @Input			wMin		Minimum size of a texture level | 
|  | @Input			hMin		Minimum size of a texture level | 
|  | @Input			nBPP		Bits per pixel of the format | 
|  | @Input			bMIPMap		Create memory for MIP-map levels also? | 
|  | @Return			Allocated texture memory (must be free()d) | 
|  | @Description	Creates a PVRTextureHeaderV3 structure, including room for | 
|  | the specified texture, in memory. | 
|  | *****************************************************************************/ | 
|  | PVRTextureHeaderV3 *PVRTTextureCreate( | 
|  | const unsigned int	w, | 
|  | const unsigned int	h, | 
|  | const unsigned int	wMin, | 
|  | const unsigned int	hMin, | 
|  | const unsigned int	nBPP, | 
|  | const bool			bMIPMap) | 
|  | { | 
|  | size_t			len; | 
|  | unsigned char	*p; | 
|  |  | 
|  | { | 
|  | unsigned int	wTmp = w, hTmp = h; | 
|  |  | 
|  | len = 0; | 
|  | do | 
|  | { | 
|  | len += PVRT_MAX(wTmp, wMin) * PVRT_MAX(hTmp, hMin); | 
|  | wTmp >>= 1; | 
|  | hTmp >>= 1; | 
|  | } | 
|  | while(bMIPMap && (wTmp || hTmp)); | 
|  | } | 
|  |  | 
|  | len = (len * nBPP) / 8; | 
|  | len += PVRTEX3_HEADERSIZE; | 
|  |  | 
|  | p = (unsigned char*)malloc(len); | 
|  | _ASSERT(p); | 
|  |  | 
|  | if(p) | 
|  | { | 
|  | PVRTextureHeaderV3 * const psTexHeader = (PVRTextureHeaderV3*)p; | 
|  |  | 
|  | *psTexHeader=PVRTextureHeaderV3(); | 
|  |  | 
|  | psTexHeader->u32Width=w; | 
|  | psTexHeader->u32Height=h; | 
|  |  | 
|  | return psTexHeader; | 
|  | } | 
|  | else | 
|  | { | 
|  | return 0; | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @Function		PVRTTextureTwiddle | 
|  | @Output		a	Twiddled value | 
|  | @Input			u	Coordinate axis 0 | 
|  | @Input			v	Coordinate axis 1 | 
|  | @Description	Combine a 2D coordinate into a twiddled value | 
|  | *****************************************************************************/ | 
|  | void PVRTTextureTwiddle(unsigned int &a, const unsigned int u, const unsigned int v) | 
|  | { | 
|  | _ASSERT(!((u|v) & 0xFFFF0000)); | 
|  | a = 0; | 
|  | for(int i = 0; i < 16; ++i) | 
|  | { | 
|  | a |= ((u & (1 << i)) << (i+1)); | 
|  | a |= ((v & (1 << i)) << (i+0)); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @Function		PVRTTextureDeTwiddle | 
|  | @Output		u	Coordinate axis 0 | 
|  | @Output		v	Coordinate axis 1 | 
|  | @Input			a	Twiddled value | 
|  | @Description	Extract 2D coordinates from a twiddled value. | 
|  | *****************************************************************************/ | 
|  | void PVRTTextureDeTwiddle(unsigned int &u, unsigned int &v, const unsigned int a) | 
|  | { | 
|  | u = 0; | 
|  | v = 0; | 
|  | for(int i = 0; i < 16; ++i) | 
|  | { | 
|  | u |= (a & (1 << ((2*i)+1))) >> (i+1); | 
|  | v |= (a & (1 << ((2*i)+0))) >> (i+0); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @Function		PVRTGetBitsPerPixel | 
|  | @Input			u64PixelFormat			A PVR Pixel Format ID. | 
|  | @Return		const PVRTuint32	Number of bits per pixel. | 
|  | @Description	Returns the number of bits per pixel in a PVR Pixel Format | 
|  | identifier. | 
|  | *************************************************************************/ | 
|  | PVRTuint32 PVRTGetBitsPerPixel(PVRTuint64 u64PixelFormat) | 
|  | { | 
|  | if((u64PixelFormat&PVRTEX_PFHIGHMASK)!=0) | 
|  | { | 
|  | PVRTuint8* PixelFormatChar=(PVRTuint8*)&u64PixelFormat; | 
|  | return PixelFormatChar[4]+PixelFormatChar[5]+PixelFormatChar[6]+PixelFormatChar[7]; | 
|  | } | 
|  | else | 
|  | { | 
|  | switch (u64PixelFormat) | 
|  | { | 
|  | case ePVRTPF_BW1bpp: | 
|  | return 1; | 
|  | case ePVRTPF_PVRTCI_2bpp_RGB: | 
|  | case ePVRTPF_PVRTCI_2bpp_RGBA: | 
|  | case ePVRTPF_PVRTCII_2bpp: | 
|  | return 2; | 
|  | case ePVRTPF_PVRTCI_4bpp_RGB: | 
|  | case ePVRTPF_PVRTCI_4bpp_RGBA: | 
|  | case ePVRTPF_PVRTCII_4bpp: | 
|  | case ePVRTPF_ETC1: | 
|  | case ePVRTPF_EAC_R11: | 
|  | case ePVRTPF_ETC2_RGB: | 
|  | case ePVRTPF_ETC2_RGB_A1: | 
|  | case ePVRTPF_DXT1: | 
|  | case ePVRTPF_BC4: | 
|  | return 4; | 
|  | case ePVRTPF_DXT2: | 
|  | case ePVRTPF_DXT3: | 
|  | case ePVRTPF_DXT4: | 
|  | case ePVRTPF_DXT5: | 
|  | case ePVRTPF_BC5: | 
|  | case ePVRTPF_EAC_RG11: | 
|  | case ePVRTPF_ETC2_RGBA: | 
|  | return 8; | 
|  | case ePVRTPF_YUY2: | 
|  | case ePVRTPF_UYVY: | 
|  | case ePVRTPF_RGBG8888: | 
|  | case ePVRTPF_GRGB8888: | 
|  | return 16; | 
|  | case ePVRTPF_SharedExponentR9G9B9E5: | 
|  | return 32; | 
|  | case ePVRTPF_NumCompressedPFs: | 
|  | return 0; | 
|  | } | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @Function		PVRTGetFormatMinDims | 
|  | @Input			u64PixelFormat	A PVR Pixel Format ID. | 
|  | @Modified		minX			Returns the minimum width. | 
|  | @Modified		minY			Returns the minimum height. | 
|  | @Modified		minZ			Returns the minimum depth. | 
|  | @Description	Gets the minimum dimensions (x,y,z) for a given pixel format. | 
|  | *************************************************************************/ | 
|  | void PVRTGetFormatMinDims(PVRTuint64 u64PixelFormat, PVRTuint32 &minX, PVRTuint32 &minY, PVRTuint32 &minZ) | 
|  | { | 
|  | switch(u64PixelFormat) | 
|  | { | 
|  | case ePVRTPF_DXT1: | 
|  | case ePVRTPF_DXT2: | 
|  | case ePVRTPF_DXT3: | 
|  | case ePVRTPF_DXT4: | 
|  | case ePVRTPF_DXT5: | 
|  | case ePVRTPF_BC4: | 
|  | case ePVRTPF_BC5: | 
|  | case ePVRTPF_ETC1: | 
|  | case ePVRTPF_ETC2_RGB: | 
|  | case ePVRTPF_ETC2_RGBA: | 
|  | case ePVRTPF_ETC2_RGB_A1: | 
|  | case ePVRTPF_EAC_R11: | 
|  | case ePVRTPF_EAC_RG11: | 
|  | minX = 4; | 
|  | minY = 4; | 
|  | minZ = 1; | 
|  | break; | 
|  | case ePVRTPF_PVRTCI_4bpp_RGB: | 
|  | case ePVRTPF_PVRTCI_4bpp_RGBA: | 
|  | minX = 8; | 
|  | minY = 8; | 
|  | minZ = 1; | 
|  | break; | 
|  | case ePVRTPF_PVRTCI_2bpp_RGB: | 
|  | case ePVRTPF_PVRTCI_2bpp_RGBA: | 
|  | minX = 16; | 
|  | minY = 8; | 
|  | minZ = 1; | 
|  | break; | 
|  | case ePVRTPF_PVRTCII_4bpp: | 
|  | minX = 4; | 
|  | minY = 4; | 
|  | minZ = 1; | 
|  | break; | 
|  | case ePVRTPF_PVRTCII_2bpp: | 
|  | minX = 8; | 
|  | minY = 4; | 
|  | minZ = 1; | 
|  | break; | 
|  | case ePVRTPF_UYVY: | 
|  | case ePVRTPF_YUY2: | 
|  | case ePVRTPF_RGBG8888: | 
|  | case ePVRTPF_GRGB8888: | 
|  | minX = 2; | 
|  | minY = 1; | 
|  | minZ = 1; | 
|  | break; | 
|  | case ePVRTPF_BW1bpp: | 
|  | minX = 8; | 
|  | minY = 1; | 
|  | minZ = 1; | 
|  | break; | 
|  | default: //Non-compressed formats all return 1. | 
|  | minX = 1; | 
|  | minY = 1; | 
|  | minZ = 1; | 
|  | break; | 
|  | } | 
|  | } | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @Function		PVRTGetTextureDataSize | 
|  | @Input			iMipLevel	Specifies a mip level to check, 'PVRTEX_ALLMIPLEVELS' | 
|  | can be passed to get the size of all MIP levels. | 
|  | @Input			bAllSurfs	Size of all surfaces is calculated if true, | 
|  | only a single surface if false. | 
|  | @Input			bAllFaces	Size of all faces is calculated if true, | 
|  | only a single face if false. | 
|  | @Return			PVRTuint32		Size in BYTES of the specified texture area. | 
|  | @Description	Gets the size in BYTES of the texture, given various input | 
|  | parameters.	User can retrieve the size of either all | 
|  | surfaces or a single surface, all faces or a single face and | 
|  | all MIP-Maps or a single specified MIP level. | 
|  | *************************************************************************/ | 
|  | PVRTuint32 PVRTGetTextureDataSize(PVRTextureHeaderV3 sTextureHeader, PVRTint32 iMipLevel, bool bAllSurfaces, bool bAllFaces) | 
|  | { | 
|  | //The smallest divisible sizes for a pixel format | 
|  | PVRTuint32 uiSmallestWidth=1; | 
|  | PVRTuint32 uiSmallestHeight=1; | 
|  | PVRTuint32 uiSmallestDepth=1; | 
|  |  | 
|  | PVRTuint64 PixelFormatPartHigh = sTextureHeader.u64PixelFormat&PVRTEX_PFHIGHMASK; | 
|  |  | 
|  | //If the pixel format is compressed, get the pixel format's minimum dimensions. | 
|  | if (PixelFormatPartHigh==0) | 
|  | { | 
|  | PVRTGetFormatMinDims((EPVRTPixelFormat)sTextureHeader.u64PixelFormat, uiSmallestWidth, uiSmallestHeight, uiSmallestDepth); | 
|  | } | 
|  |  | 
|  | //Needs to be 64-bit integer to support 16kx16k and higher sizes. | 
|  | PVRTuint64 uiDataSize = 0; | 
|  | if (iMipLevel==-1) | 
|  | { | 
|  | for (PVRTuint8 uiCurrentMIP = 0; uiCurrentMIP<sTextureHeader.u32MIPMapCount; ++uiCurrentMIP) | 
|  | { | 
|  | //Get the dimensions of the current MIP Map level. | 
|  | PVRTuint32 uiWidth = PVRT_MAX(1,sTextureHeader.u32Width>>uiCurrentMIP); | 
|  | PVRTuint32 uiHeight = PVRT_MAX(1,sTextureHeader.u32Height>>uiCurrentMIP); | 
|  | PVRTuint32 uiDepth = PVRT_MAX(1,sTextureHeader.u32Depth>>uiCurrentMIP); | 
|  |  | 
|  | //If pixel format is compressed, the dimensions need to be padded. | 
|  | if (PixelFormatPartHigh==0) | 
|  | { | 
|  | uiWidth=uiWidth+( (-1*uiWidth)%uiSmallestWidth); | 
|  | uiHeight=uiHeight+( (-1*uiHeight)%uiSmallestHeight); | 
|  | uiDepth=uiDepth+( (-1*uiDepth)%uiSmallestDepth); | 
|  | } | 
|  |  | 
|  | //Add the current MIP Map's data size to the total. | 
|  | uiDataSize+=(PVRTuint64)PVRTGetBitsPerPixel(sTextureHeader.u64PixelFormat)*(PVRTuint64)uiWidth*(PVRTuint64)uiHeight*(PVRTuint64)uiDepth; | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | //Get the dimensions of the specified MIP Map level. | 
|  | PVRTuint32 uiWidth = PVRT_MAX(1,sTextureHeader.u32Width>>iMipLevel); | 
|  | PVRTuint32 uiHeight = PVRT_MAX(1,sTextureHeader.u32Height>>iMipLevel); | 
|  | PVRTuint32 uiDepth = PVRT_MAX(1,sTextureHeader.u32Depth>>iMipLevel); | 
|  |  | 
|  | //If pixel format is compressed, the dimensions need to be padded. | 
|  | if (PixelFormatPartHigh==0) | 
|  | { | 
|  | uiWidth=uiWidth+( (-1*uiWidth)%uiSmallestWidth); | 
|  | uiHeight=uiHeight+( (-1*uiHeight)%uiSmallestHeight); | 
|  | uiDepth=uiDepth+( (-1*uiDepth)%uiSmallestDepth); | 
|  | } | 
|  |  | 
|  | //Work out the specified MIP Map's data size | 
|  | uiDataSize=PVRTGetBitsPerPixel(sTextureHeader.u64PixelFormat)*uiWidth*uiHeight*uiDepth; | 
|  | } | 
|  |  | 
|  | //The number of faces/surfaces to register the size of. | 
|  | PVRTuint32 numfaces = ((bAllFaces)?(sTextureHeader.u32NumFaces):(1)); | 
|  | PVRTuint32 numsurfs = ((bAllSurfaces)?(sTextureHeader.u32NumSurfaces):(1)); | 
|  |  | 
|  | //Multiply the data size by number of faces and surfaces specified, and return. | 
|  | return (PVRTuint32)(uiDataSize/8)*numsurfs*numfaces; | 
|  | } | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @Function		PVRTConvertOldTextureHeaderToV3 | 
|  | @Input			LegacyHeader	Legacy header for conversion. | 
|  | @Modified		NewHeader		New header to output into. | 
|  | @Modified		MetaData		MetaData Map to output into. | 
|  | @Description	Converts a legacy texture header (V1 or V2) to a current | 
|  | generation header (V3) | 
|  | *************************************************************************/ | 
|  | void PVRTConvertOldTextureHeaderToV3(const PVR_Texture_Header* LegacyHeader, PVRTextureHeaderV3& NewHeader, CPVRTMap<PVRTuint32, CPVRTMap<PVRTuint32,MetaDataBlock> >* pMetaData) | 
|  | { | 
|  | //Setup variables | 
|  | bool isPreMult; | 
|  | PVRTuint64 ptNew; | 
|  | EPVRTColourSpace cSpaceNew; | 
|  | EPVRTVariableType chanTypeNew; | 
|  |  | 
|  | //Map the old enum to the new format. | 
|  | PVRTMapLegacyTextureEnumToNewFormat((PVRTPixelType)(LegacyHeader->dwpfFlags&0xff),ptNew,cSpaceNew,chanTypeNew,isPreMult); | 
|  |  | 
|  | //Check if this is a cube map. | 
|  | bool isCubeMap = (LegacyHeader->dwpfFlags&PVRTEX_CUBEMAP)!=0; | 
|  |  | 
|  | //Setup the new header. | 
|  | NewHeader.u64PixelFormat=ptNew; | 
|  | NewHeader.u32ChannelType=chanTypeNew; | 
|  | NewHeader.u32ColourSpace=cSpaceNew; | 
|  | NewHeader.u32Depth=1; | 
|  | NewHeader.u32Flags=isPreMult?PVRTEX3_PREMULTIPLIED:0; | 
|  | NewHeader.u32Height=LegacyHeader->dwHeight; | 
|  | NewHeader.u32MetaDataSize=0; | 
|  | NewHeader.u32MIPMapCount=(LegacyHeader->dwpfFlags&PVRTEX_MIPMAP?LegacyHeader->dwMipMapCount+1:1); //Legacy headers have a MIP Map count of 0 if there is only the top level. New Headers have a count of 1. | 
|  | NewHeader.u32NumFaces=(isCubeMap?6:1); | 
|  |  | 
|  | //Only compute the number of surfaces if it's a V2 header, else default to 1 surface. | 
|  | if (LegacyHeader->dwHeaderSize==sizeof(PVR_Texture_Header)) | 
|  | NewHeader.u32NumSurfaces=(LegacyHeader->dwNumSurfs/(isCubeMap?6:1)); | 
|  | else | 
|  | NewHeader.u32NumSurfaces=1; | 
|  |  | 
|  | NewHeader.u32Version=PVRTEX3_IDENT; | 
|  | NewHeader.u32Width=LegacyHeader->dwWidth; | 
|  |  | 
|  | //Clear any currently stored MetaData, or it will be inaccurate. | 
|  | if (pMetaData) | 
|  | { | 
|  | pMetaData->Clear(); | 
|  | } | 
|  |  | 
|  | //Check if this is a normal map. | 
|  | if (LegacyHeader->dwpfFlags&PVRTEX_BUMPMAP && pMetaData) | 
|  | { | 
|  | //Get a reference to the correct block. | 
|  | MetaDataBlock& mbBumpData=(*pMetaData)[PVRTEX_CURR_IDENT][ePVRTMetaDataBumpData]; | 
|  |  | 
|  | //Set up the block. | 
|  | mbBumpData.DevFOURCC=PVRTEX_CURR_IDENT; | 
|  | mbBumpData.u32Key=ePVRTMetaDataBumpData; | 
|  | mbBumpData.u32DataSize=8; | 
|  | mbBumpData.Data=new PVRTuint8[8]; | 
|  |  | 
|  | //Setup the data for the block. | 
|  | float bumpScale = 1.0f; | 
|  | const char* bumpOrder = "xyz"; | 
|  |  | 
|  | //Copy the bumpScale into the data. | 
|  | memcpy(mbBumpData.Data,&bumpScale,4); | 
|  |  | 
|  | //Clear the string | 
|  | memset(mbBumpData.Data+4,0,4); | 
|  |  | 
|  | //Copy the bumpOrder into the data. | 
|  | memcpy(mbBumpData.Data+4, bumpOrder,3); | 
|  |  | 
|  | //Increment the meta data size. | 
|  | NewHeader.u32MetaDataSize+=(12+mbBumpData.u32DataSize); | 
|  | } | 
|  |  | 
|  | //Check if for vertical flip orientation. | 
|  | if (LegacyHeader->dwpfFlags&PVRTEX_VERTICAL_FLIP && pMetaData) | 
|  | { | 
|  | //Get the correct meta data block | 
|  | MetaDataBlock& mbTexOrientation=(*pMetaData)[PVRTEX_CURR_IDENT][ePVRTMetaDataTextureOrientation]; | 
|  |  | 
|  | //Set the block up. | 
|  | mbTexOrientation.u32DataSize=3; | 
|  | mbTexOrientation.Data=new PVRTuint8[3]; | 
|  | mbTexOrientation.DevFOURCC=PVRTEX_CURR_IDENT; | 
|  | mbTexOrientation.u32Key=ePVRTMetaDataTextureOrientation; | 
|  |  | 
|  | //Initialise the block to default orientation. | 
|  | memset(mbTexOrientation.Data,0,3); | 
|  |  | 
|  | //Set the block oriented upwards. | 
|  | mbTexOrientation.Data[ePVRTAxisY]=ePVRTOrientUp; | 
|  |  | 
|  | //Increment the meta data size. | 
|  | NewHeader.u32MetaDataSize+=(12+mbTexOrientation.u32DataSize); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @Function		PVRTMapLegacyTextureEnumToNewFormat | 
|  | @Input			OldFormat		Legacy Enumeration Value | 
|  | @Modified		newType			New PixelType identifier. | 
|  | @Modified		newCSpace		New ColourSpace | 
|  | @Modified		newChanType		New Channel Type | 
|  | @Modified		isPreMult		Whether format is pre-multiplied | 
|  | @Description	Maps a legacy enumeration value to the new PVR3 style format. | 
|  | *************************************************************************/ | 
|  | void PVRTMapLegacyTextureEnumToNewFormat(PVRTPixelType OldFormat, PVRTuint64& newType, EPVRTColourSpace& newCSpace, EPVRTVariableType& newChanType, bool& isPreMult) | 
|  | { | 
|  | //Default value. | 
|  | isPreMult=false; | 
|  |  | 
|  | switch (OldFormat) | 
|  | { | 
|  | case MGLPT_ARGB_4444: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',4,4,4,4); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_ARGB_1555: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',1,5,5,5); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_RGB_565: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',5,6,5); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_RGB_555: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','r','g','b',1,5,5,5); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_RGB_888: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_ARGB_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_ARGB_8332: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',8,3,3,2); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_I_8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('i',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_AI_88: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('a','i',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_1_BPP: | 
|  | { | 
|  | newType=ePVRTPF_BW1bpp; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_VY1UY0: | 
|  | { | 
|  | newType=ePVRTPF_YUY2; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_Y1VY0U: | 
|  | { | 
|  | newType=ePVRTPF_UYVY; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_PVRTC2: | 
|  | { | 
|  | newType=ePVRTPF_PVRTCI_2bpp_RGBA; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case MGLPT_PVRTC4: | 
|  | { | 
|  | newType=ePVRTPF_PVRTCI_4bpp_RGBA; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_RGBA_4444: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',4,4,4,4); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_RGBA_5551: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',5,5,5,1); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_RGBA_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_RGB_565: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',5,6,5); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_RGB_555: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','x',5,5,5,1); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_RGB_888: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_I_8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('l',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_AI_88: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('l','a',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_PVRTC2: | 
|  | { | 
|  | newType=ePVRTPF_PVRTCI_2bpp_RGBA; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_PVRTC4: | 
|  | { | 
|  | newType=ePVRTPF_PVRTCI_4bpp_RGBA; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_BGRA_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_A_8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('a',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_PVRTCII4: | 
|  | { | 
|  | newType=ePVRTPF_PVRTCII_4bpp; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case OGL_PVRTCII2: | 
|  | { | 
|  | newType=ePVRTPF_PVRTCII_2bpp; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | #ifdef _WIN32 | 
|  | case D3D_DXT1: | 
|  | { | 
|  | newType=ePVRTPF_DXT1; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_DXT2: | 
|  | { | 
|  | newType=ePVRTPF_DXT2; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_DXT3: | 
|  | { | 
|  | newType=ePVRTPF_DXT3; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_DXT4: | 
|  | { | 
|  | newType=ePVRTPF_DXT4; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_DXT5: | 
|  | { | 
|  | newType=ePVRTPF_DXT5; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | case D3D_RGB_332: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',3,3,2); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_AL_44: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('a','l',4,4); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_LVU_655: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('l','g','r',6,5,5); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_XLVU_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','l','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_QWVU_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_ABGR_2101010: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',2,10,10,10); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_ARGB_2101010: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',2,10,10,10); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_AWVU_2101010: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',2,10,10,10); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_GR_1616: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('g','r',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_VU_1616: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('g','r',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_ABGR_16161616: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_R16F: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_GR_1616F: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('g','r',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_ABGR_16161616F: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_R32F: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_GR_3232F: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('g','r',32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_ABGR_32323232F: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',32,32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ETC_RGB_4BPP: | 
|  | { | 
|  | newType=ePVRTPF_ETC1; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_A8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('a',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_V8U8: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('g','r',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_L16: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('l',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_L8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('l',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_AL_88: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('a','l',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_UYVY: | 
|  | { | 
|  | newType=ePVRTPF_UYVY; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case D3D_YUY2: | 
|  | { | 
|  | newType=ePVRTPF_YUY2; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32B32A32_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',32,32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32B32A32_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',32,32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32B32A32_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',32,32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32B32_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32B32_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32B32_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',32,32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16B16A16_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16B16A16_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16B16A16_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShort; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16B16A16_SNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16B16A16_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',16,16,16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedShort; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32G32_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',32,32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R10G10B10A2_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',10,10,10,2); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R10G10B10A2_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',10,10,10,2); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R11G11B10_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',11,11,10); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8B8A8_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8B8A8_UNORM_SRGB: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8B8A8_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByte; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8B8A8_SNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8B8A8_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedByte; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShort; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16_SNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16G16_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',16,16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedShort; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R32_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',32); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedInteger; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByte; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8_SNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID2('r','g',8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedByte; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16_FLOAT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShort; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16_SNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R16_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',16); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedShort; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8_UINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByte; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8_SNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8_SINT: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedByte; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_A8_UNORM: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('r',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R1_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_BW1bpp; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R9G9B9E5_SHAREDEXP: | 
|  | { | 
|  | newType=ePVRTPF_SharedExponentR9G9B9E5; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedFloat; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_R8G8_B8G8_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_RGBG8888; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_G8R8_G8B8_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_GRGB8888; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | #ifdef _WIN32 | 
|  | case DX10_BC1_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_DXT1; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC1_UNORM_SRGB: | 
|  | { | 
|  | newType=ePVRTPF_DXT1; | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC2_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_DXT3; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC2_UNORM_SRGB: | 
|  | { | 
|  | newType=ePVRTPF_DXT3; | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC3_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_DXT5; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC3_UNORM_SRGB: | 
|  | { | 
|  | newType=ePVRTPF_DXT5; | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC4_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_BC4; | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC4_SNORM: | 
|  | { | 
|  | newType=ePVRTPF_BC4; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC5_UNORM: | 
|  | { | 
|  | newType=ePVRTPF_BC5; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case DX10_BC5_SNORM: | 
|  | { | 
|  | newType=ePVRTPF_BC5; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeSignedIntegerNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | case ePT_VG_sRGBX_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','x',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sRGBA_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sRGBA_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sRGB_565: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('r','g','b',5,6,5); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sRGBA_5551: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',5,5,5,1); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sRGBA_4444: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',4,4,4,4); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sL_8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('l',8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lRGBX_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','x',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lRGBA_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lRGBA_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('r','g','b','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lL_8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('l',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_A_8: | 
|  | { | 
|  | newType=PVRTGENPIXELID1('a',8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_BW_1: | 
|  | { | 
|  | newType=ePVRTPF_BW1bpp; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sXRGB_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sARGB_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sARGB_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sARGB_1555: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',1,5,5,5); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sARGB_4444: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',4,4,4,4); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lXRGB_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lARGB_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lARGB_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','r','g','b',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sBGRX_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','x',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sBGRA_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sBGRA_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sBGR_565: | 
|  | { | 
|  | newType=PVRTGENPIXELID3('b','g','r',5,6,5); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sBGRA_5551: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','a',5,5,5,1); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sBGRA_4444: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','x',4,4,4,4); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lBGRX_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','x',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lBGRA_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lBGRA_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('b','g','r','a',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sXBGR_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sABGR_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sABGR_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sABGR_1555: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',1,5,5,5); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_sABGR_4444: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','b','g','r',4,4,4,4); | 
|  | newCSpace=ePVRTCSpacesRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedShortNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lXBGR_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('x','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lABGR_8888: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | break; | 
|  | } | 
|  |  | 
|  | case ePT_VG_lABGR_8888_PRE: | 
|  | { | 
|  | newType=PVRTGENPIXELID4('a','b','g','r',8,8,8,8); | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeUnsignedByteNorm; | 
|  | isPreMult=true; | 
|  | break; | 
|  | } | 
|  | default: | 
|  | { | 
|  | newType=ePVRTPF_NumCompressedPFs; | 
|  | newCSpace=ePVRTCSpacelRGB; | 
|  | newChanType=ePVRTVarTypeNumVarTypes; | 
|  | break; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | /***************************************************************************** | 
|  | End of file (PVRTTexture.cpp) | 
|  | *****************************************************************************/ |