| 
									
										
										
										
											2013-04-17 23:29:41 -04:00
										 |  |  | // Copyright 2013 Dolphin Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-03 14:35:49 +00:00
										 |  |  | #ifndef _TEXTUREMNGR_H_
 | 
					
						
							|  |  |  | #define _TEXTUREMNGR_H_
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <map>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 12:24:15 +00:00
										 |  |  | #include "VideoCommon.h"
 | 
					
						
							| 
									
										
										
										
											2009-01-30 07:35:47 +00:00
										 |  |  | #include "GLUtil.h"
 | 
					
						
							| 
									
										
										
										
											2009-06-22 09:31:30 +00:00
										 |  |  | #include "BPStructs.h"
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | #include "TextureCacheBase.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace OGL | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TextureCache : public ::TextureCache | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2012-12-08 00:54:38 +01:00
										 |  |  | 	TextureCache(); | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 	static void DisableStage(unsigned int stage); | 
					
						
							| 
									
										
										
										
											2013-01-19 00:39:31 +01:00
										 |  |  | 	static void SetStage(); | 
					
						
							| 
									
										
										
										
											2013-03-06 15:59:29 +01:00
										 |  |  | 	static void SetNextStage(unsigned int stage); | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | 	struct TCacheEntry : TCacheEntryBase | 
					
						
							| 
									
										
										
										
											2011-02-06 15:02:26 +00:00
										 |  |  | 	{ | 
					
						
							|  |  |  | 		GLuint texture; | 
					
						
							| 
									
										
										
										
											2013-04-08 14:36:58 +02:00
										 |  |  | 		GLuint framebuffer; | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		PC_TexFormat pcfmt; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		int gl_format; | 
					
						
							|  |  |  | 		int gl_iformat; | 
					
						
							|  |  |  | 		int gl_type; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-16 21:15:07 +01:00
										 |  |  | 		int m_tex_levels; | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		//TexMode0 mode; // current filter and clamp modes that texture is set to
 | 
					
						
							|  |  |  | 		//TexMode1 mode1; // current filter and clamp modes that texture is set to
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		TCacheEntry(); | 
					
						
							|  |  |  | 		~TCacheEntry(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void Load(unsigned int width, unsigned int height, | 
					
						
							| 
									
										
										
										
											2012-08-10 13:13:51 +02:00
										 |  |  | 			unsigned int expanded_width, unsigned int level); | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-26 23:41:02 +00:00
										 |  |  | 		void FromRenderTarget(u32 dstAddr, unsigned int dstFormat, | 
					
						
							|  |  |  | 			unsigned int srcFormat, const EFBRectangle& srcRect, | 
					
						
							|  |  |  | 			bool isIntensity, bool scaleByHalf, unsigned int cbufid, | 
					
						
							|  |  |  | 			const float *colmat); | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		void Bind(unsigned int stage); | 
					
						
							| 
									
										
										
										
											2012-05-12 13:50:03 +02:00
										 |  |  | 		bool Save(const char filename[], unsigned int level); | 
					
						
							| 
									
										
										
										
											2011-02-06 15:02:26 +00:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 	~TextureCache(); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 	TCacheEntryBase* CreateTexture(unsigned int width, unsigned int height, | 
					
						
							|  |  |  | 		unsigned int expanded_width, unsigned int tex_levels, PC_TexFormat pcfmt); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | 	TCacheEntryBase* CreateRenderTargetTexture(unsigned int scaled_tex_w, unsigned int scaled_tex_h); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-12 13:50:03 +02:00
										 |  |  | bool SaveTexture(const char* filename, u32 textarget, u32 tex, int virtual_width, int virtual_height, unsigned int level); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 22:24:27 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-03 14:35:49 +00:00
										 |  |  | #endif // _TEXTUREMNGR_H_
 |