Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/common/rendering/vulkan/shaders/vk_shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ static const char *shaderBindings = R"(
#endif

// This must match the HWViewpointUniforms struct
layout(set = 1, binding = 0, std140) uniform ViewpointUBO {
layout(set = 1, binding = 0, std140) uniform readonly ViewpointUBO {
mat4 ProjectionMatrix;
mat4 ViewMatrix;
mat4 NormalViewMatrix;
Expand All @@ -209,7 +209,7 @@ static const char *shaderBindings = R"(
float uThickFogMultiplier;
};

layout(set = 1, binding = 1, std140) uniform MatricesUBO {
layout(set = 1, binding = 1, std140) uniform readonly MatricesUBO {
mat4 ModelMatrix;
mat4 NormalModelMatrix;
mat4 TextureMatrix;
Expand Down Expand Up @@ -248,18 +248,18 @@ static const char *shaderBindings = R"(
vec4 padding1, padding2, padding3;
};

layout(set = 1, binding = 2, std140) uniform StreamUBO {
layout(set = 1, binding = 2, std140) uniform readonly StreamUBO {
StreamData data[MAX_STREAM_DATA];
};

// light buffers
layout(set = 1, binding = 3, std430) buffer LightBufferSSO
layout(set = 1, binding = 3, std430) buffer readonly LightBufferSSO
{
vec4 lights[];
};

// bone matrix buffers
layout(set = 1, binding = 4, std430) buffer BoneBufferSSO
layout(set = 1, binding = 4, std430) buffer readonly BoneBufferSSO
{
mat4 bones[];
};
Expand Down
7 changes: 4 additions & 3 deletions src/common/rendering/vulkan/system/vk_commandbuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,11 @@ void VkCommandBufferManager::FlushCommands(VulkanCommandBuffer** commands, size_
if (mNextSubmit > 0)
submit.AddWait(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, mSubmitSemaphore[(mNextSubmit - 1) % maxConcurrentSubmitCount].get());

if (finish && fb->GetFramebufferManager()->PresentImageIndex != -1)
auto framebuffers = fb->GetFramebufferManager();
if (finish && framebuffers->PresentImageIndex != -1)
{
submit.AddWait(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, fb->GetFramebufferManager()->SwapChainImageAvailableSemaphore.get());
submit.AddSignal(fb->GetFramebufferManager()->RenderFinishedSemaphore.get());
submit.AddWait(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, framebuffers->SwapChainImageAvailableSemaphore.get());
submit.AddSignal(framebuffers->RenderFinishedSemaphores[framebuffers->PresentImageIndex].get());
}

if (!lastsubmit)
Expand Down
14 changes: 9 additions & 5 deletions src/common/rendering/vulkan/textures/vk_framebuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,6 @@ VkFramebufferManager::VkFramebufferManager(VulkanRenderDevice* fb) : fb(fb)
SwapChainImageAvailableSemaphore = SemaphoreBuilder()
.DebugName("SwapChainImageAvailableSemaphore")
.Create(fb->device.get());

RenderFinishedSemaphore = SemaphoreBuilder()
.DebugName("RenderFinishedSemaphore")
.Create(fb->device.get());
}

VkFramebufferManager::~VkFramebufferManager()
Expand All @@ -63,6 +59,14 @@ void VkFramebufferManager::AcquireImage()
CurrentExclusiveFullscreen = exclusiveFullscreen;

SwapChain->Create(CurrentWidth, CurrentHeight, CurrentVSync ? 2 : 3, CurrentVSync, CurrentHdr, CurrentExclusiveFullscreen);

RenderFinishedSemaphores.clear();
for (int i = 0; i < SwapChain->ImageCount(); i++)
{
RenderFinishedSemaphores.push_back(SemaphoreBuilder()
.DebugName("RenderFinishedSemaphore")
.Create(fb->device.get()));
}
}

PresentImageIndex = SwapChain->AcquireImage(SwapChainImageAvailableSemaphore.get());
Expand All @@ -75,5 +79,5 @@ void VkFramebufferManager::AcquireImage()
void VkFramebufferManager::QueuePresent()
{
if (PresentImageIndex != -1)
SwapChain->QueuePresent(PresentImageIndex, RenderFinishedSemaphore.get());
SwapChain->QueuePresent(PresentImageIndex, RenderFinishedSemaphores[PresentImageIndex].get());
}
3 changes: 2 additions & 1 deletion src/common/rendering/vulkan/textures/vk_framebuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "zvulkan/vulkanobjects.h"
#include <array>
#include <map>
#include <vector>

class VulkanRenderDevice;
enum class PPFilterMode;
Expand All @@ -24,7 +25,7 @@ class VkFramebufferManager
int PresentImageIndex = -1;

std::unique_ptr<VulkanSemaphore> SwapChainImageAvailableSemaphore;
std::unique_ptr<VulkanSemaphore> RenderFinishedSemaphore;
std::vector<std::unique_ptr<VulkanSemaphore>> RenderFinishedSemaphores;

private:
VulkanRenderDevice* fb = nullptr;
Expand Down