A texture cache that never invalidates.

This commit is contained in:
Ben Vanik
2015-01-03 01:05:56 -08:00
parent 79179c28ef
commit 718762746a
8 changed files with 303 additions and 141 deletions

View File

@@ -85,6 +85,8 @@ enum class TextureFormat : uint32_t {
};
struct TextureInfo {
uint32_t guest_address;
uint32_t input_length;
uint32_t swizzle;
Dimension dimension;
uint32_t width;
@@ -95,7 +97,6 @@ struct TextureInfo {
xenos::Endian endianness;
bool is_tiled;
bool is_compressed;
uint32_t input_length;
TextureFormat format;
@@ -129,6 +130,11 @@ struct TextureInfo {
static uint32_t TiledOffset2DInner(uint32_t x, uint32_t y, uint32_t bpp,
uint32_t base_offset);
uint64_t hash() const;
bool operator==(const TextureInfo& other) const {
return std::memcmp(this, &other, sizeof(TextureInfo)) == 0;
}
private:
void CalculateTextureSizes1D(const xenos::xe_gpu_texture_fetch_t& fetch);
void CalculateTextureSizes2D(const xenos::xe_gpu_texture_fetch_t& fetch);