summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-11-19 23:25:23 +1000
committerStenzek <stenzek@gmail.com>2016-12-04 20:10:13 +1000
commitadd638538b24f5c7273323538ee4dab0f0271a16 (patch)
treeeb49dc6eb7aeea93e87988c5f28e8634eb301c16 /Source/Core/VideoBackends/Vulkan/TextureCache.cpp
parent804af42cccd18fde08c58f38238c67de952ec5e0 (diff)
Vulkan: Combine PaletteTextureConverter and TextureEncoder classes
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/TextureCache.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/TextureCache.cpp36
1 files changed, 14 insertions, 22 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/TextureCache.cpp b/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
index 139221c9c0..3bb92fa3c2 100644
--- a/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
+++ b/Source/Core/VideoBackends/Vulkan/TextureCache.cpp
@@ -17,13 +17,12 @@
#include "VideoBackends/Vulkan/CommandBufferManager.h"
#include "VideoBackends/Vulkan/FramebufferManager.h"
#include "VideoBackends/Vulkan/ObjectCache.h"
-#include "VideoBackends/Vulkan/PaletteTextureConverter.h"
#include "VideoBackends/Vulkan/Renderer.h"
#include "VideoBackends/Vulkan/StagingTexture2D.h"
#include "VideoBackends/Vulkan/StateTracker.h"
#include "VideoBackends/Vulkan/StreamBuffer.h"
#include "VideoBackends/Vulkan/Texture2D.h"
-#include "VideoBackends/Vulkan/TextureEncoder.h"
+#include "VideoBackends/Vulkan/TextureConverter.h"
#include "VideoBackends/Vulkan/Util.h"
#include "VideoBackends/Vulkan/VulkanContext.h"
@@ -66,17 +65,10 @@ bool TextureCache::Initialize()
return false;
}
- m_texture_encoder = std::make_unique<TextureEncoder>();
- if (!m_texture_encoder->Initialize())
+ m_texture_converter = std::make_unique<TextureConverter>();
+ if (!m_texture_converter->Initialize())
{
- PanicAlert("Failed to initialize texture encoder.");
- return false;
- }
-
- m_palette_texture_converter = std::make_unique<PaletteTextureConverter>();
- if (!m_palette_texture_converter->Initialize())
- {
- PanicAlert("Failed to initialize palette texture converter");
+ PanicAlert("Failed to initialize texture converter");
return false;
}
@@ -112,7 +104,7 @@ void TextureCache::ConvertTexture(TCacheEntryBase* base_entry, TCacheEntryBase*
command_buffer = g_command_buffer_mgr->GetCurrentInitCommandBuffer();
}
- m_palette_texture_converter->ConvertTexture(
+ m_texture_converter->ConvertTexture(
command_buffer, GetRenderPassForTextureUpdate(entry->GetTexture()), entry->GetFramebuffer(),
unconverted->GetTexture(), entry->config.width, entry->config.height, palette, format,
unconverted->format);
@@ -156,9 +148,9 @@ void TextureCache::CopyEFB(u8* dst, u32 format, u32 native_width, u32 bytes_per_
src_texture->TransitionToLayout(g_command_buffer_mgr->GetCurrentCommandBuffer(),
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
- m_texture_encoder->EncodeTextureToRam(src_texture->GetView(), dst, format, native_width,
- bytes_per_row, num_blocks_y, memory_stride, src_format,
- is_intensity, scale_by_half, src_rect);
+ m_texture_converter->EncodeTextureToMemory(src_texture->GetView(), dst, format, native_width,
+ bytes_per_row, num_blocks_y, memory_stride, src_format,
+ is_intensity, scale_by_half, src_rect);
// Transition back to original state
src_texture->TransitionToLayout(g_command_buffer_mgr->GetCurrentCommandBuffer(), original_layout);
@@ -871,8 +863,8 @@ void TextureCache::EncodeYUYVTextureToMemory(void* dst_ptr, u32 dst_width, u32 d
src_texture->TransitionToLayout(command_buffer, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
// Borrow framebuffer from EFB2RAM encoder.
- Texture2D* encoding_texture = m_texture_encoder->GetEncodingTexture();
- StagingTexture2D* download_texture = m_texture_encoder->GetDownloadTexture();
+ Texture2D* encoding_texture = m_texture_converter->GetEncodingTexture();
+ StagingTexture2D* download_texture = m_texture_converter->GetDownloadTexture();
encoding_texture->TransitionToLayout(command_buffer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
// Use fragment shader to convert RGBA to YUYV.
@@ -882,10 +874,10 @@ void TextureCache::EncodeYUYVTextureToMemory(void* dst_ptr, u32 dst_width, u32 d
u32 output_width = dst_width / 2;
UtilityShaderDraw draw(
command_buffer, g_object_cache->GetPipelineLayout(PIPELINE_LAYOUT_STANDARD),
- m_texture_encoder->GetEncodingRenderPass(), g_object_cache->GetPassthroughVertexShader(),
+ m_texture_converter->GetEncodingRenderPass(), g_object_cache->GetPassthroughVertexShader(),
VK_NULL_HANDLE, m_rgb_to_yuyv_shader);
VkRect2D region = {{0, 0}, {output_width, dst_height}};
- draw.BeginRenderPass(m_texture_encoder->GetEncodingTextureFramebuffer(), region);
+ draw.BeginRenderPass(m_texture_converter->GetEncodingTextureFramebuffer(), region);
draw.SetPSSampler(0, src_texture->GetView(), g_object_cache->GetLinearSampler());
draw.DrawQuad(0, 0, static_cast<int>(output_width), static_cast<int>(dst_height), src_rect.left,
src_rect.top, 0, src_rect.GetWidth(), src_rect.GetHeight(),
@@ -942,7 +934,7 @@ void TextureCache::DecodeYUYVTextureFromMemory(TCacheEntry* dst_texture, const v
{src_width / 2, src_height, 1} // VkExtent3D imageExtent
};
VkCommandBuffer command_buffer = g_command_buffer_mgr->GetCurrentCommandBuffer();
- Texture2D* intermediate_texture = m_texture_encoder->GetEncodingTexture();
+ Texture2D* intermediate_texture = m_texture_converter->GetEncodingTexture();
intermediate_texture->TransitionToLayout(command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
vkCmdCopyBufferToImage(command_buffer, m_texture_upload_buffer->GetBuffer(),
intermediate_texture->GetImage(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1,
@@ -955,7 +947,7 @@ void TextureCache::DecodeYUYVTextureFromMemory(TCacheEntry* dst_texture, const v
// Convert from the YUYV data now in the intermediate texture to RGBA in the destination.
UtilityShaderDraw draw(
command_buffer, g_object_cache->GetPipelineLayout(PIPELINE_LAYOUT_STANDARD),
- m_texture_encoder->GetEncodingRenderPass(), g_object_cache->GetScreenQuadVertexShader(),
+ m_texture_converter->GetEncodingRenderPass(), g_object_cache->GetScreenQuadVertexShader(),
VK_NULL_HANDLE, m_yuyv_to_rgb_shader);
VkRect2D region = {{0, 0}, {src_width, src_height}};
draw.BeginRenderPass(dst_texture->GetFramebuffer(), region);