| /****************************************************************************** |
| |
| @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) |
| *****************************************************************************/ |