mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 20:21:26 +00:00
- fix wipe screen when using -loadgame
This commit is contained in:
parent
1e3c3de7f4
commit
3b868dfb4d
2 changed files with 26 additions and 9 deletions
|
@ -716,11 +716,12 @@ void VulkanFrameBuffer::UpdatePalette()
|
|||
|
||||
FTexture *VulkanFrameBuffer::WipeStartScreen()
|
||||
{
|
||||
const auto &viewport = screen->mScreenViewport;
|
||||
auto tex = new FWrapperTexture(viewport.width, viewport.height, 1);
|
||||
SetViewportRects(nullptr);
|
||||
|
||||
auto tex = new FWrapperTexture(mScreenViewport.width, mScreenViewport.height, 1);
|
||||
auto systex = static_cast<VkHardwareTexture*>(tex->GetSystemTexture());
|
||||
|
||||
systex->CreateWipeTexture(viewport.width, viewport.height, "WipeStartScreen");
|
||||
systex->CreateWipeTexture(mScreenViewport.width, mScreenViewport.height, "WipeStartScreen");
|
||||
|
||||
return tex;
|
||||
}
|
||||
|
@ -731,11 +732,10 @@ FTexture *VulkanFrameBuffer::WipeEndScreen()
|
|||
Draw2D();
|
||||
Clear2D();
|
||||
|
||||
const auto &viewport = screen->mScreenViewport;
|
||||
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());
|
||||
|
||||
systex->CreateWipeTexture(viewport.width, viewport.height, "WipeEndScreen");
|
||||
systex->CreateWipeTexture(mScreenViewport.width, mScreenViewport.height, "WipeEndScreen");
|
||||
|
||||
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..
|
||||
// (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);
|
||||
transition.execute(fb->GetTransferCommands());
|
||||
|
||||
VkImageTransition transition0;
|
||||
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