Browse Source

metal: Make sure we have a command buffer available before trying to present.

This fixes a case where you render to the backbuffer, then render to a render
target, set the current target back to the backbuffer, and then present
without drawing anything else; in this circumstance, the Present command
would never happen.

Fixes Bugzilla #5011.
Ryan C. Gordon 4 years ago
parent
commit
b7a4fdd318
1 changed files with 2 additions and 0 deletions
  1. 2 0
      src/render/metal/SDL_render_metal.m

+ 2 - 0
src/render/metal/SDL_render_metal.m

@@ -1518,6 +1518,8 @@ METAL_RenderPresent(SDL_Renderer * renderer)
 { @autoreleasepool {
     METAL_RenderData *data = (__bridge METAL_RenderData *) renderer->driverdata;
 
+    METAL_ActivateRenderCommandEncoder(renderer, MTLLoadActionLoad, NULL, nil);
+
     if (data.mtlcmdencoder != nil) {
         [data.mtlcmdencoder endEncoding];
     }