Commit 3d3870982c9ab19fa2cf9cf2334a45df26304a9a

Ryan C. Gordon 2018-05-27T20:30:03

metal: contrary to documentation, we need to set the drawableSize explicitly. Fixes Bugzilla #4149.

diff --git a/src/video/cocoa/SDL_cocoametalview.m b/src/video/cocoa/SDL_cocoametalview.m
index e9c08a0..f28b743 100644
--- a/src/video/cocoa/SDL_cocoametalview.m
+++ b/src/video/cocoa/SDL_cocoametalview.m
@@ -66,11 +66,10 @@
         /* Allow resize. */
         self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
 
-        /* Set the desired scale. The default drawableSize of a CAMetalLayer
-         * is its bounds x its scale so nothing further needs to be done.
-         */
+        /* Set the desired scale. */
+        ((CAMetalLayer *) self.layer).drawableSize = NSSizeToCGSize([self bounds].size);
         self.layer.contentsScale = scale;
-	}
+    }
   
 	return self;
 }
diff --git a/src/video/uikit/SDL_uikitmetalview.m b/src/video/uikit/SDL_uikitmetalview.m
index 63adf7c..fd94300 100644
--- a/src/video/uikit/SDL_uikitmetalview.m
+++ b/src/video/uikit/SDL_uikitmetalview.m
@@ -49,8 +49,8 @@
 {
     if ((self = [super initWithFrame:frame])) {
         self.tag = METALVIEW_TAG;
-        /* Set the desired scale. The default drawableSize of a CAMetalLayer
-         * is its bounds x its scale so nothing further needs to be done. */
+        /* Set the desired scale. */
+        ((CAMetalLayer *) self.layer).drawableSize = self.bounds.size;
         self.layer.contentsScale = scale;
     }