| 
									
										
										
										
											2009-07-28 21:32:10 +00:00
										 |  |  | // Copyright (C) 2003 Dolphin Project.
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // This program is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, version 2.0.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // This program is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU General Public License 2.0 for more details.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // A copy of the GPL 2.0 should have been included with the program.
 | 
					
						
							|  |  |  | // If not, see http://www.gnu.org/licenses/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Official SVN repository and contact information can be found at
 | 
					
						
							|  |  |  | // http://code.google.com/p/dolphin-emu/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _TEXTUREDECODER_H
 | 
					
						
							|  |  |  | #define _TEXTUREDECODER_H
 | 
					
						
							| 
									
										
										
										
											2010-08-28 15:53:01 +00:00
										 |  |  | #include "Hash.h"
 | 
					
						
							| 
									
										
										
										
											2009-05-09 07:55:30 +00:00
										 |  |  | enum  | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-01-29 21:17:22 +01:00
										 |  |  | 	TMEM_SIZE = 1024*1024, | 
					
						
							|  |  |  | 	TMEM_LINE_SIZE = 32, | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-02-25 20:35:05 +00:00
										 |  |  | extern  GC_ALIGNED16(u8 texMem[TMEM_SIZE]); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | enum TextureFormat | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     GX_TF_I4     = 0x0, | 
					
						
							|  |  |  |     GX_TF_I8     = 0x1, | 
					
						
							|  |  |  |     GX_TF_IA4    = 0x2, | 
					
						
							|  |  |  |     GX_TF_IA8    = 0x3, | 
					
						
							|  |  |  |     GX_TF_RGB565 = 0x4, | 
					
						
							|  |  |  |     GX_TF_RGB5A3 = 0x5, | 
					
						
							|  |  |  |     GX_TF_RGBA8  = 0x6, | 
					
						
							|  |  |  |     GX_TF_C4     = 0x8, | 
					
						
							|  |  |  |     GX_TF_C8     = 0x9, | 
					
						
							|  |  |  |     GX_TF_C14X2  = 0xA, | 
					
						
							|  |  |  |     GX_TF_CMPR   = 0xE, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _GX_TF_CTF   = 0x20,  // copy-texture-format only (simply means linear?)
 | 
					
						
							|  |  |  |     _GX_TF_ZTF   = 0x10,  // Z-texture-format
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // these formats are also valid when copying targets
 | 
					
						
							|  |  |  |     GX_CTF_R4    = 0x0 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_RA4   = 0x2 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_RA8   = 0x3 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_YUVA8 = 0x6 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_A8    = 0x7 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_R8    = 0x8 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_G8    = 0x9 | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_B8    = 0xA | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_RG8   = 0xB | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_GB8   = 0xC | _GX_TF_CTF, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     GX_TF_Z8     = 0x1 | _GX_TF_ZTF, | 
					
						
							|  |  |  |     GX_TF_Z16    = 0x3 | _GX_TF_ZTF, | 
					
						
							|  |  |  |     GX_TF_Z24X8  = 0x6 | _GX_TF_ZTF, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     GX_CTF_Z4    = 0x0 | _GX_TF_ZTF | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_Z8M   = 0x9 | _GX_TF_ZTF | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_Z8L   = 0xA | _GX_TF_ZTF | _GX_TF_CTF, | 
					
						
							|  |  |  |     GX_CTF_Z16L  = 0xC | _GX_TF_ZTF | _GX_TF_CTF, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int TexDecoder_GetTexelSizeInNibbles(int format); | 
					
						
							|  |  |  | int TexDecoder_GetTextureSizeInBytes(int width, int height, int format); | 
					
						
							| 
									
										
										
										
											2009-08-11 20:36:13 +00:00
										 |  |  | int TexDecoder_GetBlockWidthInTexels(u32 format); | 
					
						
							|  |  |  | int TexDecoder_GetBlockHeightInTexels(u32 format); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | int TexDecoder_GetPaletteSize(int fmt); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum PC_TexFormat | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-05-09 07:55:30 +00:00
										 |  |  | 	PC_TEX_FMT_NONE = 0, | 
					
						
							|  |  |  | 	PC_TEX_FMT_BGRA32, | 
					
						
							|  |  |  | 	PC_TEX_FMT_RGBA32, | 
					
						
							| 
									
										
										
										
											2009-05-13 02:06:02 +00:00
										 |  |  | 	PC_TEX_FMT_I4_AS_I8, | 
					
						
							|  |  |  | 	PC_TEX_FMT_IA4_AS_IA8, | 
					
						
							| 
									
										
										
										
											2009-05-09 07:55:30 +00:00
										 |  |  | 	PC_TEX_FMT_I8, | 
					
						
							|  |  |  | 	PC_TEX_FMT_IA8, | 
					
						
							|  |  |  | 	PC_TEX_FMT_RGB565, | 
					
						
							|  |  |  | 	PC_TEX_FMT_DXT1, | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-19 13:31:40 +00:00
										 |  |  | PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, int texformat, int tlutaddr, int tlutfmt,bool rgbaOnly = false); | 
					
						
							| 
									
										
										
										
											2009-12-07 18:48:31 +00:00
										 |  |  | PC_TexFormat GetPC_TexFormat(int texformat, int tlutfmt); | 
					
						
							| 
									
										
										
										
											2009-10-10 21:19:39 +00:00
										 |  |  | void TexDecoder_DecodeTexel(u8 *dst, const u8 *src, int s, int t, int imageWidth, int texformat, int tlutaddr, int tlutfmt); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | void TexDecoder_SetTexFmtOverlayOptions(bool enable, bool center); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |