|
c25a49c4
|
2023-08-31T10:23:45
|
|
metal: Add hint to select low power device instead of the default one (#8182)
On some system like MacBook Pro Intel with AMD card, asking for the default device will always return the AMD GPU.
This is not an issue for 99% of the case when the renderer context is here to provide the maximum performance level like for game.
However, for video application using GPU for 1 quad and 1 texture, using the discrete GPU for that lead to an important power consumption (4 to 8W), heat increase, and fan noise.
With this patch, I successfully amend ffplay to only use the integrated GPU (i.e. the Intel one), instead of the discrete GPU (i.e. the AMD one).
(cherry picked from commit aa7ba629784ebf4a253cf78d85c286c310ad0cb5)
|
|
3f1fd5ab
|
2023-05-23T10:59:03
|
|
Updated source to match SDL function prototype style
|
|
0d763800
|
2023-03-09T15:10:00
|
|
Code style: changed "sizeof foo" to "sizeof(foo)" (thanks @sezero!)
(cherry picked from commit c6443d86c92e962683a1efe5f123a144988875b5)
|
|
0479df53
|
2023-01-09T09:48:21
|
|
Updated copyright for 2023
|
|
3bdc6221
|
2022-12-01T15:11:29
|
|
Fixed Apple build after d0bbfdbfb881e5407911d84c12899bd5b442a130
|
|
d0bbfdbf
|
2022-12-01T16:07:03
|
|
Clang-Tidy fixes (#6725)
(cherry picked from commit 3c501b963dd8f0605a6ce7978882df39ba76f9cd)
|
|
7b100001
|
2022-11-30T15:51:17
|
|
Reverted code formatting for Apple platforms
We didn't get the merge right, and rather than tease out exactly what happened, I'm just reverting for now.
|
|
b8d85c69
|
2022-11-30T12:51:59
|
|
Update for SDL3 coding style (#6717)
I updated .clang-format and ran clang-format 14 over the src and test directories to standardize the code base.
In general I let clang-format have it's way, and added markup to prevent formatting of code that would break or be completely unreadable if formatted.
The script I ran for the src directory is added as build-scripts/clang-format-src.sh
This fixes:
#6592
#6593
#6594
(cherry picked from commit 5750bcb174300011b91d1de20edb288fcca70f8c)
|
|
70656b13
|
2022-11-15T10:18:41
|
|
Don't recreate the window when creating a Metal renderer on an OpenGL window.
It turns out that we can safely create a Metal view on an existing window, and that avoids issues with the window being recreated with the wrong orientation in iOS 16.
Fixes https://github.com/libsdl-org/SDL/issues/6289
|
|
82b40f09
|
2022-09-16T09:55:20
|
|
Fixed runaway CPU usage in the metal renderer when the window is minimized
|
|
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
|
|
90a480a1
|
2022-09-08T05:44:39
|
|
Fixed bug #6199 - Broken clip behaviour on a render target (metal)
|
|
6c536afd
|
2022-06-27T15:43:17
|
|
Fix C89 declaration for macOS modules.
Since Clang 14, `-Wdeclaration-after-statement` is enforced on every
standard.
|
|
ec8fa577
|
2022-05-07T21:57:23
|
|
macOS: always use Objective-C ARC (automatic ref counting).
Change Cocoa SDL_VideoData and SDL_WindowData implementations from C structs to Objective-C objects, since bridging between C and ObjC is easier that way.
|
|
3bebdacc
|
2022-03-15T10:37:17
|
|
METAL: clip rect w/h must be <= render pass
|
|
bf698689
|
2022-03-10T01:55:04
|
|
reduced a few ifdefs, fixed an unused warning if built w/o SDL_HAVE_YUV.
|
|
3f8b450d
|
2022-02-05T12:22:34
|
|
extend the code hidden by SDL_HAVE_YUV
|
|
18e4d9fe
|
2022-01-08T09:02:25
|
|
Re-enable line drawing path in render drivers
This is still used for scaled line drawing in RenderDrawLinesWithRects()
|
|
b88b6b3c
|
2022-01-07T22:43:12
|
|
Remove QueueDrawLines from METAL
|
|
4b38d4c9
|
2022-01-07T12:37:28
|
|
Leave the Metal view active on the window when recreating the Metal renderer
Fixes https://github.com/libsdl-org/SDL/issues/5140
Also move the metal tag definition to SDL_syswm.h so it can be used by applications
|
|
120c76c8
|
2022-01-03T09:40:00
|
|
Updated copyright for 2022
|
|
3a5e148b
|
2021-12-14T11:02:07
|
|
Renderer backends use SDL_Color instead of int for geometry colors.
|
|
2a24418b
|
2021-11-23T09:44:37
|
|
More "Integer overflow generates Illegal instruction under sanitizers" (see bug #4995)
|
|
04f42e04
|
2021-11-09T11:50:49
|
|
metal: Deal better with -[CAMetalLayer nextDrawable] returning nil.
Fixes #4863.
|
|
637bcd0b
|
2021-11-07T11:19:07
|
|
Fixed build warnings
|
|
f02ad282
|
2021-09-25T11:31:18
|
|
Remove FillRects from back-end, where RenderGeometry can be used
|
|
77026f67
|
2021-09-20T17:09:44
|
|
Metal: remove RenderCopy and RenderCopyEx from back-end
|
|
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.
|
|
54ca1d19
|
2021-08-27T07:44:03
|
|
SW_RenderGeometry: add a redundant check to clear static analysis (see bug #4600)
|
|
a8f89a01
|
2021-04-23T12:00:14
|
|
Change 'size_indice' to 'size_indices'
|
|
47db47c1
|
2021-04-06T21:32:02
|
|
Add SDL_HAVE_RENDER_GEOMETRY to compile or not with RenderGeometry support
|
|
c6ceaaeb
|
2021-04-04T21:32:40
|
|
METAL: use Uchar4Normalized format to transfert color as 4 bytes, instead of 4 floats
|
|
9f591707
|
2021-04-01T10:37:45
|
|
Update METAL backend for SDL_RenderGeometryRaw
|
|
f73c1eff
|
2021-03-17T09:58:49
|
|
Use normalized texture coordinates
|
|
5828cc41
|
2021-03-16T21:54:27
|
|
Update METAL backend: fix a typo in drawline
|
|
121114d0
|
2021-03-16T15:44:49
|
|
Update METAL compiled shaders
|
|
2d01573b
|
2021-03-16T15:44:33
|
|
Add METAL shaders
|
|
1e77dae7
|
2021-03-16T15:44:04
|
|
Add METAL implementation
|
|
9b9d0d48
|
2021-02-15T11:49:09
|
|
mac/iOS: allow Metal in windows created without an explicit backend
Fixes SDL_CreateWindowAndRenderer (and similar situations) not choosing a Metal backend. See #3991.
Passing an explicit backend into CreateWindow, eg SDL_WINDOW_OPENGL or SDL_WINDOW_METAL, will still prevent the window from being used with other backend types.
|
|
69e9b2ac
|
2021-02-01T22:35:46
|
|
Fixed bug 5471 - Creating a fullscreen desktop window goes windowed temporarily
This is caused by the Metal renderer recreating the window because by default we create an OpenGL window on macOS.
It turns out that at least on macOS 10.15, a window that has been initialized for OpenGL can also be used with Metal. So we'll skip recreating the window in that case.
|
|
c0df40e0
|
2021-01-05T17:39:48
|
|
Add more SDL_HAVE_YUV defines
|
|
b0325041
|
2021-01-05T12:36:34
|
|
Fix unused variable warning on METAL (see bug #5430)
|
|
c1eb9ecf
|
2021-01-05T12:29:43
|
|
Add SDL_UpdateNVTexture for META (bug #5430)
(not tested)
|
|
393c8c1f
|
2021-01-03T10:32:55
|
|
Fixed bug 5440 - MacCatalyst build failures
C.W. Betts
I tested building commit http://hg.libsdl.org/SDL/rev/7adf3fdc19f3 on Mac Catalyst and found some issues:
* MTLFeatureSet_iOS_* enums aren't available under Mac Catalyst.
* OpenGL ES is unavailable under Mac Catalyst.
* Some Metal features are available under Catalyst but not iOS, such as displaySyncEnabled.
* Set Metal as the default renderer on Mac Catalyst
Attaching a patch that will make SDL2 build for Mac Catalyst.
|
|
9130f7c3
|
2021-01-02T10:25:38
|
|
Updated copyright for 2021
|
|
7fa5e95b
|
2020-12-09T07:23:47
|
|
Fixed bug 5213 - Add support to metal in iOS/tvOS simulator
Vincent Hamm
Xcode11 and ios13 added support for metal simulator.
Here is a quick and dirty patch to enable it. Pretty early and only tested on a few samples for now. Required mostly to enable metal support on correct version of ios, generate simulator compatible shaders and enforce buffer alignments on simulator (same as osx).
|
|
cb361896
|
2020-12-09T07:16:22
|
|
Fixed bug 5235 - All internal sources should include SDL_assert.h
Ryan C. Gordon
We should really stick this in SDL_internal.h or something so it's always available.
|
|
754286c6
|
2020-12-02T13:45:24
|
|
SDL Renderer: specify the correct flag when recreating the window
|
|
731a5d1c
|
2020-11-08T03:18:05
|
|
metal: Fix line drawing, again.
|
|
ba36eb04
|
2020-10-21T00:03:33
|
|
metal: Make line drawing match software renderer.
Partially fixes Bugzilla #2711.
|
|
061256a3
|
2020-10-07T14:45:24
|
|
metal: Clear the framebuffer if presenting without any other operations.
|
|
b7a4fdd3
|
2020-07-17T11:16:35
|
|
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.
|
|
15294e21
|
2020-05-26T13:54:47
|
|
Fixed iOS build
|
|
f16e6bfa
|
2020-05-25T14:10:51
|
|
Fixed creating a metal renderer without specifying a metal window
|
|
b6afbe63
|
2020-04-07T09:38:57
|
|
Added SDL_log.h to SDL_internal.h so logging is available everywhere
|
|
13155b35
|
2020-02-10T09:42:53
|
|
The scissor rect needs to be updated when the viewport changes in the Metal renderer
|
|
a8780c6a
|
2020-01-16T20:49:25
|
|
Updated copyright date for 2020
|
|
981e0d36
|
2020-01-16T08:52:59
|
|
Fixed bug 4903 - Lack of color multiply with alpha (SDL_BLENDMODE_MOD + SDL_BLENDMODE_BLEND) blending mode for all renderers
Konrad
This kind of blending is rather quite useful and in my opinion should be available for all renderers. I do need it myself, but since I didn't want to use a custom blending mode which is supported only by certain renderers (e.g. not in software which is quite important for me) I did write implementation of SDL_BLENDMODE_MUL for all renderers altogether.
SDL_BLENDMODE_MUL implements following equation:
dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA))
dstA = (srcA * dstA) + (dstA * (1-srcA))
Background:
https://i.imgur.com/UsYhydP.png
Blended texture:
https://i.imgur.com/0juXQcV.png
Result for SDL_BLENDMODE_MOD:
https://i.imgur.com/wgNSgUl.png
Result for SDL_BLENDMODE_MUL:
https://i.imgur.com/Veokzim.png
I think I did cover all possibilities within included patch, but I didn't write any tests for SDL_BLENDMODE_MUL, so it would be lovely if someone could do it.
|
|
ef3ca2cc
|
2019-12-23T19:55:10
|
|
Fix build error in SDL_render_metal.m (bug #4916.)
Patch provided by Konrad. Error was introduced by commit 522164980828 for bug #4914.
|
|
5e19e66c
|
2019-12-22T13:39:44
|
|
Fixed bug 4914 - Expose SDL_ScaleMode and add SDL_SetTextureScaleMode/SDL_GetTextureScaleMode
Konrad
This was something rather trivial to add, but asked at least several times before (I did google about it as well).
It should be possible to dynamically change scaling mode of the texture. It is actually trivial task, but until now it was only possible with a hint before creating a texture.
I needed it for my game as well, so I took the liberty of writing it myself.
This patch adds following functions:
SDL_SetTextureScaleMode(SDL_Texture * texture, SDL_ScaleMode scaleMode);
SDL_GetTextureScaleMode(SDL_Texture * texture, SDL_ScaleMode *scaleMode);
That way you can change texture scaling on the fly.
|
|
a9b867ab
|
2019-10-26T14:39:50
|
|
macOS Fix potential memory leaks in the Metal renderer caught by clang's static analyzer.
|
|
216f5b98
|
2019-10-17T18:48:58
|
|
metal: Fix compilation when using older Apple SDKs (bug #4828).
|
|
bfdb0e97
|
2019-08-18T10:38:32
|
|
metal renderer: optimize SDL_RenderFillRect slightly.
|
|
e8278d0d
|
2019-08-17T16:53:08
|
|
metal renderer: use vertex attributes instead of indexing into a buffer with the vertex id in the shader. Allows for more flexibility with vertex setup in the future.
Also optimize vertex buffer binding slightly.
|
|
55a46abf
|
2019-08-17T01:09:30
|
|
metal renderer: more closely match buffer data alignment requirements from the metal specification.
|
|
e5acccc7
|
2019-08-17T00:37:22
|
|
metal renderer: use the device address space instead of the constant address space for colors.
It doesn't negatively impact GPU performance in my tests, and it removes the need for 256 byte memory alignment of color data on macOS.
|
|
3fb5cabe
|
2019-08-16T22:13:30
|
|
metal: Update compiled shaders based on compilation script changes
|
|
9e57e3e5
|
2019-08-16T22:11:50
|
|
metal: Update shader compilation script with fixes for newer xcode versions and for running on older platforms
|
|
aebaa316
|
2019-08-05T12:35:32
|
|
Add public APIs for creating a Metal view attached to an SDL window. Add SDL_metal.h.
|
|
1213fe79
|
2019-06-14T13:56:42
|
|
Worked around "Undefined symbol: ___isPlatformVersionAtLeast()" link error on Xcode 11 beta
|
|
5e13087b
|
2019-01-04T22:01:14
|
|
Updated copyright for 2019
|
|
c7db6ade
|
2018-12-19T18:27:21
|
|
metal: Implement SDL_LockTexture for YUV formats.
|
|
ce8c716a
|
2018-12-18T14:23:05
|
|
metal: Implement SDL_LockTexture for non-YUV textures.
|
|
37b1f989
|
2018-11-25T22:13:09
|
|
metal: use a staging texture in SDL_UpdateTexture, to make sure it doesn't stomp texture data being drawn in a previous frame on the GPU.
|
|
872936a4
|
2018-11-21T23:46:37
|
|
metal: Fix an incorrect division.
|
|
4a58722b
|
2018-11-21T23:37:23
|
|
metal: SDL_RenderFillRects uses one draw call per 16k rectangles (within the given FillRects call), instead of one draw call per rectangle. Reduces CPU usage when drawing many rectangles.
|
|
244b79e1
|
2018-11-04T14:31:56
|
|
metal: SDL_RenderReadPixels on macOS synchronizes the render target's texture data if it's managed, before reading from it.
|
|
c9fed272
|
2018-11-04T12:31:02
|
|
metal: fix the SDL_RENDERER_PRESENTVSYNC flag not being set on the renderer info on macOS, when vsync is used.
|
|
c2bba9e4
|
2018-11-04T12:24:05
|
|
metal: fix the size of the buffer used for constant data.
|
|
457390fc
|
2018-11-01T20:24:21
|
|
metal: avoid an extra buffer allocation and GPU data copy in RunCommandQueue, it's not needed. Improves overall performance.
|
|
4e86dfd8
|
2018-11-01T19:49:01
|
|
metal: remove an obsolete section of a constant buffer.
|
|
4659e738
|
2018-11-01T12:31:45
|
|
merge fallout: Patched to compile, fixed some compiler warnings, etc.
|
|
62494a2e
|
2018-10-31T15:03:41
|
|
Merge SDL-ryan-batching-renderer branch to default.
|
|
8c41e262
|
2018-10-13T03:36:42
|
|
metal: Fix SDL_RenderReadPixels to wait for the GPU to finish rendering to the active texture before reading its pixels.
|
|
d9094421
|
2018-10-12T17:55:42
|
|
metal: Fix high dpi and resizing on macOS, and clean up iOS code. Fixes bug #4250.
|
|
208c4b03
|
2018-10-04T20:21:58
|
|
metal: CopyEx transform matrix must be aligned for constant buffer access.
|
|
638d624f
|
2018-10-04T20:21:23
|
|
metal: Don't try to create a zero-byte vertex buffer.
(Which will cause a crash in Metal, or an assert in the validation layer.)
|
|
c01da217
|
2018-09-24T12:30:47
|
|
render: get rid of the predeclared functions in the GL and Metal renderers.
(others to come as I continue to update render backends!)
|
|
2241b33f
|
2018-09-23T23:22:56
|
|
render: Update Metal and GL backends to use new high-level features, etc.
Now nothing is uploaded as dynamic data with Metal's setVertexBytes, etc; it's
all in the one big vertex buffer, now.
|
|
8955fb9b
|
2018-09-20T16:40:04
|
|
render: First shot at moving metal backend over to new batching system.
|
|
264b81b4
|
2018-09-06T00:56:13
|
|
metal: Make sure layer drawableSize is adjusted on resize.
Fixes Bugzilla #4250.
|
|
3634e563
|
2018-09-01T20:47:12
|
|
metal: SDL_UpdateYUVTexture shouldn't swap planes based on format.
|
|
eb14b635
|
2018-05-07T19:52:25
|
|
Fixed bug 4134 - Render targets lose scale quality after minimizing a fullscreen window
Olli-Samuli Lehmus
If one creates a window with the SDL_WINDOW_FULLSCREEN_DESKTOP flag, and creates a render target with SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"), and afterwards sets SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest"), after minimizing the window, the scale quality hint is lost on the render target. Textures however do keep their interpolation modes.
|
|
72d45079
|
2018-01-10T10:42:40
|
|
Added availability check to fix compiler warning for symbol only available on tvOS 11.0 and newer
|
|
7d5437bb
|
2018-01-07T22:00:37
|
|
metal: set max texture size based on device capability.
|
|
a8c0532c
|
2018-01-07T16:57:32
|
|
metal: Fix pipeline states to use the pixel format of the current render target, instead of a hard-coded format.
|
|
740a90af
|
2018-01-06T18:54:12
|
|
metal: Add support for YUV/NV12 texture formats.
|
|
9a8683b2
|
2018-01-04T22:16:42
|
|
metal: use a private instead of managed buffer for the renderer's non-changing constant data.
Recommended by Xcode's Metal frame capture analysis.
|
|
990ebba5
|
2018-01-04T19:29:33
|
|
metal: Implement fast hardware clearing when possible, by deferring the start of a render pass until a clear or draw operation happens.
|
|
e3cc5b2c
|
2018-01-03T10:03:25
|
|
Updated copyright for 2018
|