Commit 90a480a1001fdec2d4258f56d688fe9049e171e3

Sylvain 2022-09-08T05:44:39

Fixed bug #6199 - Broken clip behaviour on a render target (metal)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m
index b17bb45..fdd0438 100644
--- a/src/render/metal/SDL_render_metal.m
+++ b/src/render/metal/SDL_render_metal.m
@@ -1227,7 +1227,13 @@ SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, const SDL_Met
 
         /* Set Scissor Rect Validation: w/h must be <= render pass */
         SDL_zero(output);
-        METAL_GetOutputSize(renderer, &output.w, &output.h);
+
+        if (renderer->target) {
+            output.w = renderer->target->w;
+            output.h = renderer->target->h;
+        } else {
+            METAL_GetOutputSize(renderer, &output.w, &output.h);
+        }
 
         if (SDL_IntersectRect(&output, &clip, &clip)) {
             MTLScissorRect mtlrect;