summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-10-04 22:25:35 +1000
committerStenzek <stenzek@gmail.com>2016-10-04 22:30:37 +1000
commitdb09c05eecac461f33751c824546d12a46173945 (patch)
treee9f6641795850aeae4006f00337f785425c6afdd /Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp
parentea33405febf183058bb30a22f4f627fed4bb8e17 (diff)
Vulkan: Fix bug with palette converted EFB copies
This happened when the source texture was an EFB copy, therefore it had not been populated prior to the draw command buffer being executed, and the conversion was occurring in the init command list.
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp b/Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp
index f67ed33b28..b9a135cd7e 100644
--- a/Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp
+++ b/Source/Core/VideoBackends/Vulkan/PaletteTextureConverter.cpp
@@ -62,7 +62,9 @@ bool PaletteTextureConverter::Initialize()
return true;
}
-void PaletteTextureConverter::ConvertTexture(StateTracker* state_tracker, VkRenderPass render_pass,
+void PaletteTextureConverter::ConvertTexture(StateTracker* state_tracker,
+ VkCommandBuffer command_buffer,
+ VkRenderPass render_pass,
VkFramebuffer dst_framebuffer, Texture2D* src_texture,
u32 width, u32 height, void* palette,
TlutFormat format)
@@ -113,14 +115,14 @@ void PaletteTextureConverter::ConvertTexture(StateTracker* state_tracker, VkRend
&m_palette_buffer_view};
vkUpdateDescriptorSets(g_vulkan_context->GetDevice(), 1, &texel_set_write, 0, nullptr);
- Util::BufferMemoryBarrier(g_command_buffer_mgr->GetCurrentInitCommandBuffer(),
- m_palette_stream_buffer->GetBuffer(), VK_ACCESS_HOST_WRITE_BIT,
- VK_ACCESS_SHADER_READ_BIT, palette_offset, palette_size,
- VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
+ Util::BufferMemoryBarrier(command_buffer, m_palette_stream_buffer->GetBuffer(),
+ VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, palette_offset,
+ palette_size, VK_PIPELINE_STAGE_HOST_BIT,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
// Set up draw
- UtilityShaderDraw draw(g_command_buffer_mgr->GetCurrentInitCommandBuffer(), m_pipeline_layout,
- render_pass, g_object_cache->GetScreenQuadVertexShader(), VK_NULL_HANDLE,
+ UtilityShaderDraw draw(command_buffer, m_pipeline_layout, render_pass,
+ g_object_cache->GetScreenQuadVertexShader(), VK_NULL_HANDLE,
m_shaders[format]);
VkRect2D region = {{0, 0}, {width, height}};
@@ -138,8 +140,7 @@ void PaletteTextureConverter::ConvertTexture(StateTracker* state_tracker, VkRend
draw.SetPSSampler(0, src_texture->GetView(), g_object_cache->GetPointSampler());
// We have to bind the texel buffer descriptor set separately.
- vkCmdBindDescriptorSets(g_command_buffer_mgr->GetCurrentInitCommandBuffer(),
- VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipeline_layout, 0, 1,
+ vkCmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipeline_layout, 0, 1,
&texel_buffer_descriptor_set, 0, nullptr);
// Draw