src/render/SDL_render.c


Log

Author Commit Date CI Message
Sam Lantinga dd72f3f0 2022-10-24T10:37:43 Added comment for #endif
Steven Noonan 3d35c085 2022-10-02T17:30:03 fix a few 'unused but set variable' and 'unused function' warnings
Sam Lantinga aefc6b5b 2022-10-18T08:40:03 Renamed variables, index is the singular of indices
Sylvain e8a4c23c 2022-10-18T10:45:01 Revert commit 790fa3156cfee847a7c0b34986de0cd7fdd7438f. SDL_BLENDMODE_INVALID case is probably used for custom blendmode
Sylvain 790fa315 2022-10-18T10:41:10 Fix warning: enumeration value 'SDL_BLENDMODE_INVALID' not explicitly handled in switch
Sylvain 3d99d310 2022-10-18T10:34:56 Fixed bug #6401 - back-end can choose the order the triangles when rendering rects, attempt to fix small glitch rendering.
Sylvain 285cbf6f 2022-10-18T10:04:06 Revert commit 485bb3565b6da24620e4eedde837fbfbc5cee6d2. "Fixed bug #6401 - change the order of triangles when using RenderCopy, RenderCopyEx and RenderFillRect" because the glitch reappears on other backend
Sylvain 485bb356 2022-10-17T13:30:30 Fixed bug #6401 - change the order of triangles when using RenderCopy, RenderCopyEx and RenderFillRect
Sam Lantinga e2753e19 2022-09-15T08:02:14 Calculate simulated vsync interval based on display refresh rate
Sam Lantinga 208964f0 2022-09-15T07:05:55 Reset the simulated vsync presentation timeline if it's been too long since the last present
Sam Lantinga 1663cb41 2022-09-15T06:30:19 Reset simulated presentation timeline when vsync status changes
Sam Lantinga d744aafb 2022-09-15T01:00:12 Added support for simulated vsync in the renderer This kicks in if the platform doesn't support vsync directly, or if the present fails for some reason (e.g. minimized on some platforms) Fixes https://github.com/libsdl-org/SDL/issues/5134
Sam Lantinga 50c5d23f 2022-08-23T07:42:48 Round coordinates so very small floating point values don't turn into 0x80000000 e.g. SDL_RenderDrawLineF(renderer, -1e20, -1e20, 10, 10); Fixes https://github.com/libsdl-org/SDL/issues/6116
Ethan Lee a28f426a 2022-08-12T16:13:24 render: Only update size/scale/viewport when moving to a new display, rather than all window movement. We really only care about DPI changes here, so this both reduces work and also avoids weird cases where viewport state can be corrupted by trivial window events. This doesn't _completely_ get rid of the issue but this is somewhat intentional, since apps will definitely want to do a full reset when changing displays anyhow (otherwise DPI/adapter changes will screw things up, and that's out of our control as long as both window size and drawable size are exposed at the same time. Note that OpenGL still captures window events because of weird platform-specific issues like macOS and viewport stretching! Fixes #5949
Daniel Santos 147a71b9 2022-06-30T12:57:37 Finish dummy driver
Daniel Santos 2660449c 2022-06-30T11:44:35 Add dummy driver
Sylvain 314bb5a1 2022-06-27T14:45:14 Fixed bug #5850: Android EGL_BAD_ACCESS because of viewport command while turning the screen off/on.
Sam Lantinga adc68758 2022-06-17T10:22:28 Added SDL_copyp to avoid size mismatch when copying values (thanks @1bsyl!) Closes https://github.com/libsdl-org/SDL/pull/5811
Ryan C. Gordon ded6c22e 2022-06-14T14:09:13 render: Corrected wrong SDL_memcpy() sizes for viewport, cliprect. Fixes #5786.
Sylvain 2cc22604 2022-06-07T16:30:01 Fixed bug #5768 - SDL_RenderGeometry's software backend failed to render when texture coordinates are reversed handle flip vertical/horizontal when reconstructing rects from triangles
chalonverse 40828218 2022-06-06T17:42:30 DirectX 12 Renderer (#5761) * DirectX 12 Renderer (27 squashed commits) * Add missing SDL_hidapi.h of merge of SDL.vcxproj.filters * Fixed OpenWatcom build failure * Dynapi fix Co-authored-by: Ryan C. Gordon <icculus@icculus.org>
Eddy Jansson 9e5cbf03 2022-04-29T22:36:12 Disallow non-positive allocation. Ensure that we're not trying to call SDL_small_alloc() with a count of zero. Transforming the code like this fixes a -Wmaybe-uninitialized warning from GCC 12.0.1
Sam Lantinga b9fe6ba0 2022-04-18T13:08:04 Fixed compile warnings
Sylvain 1ede941f 2022-04-18T21:09:48 SDL_render.c: internally change viewport/cliprect type from SDL_FRect to SDL_DRect (double precision). (see bug #5547)
pionere 0adb6701 2022-04-12T09:01:17 avoid NullPointer in SDL_GetRenderTarget
Ethan Lee cb816308 2022-04-08T02:21:52 render: Update the size/scale/viewport on moves, in addition to resizes. For OpenGL this means resetting the viewport state shadowing flag too. Fixes #1504
Cameron Cawley 57118fb7 2022-04-02T13:49:50 render: Fix setting the scale mode for non-native textures
Mathieu Eyraud 1db47d46 2022-03-28T15:39:13 Fix potential memory leak in QueueCmdFillRects
Ryan C. Gordon 4fe7b2cb 2022-03-24T11:00:43 static analysis: Fixed several complaints from codechecker. There are still some pending Objective-C specific issues. Reference issue #4600.
Sylvain Becker c23a7ad3 2022-03-23T17:07:56 Add SDL_RenderGetWindow() API to get the window associated with a renderer (#5440) Add SDL_RenderGetWindow() API to get the window associated with a renderer
Sylvain 83df4a35 2022-03-22T15:25:01 SDL_render.c: remove unsused case, since renderer target has been forced to NULL previously (see bug #4213)
Sylvain 9dc201d4 2022-03-21T10:41:14 Fixed bug #2962 - when SDL_RenderReadPixels format = 0, used format of the target texture include/SDL_render.h, format: "0 to use the format of the rendering target "
Ryan C. Gordon d81fee76 2022-03-19T10:27:31 SDL_Rect: Added floating point versions of all the rectangle APIs. Fixes #5110.
Sylvain 18b76fcc 2022-02-15T11:33:56 Fixed bug #3070 - SDL_RenderCopyEx rotation and global scaling around the wrong way (software renderer)
pionere 6d5592a2 2022-02-05T12:02:54 minor cleanup of SDL_CreateRenderer
pionere ebdd5366 2022-01-17T16:26:02 use SDL_InvalidParamError or SDL_assert instead of custom SDL_SetError
Sam Lantinga a29d3acc 2022-01-09T11:11:34 Updated Bresenham line drawing to match software renderer output
Sam Lantinga 1f32dd8e 2022-01-09T06:36:18 Fixed overdraw with duplicate points, fixed not drawing single point lines
Sam Lantinga 3b083b99 2022-01-08T14:07:42 Fixed compile warning
Sam Lantinga 4ef2529b 2022-01-08T12:37:57 More efficient calculation of render_count
Sam Lantinga 5346c93b 2022-01-08T12:28:43 Fixed assertion on number of points rendered
Sam Lantinga 4b719620 2022-01-08T12:02:08 Prevent overdraw with connected line segments
Sam Lantinga 09ece861 2022-01-08T11:36:29 Added the hint SDL_HINT_RENDER_LINE_METHOD to select the line rendering method
Sam Lantinga c1e60798 2022-01-08T11:09:11 As an optimization, draw horizontal and vertical lines using rectangles
Sam Lantinga 3da7c630 2022-01-08T11:07:03 Assert that we have drawn the expected number of points
Sam Lantinga 9f56faee 2022-01-08T10:59:31 Added line drawing using Bresenham's line algorithm (thanks @rtrussell!)
Sam Lantinga fe3a33a0 2022-01-08T10:10:18 Use RenderGeometry for drawing lines at all scales
Sam Lantinga 1694782b 2022-01-08T09:32:23 Remove redundant work when render scale is 1.0
Sam Lantinga 2026a78d 2022-01-08T09:23:58 Don't flush in RenderDraw*WithRects() This allows these functions to be reused in the future for other primitives
Ryan C. Gordon cc201337 2022-01-07T20:20:57 render: Fixed some compiler warnings. Fixes #5197.
Sylvain 8ea8b2e6 2022-01-07T22:42:13 Use QueueDrawLine if provided, otherwise use RenderGeometry
Sylvain Becker c4987274 2022-01-07T22:14:28 render: Use RenderGeometry to draw lines This patch is from @1bsyl Fixes #5061.
Sam Lantinga 120c76c8 2022-01-03T09:40:00 Updated copyright for 2022
Sylvain 3d5fcb5d 2021-12-16T11:10:07 Fix warning
Sylvain 4342e6bd 2021-12-16T10:53:27 SDL_render.c: lighten the cast syntax
Alex Szpakowski 3a5e148b 2021-12-14T11:02:07 Renderer backends use SDL_Color instead of int for geometry colors.
Sylvain b7885abc 2021-12-14T10:31:55 Fixed bug #5087: SDL_RenderGeometryRaw() passes colors as int* instead of SDL_Color*
Sylvain 8927d73b 2021-12-12T09:55:23 RenderGeometry: simplify casting (Thanks Daniel Gibson)
Sylvain 3e43d6e3 2021-12-11T17:19:00 SDL_RenderGeometry: remove some warning "dereferencing type-punned pointer might break strict-aliasing"
Sylvain d09f80ef 2021-12-07T11:31:57 SDL_DrawPointsF: fix error message typo
Sylvain 6dafc850 2021-12-07T10:44:12 SDL_DrawLines: minor simpification: - scale is 1.0f, don't need to multiply - typo in error message - remap SDL_DrawLines to SDL_DrawLinesF
Sylvain a0818a63 2021-12-07T10:07:15 Fixed bug #5071 - Float conversion warnings in SDL_render.c (see also #5003)
Sylvain e14d1026 2021-11-26T13:12:22 Change viewport and cliprect to float version: from SDL_Rect to SDL_FRect
Ozkan Sezer e18be04b 2021-11-23T08:01:02 Fixed undefined behavior in QueueCmdSetDrawColor() Fixes https://github.com/libsdl-org/SDL/issues/4995 Patch from Andrew Kelley
Sylvain 161dd83c 2021-11-22T11:15:23 DonĀ“t use "trunc" as var name, since it's also a function
Sylvain 49369142 2021-11-21T17:40:48 Fixed bug #4625: with integer scale, viewport (as reported by SDL_RenderGetViewport) becomes -2147483648x-2147483648 0 isn't valid scale. Min integer scale is 1.0f
Sylvain 70c8d20a 2021-11-13T15:04:19 Revert previous commit a50ca98e2b9ca10368b62e93b6a0977dc68fd584 (see bug #4625)
Sylvain a50ca98e 2021-11-13T14:48:36 Fixed bug #4625 - SDL_RenderSetLogicalSize issues viewport becomes -2147483648x-2147483648 when logical_w/h is greater than window size. division should be done with floats
Sam Lantinga 6c4b4ee7 2021-11-10T09:41:43 Don't assert on API parameters This causes lots of spam in test automation and it's not clear it's useful to developers. If we need this level of validation, we should add a log category for it.
Eric Wasylishen 0d987936 2021-11-09T22:03:42 testwm2: Fix video modes menu hit detection when highdpi or logical size used (#4936) * SDLTest_CommonDrawWindowInfo: log SDL_RenderGetScale, SDL_RenderGetLogicalSize * testwm2: fix video modes menu hit detection in High DPI cases - also when logical size is specified, e.g. `--logical 640x480 --resizable --allow-highdpi` * add function to determine logical coordinates of renderer point when given window point * change since to the targeted milestone * fix typo * rename for consistency * Change logical coordinate type to float, since we can render with floating point precision. * add function to convert logical to window coordinates * testwm2: use new SDL_RenderWindowToLogical * SDL_render.c: alternate SDL_RenderWindowToLogical/SDL_RenderLogicalToWindow Co-authored-by: John Blat <johnblat64@protonmail.com> Co-authored-by: John Blat <47202511+johnblat64@users.noreply.github.com>
Sylvain 4960cc3d 2021-10-25T16:18:40 Fixed a few warnings
Sylvain b7933945 2021-10-25T13:46:40 SDL_Renderer: make clear that we use render geometry for fillrect/copy/copyex when there is no specific back-end implementation (currently software, PSP, directfb)
Sylvain 502e9c3b 2021-10-24T17:16:49 SDL_Renderer simplifications: - Factorize PrepQueueCmdDraw{,DrawTexture,Solid) into one single function - Change SDL_Texture/Renderer r,g,b,a Uint8 into an SDL_Color, so that it can be passed directly to RenderGeometry - Don't automatically queue a SET_DRAW_COLOR cmd for RenderGeometry (and update GLES2 renderer)
Sylvain 70b10c75 2021-09-24T22:39:49 Use correct indices when using RenderGeometry / FillRects
Sylvain 16beed9a 2021-09-24T17:09:04 Less code since color is constant when done with triangles
Sylvain 37c39d5c 2021-09-23T22:45:45 Use geometry to implement FillRects
Sylvain 76f9fb96 2021-09-20T16:32:08 Use RenderGeometry to implement RenderCopy and RenderCopyEx at higher level
Sylvain 77acd44f 2021-10-01T22:30:51 DirectFB: fixed creation of palette textures
Ryan C. Gordon 857cc7c0 2021-09-19T00:05:21 render: constified some local variables in SDL_AllocateRenderVertices.
Misa 4a994733 2021-09-14T15:51:17 `SDL_RenderSetVSync()`: Restrict `vsync` to 0 or 1 In the future, we might want to support special swap intervals. To prevent applications from expecting nonzero values of vsync to be the same as "on", fail with SDL_Unsupported() if the value passed is neither 0 nor 1.
Misa 4549769d 2021-03-07T15:20:45 Add `SDL_RenderSetVSync()` Currently, if an application wants to toggle VSync, they'd have to tear down the renderer and recreate it. This patch fixes that by letting applications call SDL_RenderSetVSync(). This is the same as the patch in #3673, except it applies to all renderers (including PSP, even thought it seems that the VSync flag is disabled for that renderer). Furthermore, the renderer flags also change as well, which #3673 didn't do. It is also an API instead of using hint callbacks (which could be potentially dangerous). Closes #3673.
Ryan C. Gordon d49d955d 2021-09-08T11:44:17 render: SDL_RenderGeometry should still render when hidden, in most cases. (otherwise render targets may fail, etc...the check is a legacy helper for iOS apps that crash if you try to use OpenGL while in the background.)
Sylvain be6bee0b 2021-08-27T07:47:28 SW_RenderGeometry: add a redundant check to clear static analysis (see bug #4600)
Sylvain b17aa5d0 2021-08-27T07:16:40 SW_RenderGeometry: remove a few static analysis false positives (see bug #4600)
Ozkan Sezer 8270172e 2021-08-19T12:11:10 fix -Wshorten-64-to-32 warnings in android builds. see: https://github.com/libsdl-org/SDL/pull/4195#issuecomment-901506386
Sylvain 1670104a 2021-04-23T12:27:35 Change 'size_indice' to 'size_indices'
Sylvain a8f89a01 2021-04-23T12:00:14 Change 'size_indice' to 'size_indices'
Sylvain 47db47c1 2021-04-06T21:32:02 Add SDL_HAVE_RENDER_GEOMETRY to compile or not with RenderGeometry support
Sylvain 6e47f538 2021-04-01T20:18:05 Fix warnings
Sylvain 4ba37638 2021-04-01T12:43:39 Save and restore SDL renderer state after transforming triangles to rect
Sylvain cd0663e0 2021-04-01T11:47:45 Fix declaration-after-statement and remove tabs
Sylvain 61d9e916 2021-04-01T10:16:27 For the software renderer, try to reinterpret triangles as SDL_Rect With Dear ImGui + software renderer, it draws: - by default at 250 fps - drops to 70 fps if you show the color picker - drops to 10 fps if put the color picker fullscreen
Sylvain cc37c38e 2021-04-01T09:55:00 Add SDL_RenderGeometry based on SDL_RenderGeometryRaw
Sylvain e4812611 2021-04-01T09:49:16 Move to SDL_RenderGeometryRaw prototype with separate xy/uv/color pointer parameters
Sylvain f73c1eff 2021-03-17T09:58:49 Use normalized texture coordinates
Sylvain 6e26d320 2021-03-16T15:09:34 Add sysrender interface
Sam Lantinga f5794f9e 2021-08-10T15:17:59 Added SDL_SetTextureUserData() and SDL_GetTextureUserData() to associate a user-specified pointer with an SDL texture
Sam Lantinga fcfd19db 2021-08-10T12:02:17 Added support for SDL_RENDERER_PRESENTVSYNC to the software renderer This fixes https://github.com/libsdl-org/SDL/issues/4612
David Gow 4077f7a2 2021-08-03T20:55:45 Update the Renderer dpi_scale on SIZE_CHANGED event (fix #4580) The Renderer logical scaling code scales mouse coordinates, and needs to take the window DPI into account on HIGHDPI windows. However, the variable which tracks this, renderer->dpi_scale, is set once when the renderer is created, and then not updated. In the event that the window is moved to another screen, or the screen DPI otherwise changes, this will be outdates, and potentially the coordinates will be all wrong. So let's update the dpi_scale on the SIZE_CHANGED event: it's at least a possibility that this will be issued on some OSes when DPI changes, and it's otherwise already handled by SDL_Renderer's event filter.
David Gow 8f06a629 2021-07-30T22:31:17 render: Fix -Wmaybe-uninitialized warning in RenderDrawLinesWithRects{,F} The RenderDrawLinesWithRects and RenderDrawLinesWithRectsF functions can sometimes call QueueCmdFillRects() with the data pointed to by frects uninitialised. This can occur if none of the lines can be replaced with rects, in which case the frects array is empty, and nrects is 0. gcc 10.3.0 will detect this possibility, and print a warning like: /home/david/Development/SDL/src/render/SDL_render.c: In function 'RenderDrawLinesWithRectsF': /home/david/Development/SDL/src/render/SDL_render.c:2725:15: warning: '<unknown>' may be used uninitialized [-Wmaybe-uninitialized] 2725 | retval += QueueCmdFillRects(renderer, frects, nrects); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/david/Development/SDL/src/render/SDL_render.c:499:1: note: by argument 2 of type 'const SDL_FRect *' to 'QueueCmdFillRects' declared here 499 | QueueCmdFillRects(SDL_Renderer *renderer, const SDL_FRect * rects, const int count) | ^~~~~~~~~~~~~~~~~ This is harmless, because when this is uninitialised, nrects is always 0, so QueueCmdFillRects() does nothing anyway. We therefore can work around this by only calling QueueCmdFillRects() when nrects is nonzero. Somewhat impressively, gcc recognises that this is now safe.