diff options
| author | Mat M <mathew1800@gmail.com> | 2016-12-23 04:33:42 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-23 04:33:42 -0500 |
| commit | 9160be50dbfa31073eda0148378786f69b219805 (patch) | |
| tree | 579bca3b98e8dd47ec3b18911504a669a2853cf9 /Source/Core/VideoBackends | |
| parent | f2322bee90c1bd973a6cc4e99d4df78c7d2d0027 (diff) | |
| parent | 58a53951735aba77899ea8f8910a6b68dc52449a (diff) | |
Merge pull request #4224 from lioncash/tcache
TextureCacheBase: Eliminate static state
Diffstat (limited to 'Source/Core/VideoBackends')
| -rw-r--r-- | Source/Core/VideoBackends/D3D/Render.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D/TextureCache.cpp | 7 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D/TextureCache.h | 3 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/Render.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/TextureCache.cpp | 8 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/TextureCache.h | 3 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Null/TextureCache.h | 6 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/TextureCache.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/TextureCache.h | 3 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWmain.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/Renderer.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/TextureCache.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/TextureCache.h | 4 |
14 files changed, 28 insertions, 40 deletions
diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index aa9a4501e7..df9335265a 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -841,11 +841,11 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, OSD::DrawMessages(); D3D::EndFrame(); - TextureCacheBase::Cleanup(frameCount); + g_texture_cache->Cleanup(frameCount); // Enable configuration changes UpdateActiveConfig(); - TextureCacheBase::OnConfigChanged(g_ActiveConfig); + g_texture_cache->OnConfigChanged(g_ActiveConfig); SetWindowSize(fbStride, fbHeight); diff --git a/Source/Core/VideoBackends/D3D/TextureCache.cpp b/Source/Core/VideoBackends/D3D/TextureCache.cpp index 0fa7ec873c..55694dd1b8 100644 --- a/Source/Core/VideoBackends/D3D/TextureCache.cpp +++ b/Source/Core/VideoBackends/D3D/TextureCache.cpp @@ -127,12 +127,11 @@ void TextureCache::TCacheEntry::CopyRectangleFromTexture(const TCacheEntryBase* g_renderer->RestoreAPIState(); } -void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, - unsigned int expanded_width, unsigned int level) +void TextureCache::TCacheEntry::Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, + u32 level) { unsigned int src_pitch = 4 * expanded_width; - D3D::ReplaceRGBATexture2D(texture->GetTex(), TextureCache::temp, width, height, src_pitch, level, - usage); + D3D::ReplaceRGBATexture2D(texture->GetTex(), buffer, width, height, src_pitch, level, usage); } TextureCacheBase::TCacheEntryBase* TextureCache::CreateTexture(const TCacheEntryConfig& config) diff --git a/Source/Core/VideoBackends/D3D/TextureCache.h b/Source/Core/VideoBackends/D3D/TextureCache.h index 9fc5d0876c..90e20ea0c3 100644 --- a/Source/Core/VideoBackends/D3D/TextureCache.h +++ b/Source/Core/VideoBackends/D3D/TextureCache.h @@ -32,8 +32,7 @@ private: const MathUtil::Rectangle<int>& srcrect, const MathUtil::Rectangle<int>& dstrect) override; - void Load(unsigned int width, unsigned int height, unsigned int expanded_width, - unsigned int levels) override; + void Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, u32 levels) override; void FromRenderTarget(u8* dst, PEControl::PixelFormat srcFormat, const EFBRectangle& srcRect, bool scaleByHalf, unsigned int cbufid, const float* colmat) override; diff --git a/Source/Core/VideoBackends/D3D12/Render.cpp b/Source/Core/VideoBackends/D3D12/Render.cpp index be65d04f4b..d5a2baa661 100644 --- a/Source/Core/VideoBackends/D3D12/Render.cpp +++ b/Source/Core/VideoBackends/D3D12/Render.cpp @@ -794,11 +794,11 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height OSD::DrawMessages(); D3D::EndFrame(); - TextureCacheBase::Cleanup(frameCount); + g_texture_cache->Cleanup(frameCount); // Enable configuration changes UpdateActiveConfig(); - TextureCacheBase::OnConfigChanged(g_ActiveConfig); + g_texture_cache->OnConfigChanged(g_ActiveConfig); SetWindowSize(fb_stride, fb_height); diff --git a/Source/Core/VideoBackends/D3D12/TextureCache.cpp b/Source/Core/VideoBackends/D3D12/TextureCache.cpp index 322cec9b1d..deb3bab6e7 100644 --- a/Source/Core/VideoBackends/D3D12/TextureCache.cpp +++ b/Source/Core/VideoBackends/D3D12/TextureCache.cpp @@ -172,12 +172,12 @@ void TextureCache::TCacheEntry::CopyRectangleFromTexture(const TCacheEntryBase* g_renderer->RestoreAPIState(); } -void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, - unsigned int expanded_width, unsigned int level) +void TextureCache::TCacheEntry::Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, + u32 level) { unsigned int src_pitch = 4 * expanded_width; - D3D::ReplaceRGBATexture2D(m_texture->GetTex12(), TextureCache::temp, width, height, src_pitch, - level, m_texture->GetResourceUsageState()); + D3D::ReplaceRGBATexture2D(m_texture->GetTex12(), buffer, width, height, src_pitch, level, + m_texture->GetResourceUsageState()); } TextureCacheBase::TCacheEntryBase* TextureCache::CreateTexture(const TCacheEntryConfig& config) diff --git a/Source/Core/VideoBackends/D3D12/TextureCache.h b/Source/Core/VideoBackends/D3D12/TextureCache.h index d8b20a4911..6a5fbcd2cc 100644 --- a/Source/Core/VideoBackends/D3D12/TextureCache.h +++ b/Source/Core/VideoBackends/D3D12/TextureCache.h @@ -39,8 +39,7 @@ private: const MathUtil::Rectangle<int>& src_rect, const MathUtil::Rectangle<int>& dst_rect) override; - void Load(unsigned int width, unsigned int height, unsigned int expanded_width, - unsigned int levels) override; + void Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, u32 levels) override; void FromRenderTarget(u8* dst, PEControl::PixelFormat src_format, const EFBRectangle& src_rect, bool scale_by_half, unsigned int cbuf_id, const float* colmat) override; diff --git a/Source/Core/VideoBackends/Null/TextureCache.h b/Source/Core/VideoBackends/Null/TextureCache.h index 7c51133c6a..886217e91f 100644 --- a/Source/Core/VideoBackends/Null/TextureCache.h +++ b/Source/Core/VideoBackends/Null/TextureCache.h @@ -31,11 +31,7 @@ private: { TCacheEntry(const TCacheEntryConfig& _config) : TCacheEntryBase(_config) {} ~TCacheEntry() {} - void Load(unsigned int width, unsigned int height, unsigned int expanded_width, - unsigned int level) override - { - } - + void Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, u32 level) override {} void FromRenderTarget(u8* dst, PEControl::PixelFormat src_format, const EFBRectangle& src_rect, bool scale_by_half, unsigned int cbufid, const float* colmat) override { diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 70fc43a981..c3416f2b4d 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -1506,7 +1506,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, } // Clean out old stuff from caches. It's not worth it to clean out the shader caches. - TextureCache::Cleanup(frameCount); + g_texture_cache->Cleanup(frameCount); // Render to the framebuffer. FramebufferManager::SetFramebuffer(0); @@ -1516,7 +1516,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, g_Config.iSaveTargetId = 0; UpdateActiveConfig(); - TextureCache::OnConfigChanged(g_ActiveConfig); + g_texture_cache->OnConfigChanged(g_ActiveConfig); // For testing zbuffer targets. // Renderer::SetZBufferRender(); diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index 50c729d45e..20c3f488cc 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -178,8 +178,8 @@ void TextureCache::TCacheEntry::CopyRectangleFromTexture(const TCacheEntryBase* g_renderer->RestoreAPIState(); } -void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, - unsigned int expanded_width, unsigned int level) +void TextureCache::TCacheEntry::Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, + u32 level) { if (level >= config.levels) PanicAlert("Texture only has %d levels, can't update level %d", config.levels, level); @@ -196,7 +196,7 @@ void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, glPixelStorei(GL_UNPACK_ROW_LENGTH, expanded_width); glTexImage3D(GL_TEXTURE_2D_ARRAY, level, GL_RGBA, width, height, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, - temp); + buffer); if (expanded_width != width) glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); diff --git a/Source/Core/VideoBackends/OGL/TextureCache.h b/Source/Core/VideoBackends/OGL/TextureCache.h index 0007cf1deb..ae4d15ad0a 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.h +++ b/Source/Core/VideoBackends/OGL/TextureCache.h @@ -39,8 +39,7 @@ private: const MathUtil::Rectangle<int>& srcrect, const MathUtil::Rectangle<int>& dstrect) override; - void Load(unsigned int width, unsigned int height, unsigned int expanded_width, - unsigned int level) override; + void Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, u32 level) override; void FromRenderTarget(u8* dst, PEControl::PixelFormat srcFormat, const EFBRectangle& srcRect, bool scaleByHalf, unsigned int cbufid, const float* colmat) override; diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp index 1ecd9517c8..44d0475ca9 100644 --- a/Source/Core/VideoBackends/Software/SWmain.cpp +++ b/Source/Core/VideoBackends/Software/SWmain.cpp @@ -64,11 +64,7 @@ private: { TCacheEntry(const TCacheEntryConfig& _config) : TCacheEntryBase(_config) {} ~TCacheEntry() {} - void Load(unsigned int width, unsigned int height, unsigned int expanded_width, - unsigned int level) override - { - } - + void Load(const u8* buffer, u32 width, u32 height, u32 expanded_width, u32 level) override {} void FromRenderTarget(u8* dst, PEControl::PixelFormat srcFormat, const EFBRectangle& srcRect, bool scaleByHalf, unsigned int cbufid, const float* colmat) override { diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp index 2fe7f56687..9c558aa9f9 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp +++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp @@ -559,7 +559,7 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height CheckForTargetResize(fb_width, fb_stride, fb_height); // Clean up stale textures. - TextureCacheBase::Cleanup(frameCount); + TextureCache::GetInstance()->Cleanup(frameCount); } void Renderer::DrawFrame(VkRenderPass render_pass, const TargetRectangle& target_rect, @@ -1112,7 +1112,7 @@ void Renderer::CheckForConfigChanges() bool aspect_changed = old_aspect_ratio != g_ActiveConfig.iAspectRatio; // Update texture cache settings with any changed options. - TextureCache::OnConfigChanged(g_ActiveConfig); + TextureCache::GetInstance()->OnConfigChanged(g_ActiveConfig); // Handle internal resolution changes. if (efb_scale_changed) diff --git a/Source/Core/VideoBackends/Vulkan/TextureCache.cpp b/Source/Core/VideoBackends/Vulkan/TextureCache.cpp index a860e8601d..984aa95db9 100644 --- a/Source/Core/VideoBackends/Vulkan/TextureCache.cpp +++ b/Source/Core/VideoBackends/Vulkan/TextureCache.cpp @@ -328,7 +328,7 @@ TextureCache::TCacheEntry::~TCacheEntry() g_command_buffer_mgr->DeferFramebufferDestruction(m_framebuffer); } -void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, +void TextureCache::TCacheEntry::Load(const u8* buffer, unsigned int width, unsigned int height, unsigned int expanded_width, unsigned int level) { // Can't copy data larger than the texture extents. @@ -383,7 +383,7 @@ void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, u8* image_upload_buffer_pointer = upload_buffer->GetCurrentHostPointer(); // Copy to the buffer using the stride from the subresource layout - const u8* source_ptr = TextureCache::temp; + const u8* source_ptr = buffer; if (upload_pitch != source_pitch) { VkDeviceSize copy_pitch = std::min(source_pitch, upload_pitch); @@ -429,7 +429,7 @@ void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, } // Copy data to staging texture first, then to the "real" texture. - staging_texture->WriteTexels(0, 0, width, height, TextureCache::temp, source_pitch); + staging_texture->WriteTexels(0, 0, width, height, buffer, source_pitch); staging_texture->CopyToImage(g_command_buffer_mgr->GetCurrentInitCommandBuffer(), m_texture->GetImage(), VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, width, height, level, 0); diff --git a/Source/Core/VideoBackends/Vulkan/TextureCache.h b/Source/Core/VideoBackends/Vulkan/TextureCache.h index 4b60d39272..399632c1b2 100644 --- a/Source/Core/VideoBackends/Vulkan/TextureCache.h +++ b/Source/Core/VideoBackends/Vulkan/TextureCache.h @@ -27,8 +27,8 @@ public: Texture2D* GetTexture() const { return m_texture.get(); } VkFramebuffer GetFramebuffer() const { return m_framebuffer; } - void Load(unsigned int width, unsigned int height, unsigned int expanded_width, - unsigned int level) override; + void Load(const u8* buffer, unsigned int width, unsigned int height, + unsigned int expanded_width, unsigned int level) override; void FromRenderTarget(u8* dst, PEControl::PixelFormat src_format, const EFBRectangle& src_rect, bool scale_by_half, unsigned int cbufid, const float* colmat) override; void CopyRectangleFromTexture(const TCacheEntryBase* source, |
