summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-12-09 22:23:07 +1000
committerStenzek <stenzek@gmail.com>2017-04-01 12:32:57 +1000
commit739aced97c954397a1d2a50fd75143a45c3759c5 (patch)
tree06d185463328a27e84f9ec6058611849b1b66d43 /Source/Core/VideoBackends/Vulkan/TextureCache.cpp
parent5fbc63fbcf15e385f5ff9c4cde16e8c4bdb816c2 (diff)
Vulkan: Implement compute-shader based GPU texture decoding
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/TextureCache.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/TextureCache.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/TextureCache.cpp b/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
index 5a73106476..b951b78aa2 100644
--- a/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
+++ b/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
@@ -138,6 +138,21 @@ void TextureCache::CopyRectangleFromTexture(TCacheEntry* dst_texture,
ScaleTextureRectangle(dst_texture, dst_rect, src_texture, src_rect);
}
+bool TextureCache::SupportsGPUTextureDecode(TextureFormat format, TlutFormat palette_format)
+{
+ return m_texture_converter->SupportsTextureDecoding(format, palette_format);
+}
+
+void TextureCache::DecodeTextureOnGPU(TCacheEntryBase* entry, u32 dst_level, const u8* data,
+ size_t data_size, TextureFormat format, u32 width, u32 height,
+ u32 aligned_width, u32 aligned_height, u32 row_stride,
+ const u8* palette, TlutFormat palette_format)
+{
+ m_texture_converter->DecodeTexture(static_cast<TCacheEntry*>(entry), dst_level, data, data_size,
+ format, width, height, aligned_width, aligned_height,
+ row_stride, palette, palette_format);
+}
+
void TextureCache::CopyTextureRectangle(TCacheEntry* dst_texture,
const MathUtil::Rectangle<int>& dst_rect,
Texture2D* src_texture,