TexCache: merge texture and rendertarget factory function

This commit is contained in:
degasus
2015-01-17 10:01:41 +01:00
parent 615ae9f106
commit 6cd6e6546f
6 changed files with 59 additions and 83 deletions

View File

@ -474,7 +474,11 @@ TextureCache::TCacheEntryBase* TextureCache::Load(const u32 stage)
// create the entry/texture
if (nullptr == entry)
{
textures[texID] = entry = g_texture_cache->CreateTexture(width, height, texLevels);
TCacheEntryConfig config;
config.width = width;
config.height = height;
config.levels = texLevels;
textures[texID] = entry = g_texture_cache->CreateTexture(config);
entry->type = TCET_NORMAL;
GFX_DEBUGGER_PAUSE_AT(NEXT_NEW_TEXTURE, true);
@ -900,7 +904,13 @@ TextureCache::TCacheEntryBase* TextureCache::AllocateRenderTarget(unsigned int w
return rt;
}
return g_texture_cache->CreateRenderTargetTexture(width, height, layers);
TCacheEntryConfig config;
config.rendertarget = true;
config.width = width;
config.height = height;
config.layers = layers;
return g_texture_cache->CreateTexture(config);
}
void TextureCache::FreeRenderTarget(TCacheEntryBase* entry)

View File

@ -104,8 +104,7 @@ public:
static void ClearRenderTargets(); // currently only used by OGL
static bool Find(u32 start_address, u64 hash);
virtual TCacheEntryBase* CreateTexture(unsigned int width, unsigned int height, unsigned int tex_levels) = 0;
virtual TCacheEntryBase* CreateRenderTargetTexture(unsigned int scaled_tex_w, unsigned int scaled_tex_h, unsigned int layers) = 0;
virtual TCacheEntryBase* CreateTexture(const TCacheEntryConfig& config) = 0;
virtual void CompileShaders() = 0; // currently only implemented by OGL
virtual void DeleteShaders() = 0; // currently only implemented by OGL