// Copyright 2008 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. #pragma once #include #include #include #include "Common/CommonTypes.h" #include "VideoCommon/TextureConfig.h" enum class TextureFormat; class HiresTexture { public: using ImageDataPointer = std::unique_ptr; static void Init(); static void Update(); static void Shutdown(); static std::shared_ptr Search(const u8* texture, size_t texture_size, const u8* tlut, size_t tlut_size, u32 width, u32 height, TextureFormat format, bool has_mipmaps); static std::string GenBaseName(const u8* texture, size_t texture_size, const u8* tlut, size_t tlut_size, u32 width, u32 height, TextureFormat format, bool has_mipmaps, bool dump = false); static u32 CalculateMipCount(u32 width, u32 height); ~HiresTexture(); AbstractTextureFormat GetFormat() const; struct Level { Level(); ImageDataPointer data; AbstractTextureFormat format = AbstractTextureFormat::RGBA8; u32 width = 0; u32 height = 0; u32 row_length = 0; size_t data_size = 0; }; std::vector m_levels; private: static std::unique_ptr Load(const std::string& base_filename, u32 width, u32 height); static bool LoadDDSTexture(HiresTexture* tex, const std::string& filename); static bool LoadDDSTexture(Level& level, const std::string& filename); static bool LoadTexture(Level& level, const std::vector& buffer); static void Prefetch(); static std::string GetTextureDirectory(const std::string& game_id); HiresTexture() {} };