mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 14:01:45 +00:00
- fix wipe screen when using -loadgame
This commit is contained in:
parent
037b69c8a7
commit
8853872bb4
2 changed files with 26 additions and 9 deletions
|
@ -716,11 +716,12 @@ void VulkanFrameBuffer::UpdatePalette()
|
||||||
|
|
||||||
FTexture *VulkanFrameBuffer::WipeStartScreen()
|
FTexture *VulkanFrameBuffer::WipeStartScreen()
|
||||||
{
|
{
|
||||||
const auto &viewport = screen->mScreenViewport;
|
SetViewportRects(nullptr);
|
||||||
auto tex = new FWrapperTexture(viewport.width, viewport.height, 1);
|
|
||||||
|
auto tex = new FWrapperTexture(mScreenViewport.width, mScreenViewport.height, 1);
|
||||||
auto systex = static_cast<VkHardwareTexture*>(tex->GetSystemTexture());
|
auto systex = static_cast<VkHardwareTexture*>(tex->GetSystemTexture());
|
||||||
|
|
||||||
systex->CreateWipeTexture(viewport.width, viewport.height, "WipeStartScreen");
|
systex->CreateWipeTexture(mScreenViewport.width, mScreenViewport.height, "WipeStartScreen");
|
||||||
|
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
@ -731,11 +732,10 @@ FTexture *VulkanFrameBuffer::WipeEndScreen()
|
||||||
Draw2D();
|
Draw2D();
|
||||||
Clear2D();
|
Clear2D();
|
||||||
|
|
||||||
const auto &viewport = screen->mScreenViewport;
|
auto tex = new FWrapperTexture(mScreenViewport.width, mScreenViewport.height, 1);
|
||||||
auto tex = new FWrapperTexture(viewport.width, viewport.height, 1);
|
|
||||||
auto systex = static_cast<VkHardwareTexture*>(tex->GetSystemTexture());
|
auto systex = static_cast<VkHardwareTexture*>(tex->GetSystemTexture());
|
||||||
|
|
||||||
systex->CreateWipeTexture(viewport.width, viewport.height, "WipeEndScreen");
|
systex->CreateWipeTexture(mScreenViewport.width, mScreenViewport.height, "WipeEndScreen");
|
||||||
|
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,8 +382,25 @@ void VkHardwareTexture::CreateWipeTexture(int w, int h, const char *name)
|
||||||
{
|
{
|
||||||
// hwrenderer asked image data from a frame buffer that was never written into. Let's give it that..
|
// hwrenderer asked image data from a frame buffer that was never written into. Let's give it that..
|
||||||
// (ideally the hwrenderer wouldn't do this, but the calling code is too complex for me to fix)
|
// (ideally the hwrenderer wouldn't do this, but the calling code is too complex for me to fix)
|
||||||
VkImageTransition transition;
|
|
||||||
transition.addImage(&mImage, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, true);
|
VkImageTransition transition0;
|
||||||
transition.execute(fb->GetTransferCommands());
|
transition0.addImage(&mImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, true);
|
||||||
|
transition0.execute(fb->GetTransferCommands());
|
||||||
|
|
||||||
|
VkImageSubresourceRange range = {};
|
||||||
|
range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||||
|
range.layerCount = 1;
|
||||||
|
range.levelCount = 1;
|
||||||
|
|
||||||
|
VkClearColorValue value = {};
|
||||||
|
value.float32[0] = 0.0f;
|
||||||
|
value.float32[1] = 0.0f;
|
||||||
|
value.float32[2] = 0.0f;
|
||||||
|
value.float32[3] = 1.0f;
|
||||||
|
fb->GetTransferCommands()->clearColorImage(mImage.Image->image, mImage.Layout, &value, 1, &range);
|
||||||
|
|
||||||
|
VkImageTransition transition1;
|
||||||
|
transition1.addImage(&mImage, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, false);
|
||||||
|
transition1.execute(fb->GetTransferCommands());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue