// Copyright 2013 Dolphin Emulator Project // Licensed under GPLv2 // Refer to the license.txt file included. #ifndef _TEXTUREMNGR_H_ #define _TEXTUREMNGR_H_ #include #include "VideoCommon.h" #include "GLUtil.h" #include "BPStructs.h" #include "TextureCacheBase.h" namespace OGL { class TextureCache : public ::TextureCache { public: TextureCache(); static void DisableStage(unsigned int stage); static void SetStage(); private: struct TCacheEntry : TCacheEntryBase { GLuint texture; GLuint framebuffer; PC_TexFormat pcfmt; int gl_format; int gl_iformat; int gl_type; //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, unsigned int expanded_width, unsigned int level) override; void FromRenderTarget(u32 dstAddr, unsigned int dstFormat, unsigned int srcFormat, const EFBRectangle& srcRect, bool isIntensity, bool scaleByHalf, unsigned int cbufid, const float *colmat) override; void Bind(unsigned int stage) override; bool Save(const std::string filename, unsigned int level); }; ~TextureCache(); TCacheEntryBase* CreateTexture(unsigned int width, unsigned int height, unsigned int expanded_width, unsigned int tex_levels, PC_TexFormat pcfmt) override; TCacheEntryBase* CreateRenderTargetTexture(unsigned int scaled_tex_w, unsigned int scaled_tex_h) override; }; bool SaveTexture(const std::string filename, u32 textarget, u32 tex, int virtual_width, int virtual_height, unsigned int level); } #endif // _TEXTUREMNGR_H_