mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Quick GE debugger stepping fix, after the recent vulkan swapchain acquire change
This commit is contained in:
parent
0e6e1eb93c
commit
fc84f25818
3 changed files with 11 additions and 6 deletions
|
@ -49,6 +49,7 @@ struct FrameData {
|
|||
|
||||
bool hasInitCommands = false;
|
||||
bool hasPresentCommands = false;
|
||||
bool hasAcquired = false;
|
||||
|
||||
std::vector<VKRStep *> steps;
|
||||
|
||||
|
|
|
@ -561,15 +561,16 @@ void VulkanQueueRunner::RunSteps(FrameData &frameData) {
|
|||
switch (step.stepType) {
|
||||
case VKRStepType::RENDER:
|
||||
if (!step.render.framebuffer) {
|
||||
_dbg_assert_(!frameData.hasPresentCommands);
|
||||
if (!frameData.hasPresentCommands) {
|
||||
frameData.hasPresentCommands = true;
|
||||
// When stepping in the GE debugger, we can end up here multiple times in a "frame".
|
||||
if (!frameData.hasAcquired) {
|
||||
frameData.hasAcquired = true;
|
||||
frameData.AcquireNextImage(vulkan_);
|
||||
SetBackbuffer(framebuffers_[frameData.curSwapchainImage], swapchainImages_[frameData.curSwapchainImage].image);
|
||||
VkCommandBufferBeginInfo begin{ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO };
|
||||
begin.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
vkBeginCommandBuffer(frameData.presentCmd, &begin);
|
||||
}
|
||||
VkCommandBufferBeginInfo begin{ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO };
|
||||
begin.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
vkBeginCommandBuffer(frameData.presentCmd, &begin);
|
||||
frameData.hasPresentCommands = true;
|
||||
PerformRenderPass(step, frameData.presentCmd);
|
||||
} else {
|
||||
PerformRenderPass(step, frameData.mainCmd);
|
||||
|
|
|
@ -1385,6 +1385,8 @@ void VulkanRenderManager::EndSubmitFrame(int frame) {
|
|||
present.pWaitSemaphores = &renderingCompleteSemaphore_;
|
||||
present.waitSemaphoreCount = 1;
|
||||
|
||||
_dbg_assert_(frameData.hasAcquired);
|
||||
|
||||
VkResult res = vkQueuePresentKHR(vulkan_->GetGraphicsQueue(), &present);
|
||||
if (res == VK_ERROR_OUT_OF_DATE_KHR) {
|
||||
// We clearly didn't get this in vkAcquireNextImageKHR because of the skipSwap check above.
|
||||
|
@ -1398,6 +1400,7 @@ void VulkanRenderManager::EndSubmitFrame(int frame) {
|
|||
// Success
|
||||
outOfDateFrames_ = 0;
|
||||
}
|
||||
frameData.hasAcquired = false;
|
||||
} else {
|
||||
// We only get here if vkAcquireNextImage returned VK_ERROR_OUT_OF_DATE.
|
||||
outOfDateFrames_++;
|
||||
|
|
Loading…
Add table
Reference in a new issue