Skip swapchain logic if there is nothing to present (Android OpenXR)
This commit is contained in:
@ -754,7 +754,6 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
if (blits.size() > 0) {
|
||||
RSG::rasterizer->blit_render_targets_to_screen(vp->viewport_to_screen, blits.ptr(), blits.size());
|
||||
}
|
||||
RSG::rasterizer->end_frame(true);
|
||||
} else if (blits.size() > 0) {
|
||||
if (!blit_to_screen_list.has(vp->viewport_to_screen)) {
|
||||
blit_to_screen_list[vp->viewport_to_screen] = Vector<BlitToScreen>();
|
||||
@ -764,6 +763,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
blit_to_screen_list[vp->viewport_to_screen].push_back(blits[b]);
|
||||
}
|
||||
}
|
||||
RSG::rasterizer->end_viewport(p_swap_buffers && blits.size() > 0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -793,10 +793,10 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
Vector<BlitToScreen> blit_to_screen_vec;
|
||||
blit_to_screen_vec.push_back(blit);
|
||||
RSG::rasterizer->blit_render_targets_to_screen(vp->viewport_to_screen, blit_to_screen_vec.ptr(), 1);
|
||||
RSG::rasterizer->end_frame(true);
|
||||
} else {
|
||||
blit_to_screen_list[vp->viewport_to_screen].push_back(blit);
|
||||
}
|
||||
RSG::rasterizer->end_viewport(p_swap_buffers);
|
||||
}
|
||||
}
|
||||
|
||||
@ -823,8 +823,8 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
|
||||
RENDER_TIMESTAMP("< Render Viewports");
|
||||
|
||||
if (p_swap_buffers) {
|
||||
//this needs to be called to make screen swapping more efficient
|
||||
if (p_swap_buffers && !blit_to_screen_list.is_empty()) {
|
||||
// This needs to be called to make screen swapping more efficient.
|
||||
RSG::rasterizer->prepare_for_blitting_render_targets();
|
||||
|
||||
for (const KeyValue<int, Vector<BlitToScreen>> &E : blit_to_screen_list) {
|
||||
|
||||
Reference in New Issue
Block a user