Skip to content

Commit 9a956f5

Browse files
authored
renderer_vulkan: Clear blank frame (#2095)
* renderer_vulkan: Clear blank frame Fix display of garbage images on startup on some drivers. * Remove duplicated attachment declarations * Remove duplicated rendering_info declarations
1 parent 40385e1 commit 9a956f5

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

src/video_core/renderer_vulkan/vk_presenter.cpp

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,23 @@ Frame* Presenter::PrepareFrameInternal(VideoCore::ImageId image_id, bool is_eop)
602602
.pImageMemoryBarriers = &pre_barrier,
603603
});
604604

605+
const std::array attachments = {vk::RenderingAttachmentInfo{
606+
.imageView = frame->image_view,
607+
.imageLayout = vk::ImageLayout::eColorAttachmentOptimal,
608+
.loadOp = vk::AttachmentLoadOp::eClear,
609+
.storeOp = vk::AttachmentStoreOp::eStore,
610+
}};
611+
const vk::RenderingInfo rendering_info{
612+
.renderArea =
613+
vk::Rect2D{
614+
.offset = {0, 0},
615+
.extent = {frame->width, frame->height},
616+
},
617+
.layerCount = 1,
618+
.colorAttachmentCount = attachments.size(),
619+
.pColorAttachments = attachments.data(),
620+
};
621+
605622
if (image_id != VideoCore::NULL_IMAGE_ID) {
606623
auto& image = texture_cache.GetImage(image_id);
607624
image.Transit(vk::ImageLayout::eShaderReadOnlyOptimal, vk::AccessFlagBits2::eShaderRead, {},
@@ -662,26 +679,13 @@ Frame* Presenter::PrepareFrameInternal(VideoCore::ImageId image_id, bool is_eop)
662679
cmdbuf.pushConstants(*pp_pipeline_layout, vk::ShaderStageFlagBits::eFragment, 0,
663680
sizeof(PostProcessSettings), &pp_settings);
664681

665-
const std::array attachments = {vk::RenderingAttachmentInfo{
666-
.imageView = frame->image_view,
667-
.imageLayout = vk::ImageLayout::eColorAttachmentOptimal,
668-
.loadOp = vk::AttachmentLoadOp::eClear,
669-
.storeOp = vk::AttachmentStoreOp::eStore,
670-
}};
671-
672-
vk::RenderingInfo rendering_info{
673-
.renderArea =
674-
vk::Rect2D{
675-
.offset = {0, 0},
676-
.extent = {frame->width, frame->height},
677-
},
678-
.layerCount = 1,
679-
.colorAttachmentCount = attachments.size(),
680-
.pColorAttachments = attachments.data(),
681-
};
682682
cmdbuf.beginRendering(rendering_info);
683683
cmdbuf.draw(3, 1, 0, 0);
684684
cmdbuf.endRendering();
685+
} else {
686+
// Fix display of garbage images on startup on some drivers
687+
cmdbuf.beginRendering(rendering_info);
688+
cmdbuf.endRendering();
685689
}
686690

687691
const auto post_barrier =

0 commit comments

Comments
 (0)