blob: 96f3a925c59042c4f86771354dbc4f291d67a8d4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// Copyright 2015 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "gl_state.h"
#include "gl_resource_manager.h"
#include "video_core/pica.h"
#include <memory>
#include <map>
class RasterizerCacheOpenGL : NonCopyable {
public:
~RasterizerCacheOpenGL();
/// Loads a texture from 3DS memory to OpenGL and caches it (if not already cached)
void LoadAndBindTexture(OpenGLState &state, unsigned texture_unit, const Pica::Regs::FullTextureConfig& config);
/// Flush any cached resource that touches the flushed region
void NotifyFlush(PAddr addr, u32 size);
/// Flush all cached OpenGL resources tracked by this cache manager
void FullFlush();
private:
struct CachedTexture {
OGLTexture texture;
GLuint width;
GLuint height;
u32 size;
};
std::map<PAddr, std::unique_ptr<CachedTexture>> texture_cache;
};
|