|
0feaf7d1
|
2020-12-28T14:37:58
|
|
[KMS/DRM][Vulkan] Correct non-existing property. Remove hacky surface destruction code (TTY buffer isn't there after a Vulkan window is created).
|
|
46d31d57
|
2020-12-27T00:43:06
|
|
[KMS/DRM][Vulkan] Fix segfault when changing fullscren mode and permanent cursor when changing between Vulkan and GL renderers in vkQuake3. Tidy up window destruction code.
|
|
09fcc9ed
|
2020-12-23T16:45:23
|
|
[KMS/DRM][Vulkan] Fix small warning, thanks to Ozkan Sezer for spotting it.
|
|
a6dc838d
|
2020-12-23T16:22:46
|
|
[KMS/DRM][Vulkan] Only try to create a display mode when no suitable mode is found.
|
|
2fc987c2
|
2020-12-22T14:15:33
|
|
[Buildsystem] Add guards for not building with KMSDRM support if EGL is not available.
|
|
4cd98160
|
2020-12-21T09:44:25
|
|
Fixed whitespace
|
|
8766d604
|
2020-12-21T17:29:24
|
|
[Video/KMSDRM] Fix potetial access to freed structure and complete errorchecks.
|
|
b06ef3a1
|
2020-12-21T01:53:11
|
|
[Video/KMSDRM] Manually re-show the cursor on window creation, if needed.
|
|
4198f0e5
|
2020-12-21T01:20:30
|
|
fix uninitialized warnings in KMSDRM_CreateCursor()
|
|
a8dbcab1
|
2020-12-20T21:48:05
|
|
[Video/KMSDRM] Don't copy the cursor bitmap to the cursor GBM BO until we're showing it.
|
|
2756b0f3
|
2020-12-20T14:29:58
|
|
[Video/KMSDRM] Init and deinit mouse stuff at the same time that GBM stuff.
|
|
cf71e017
|
2020-12-19T23:32:09
|
|
[Video/KMSDRM] Remove auxiliary AMDGPU compatibility workarounds not needed anymore.
|
|
af1f91cb
|
2020-12-19T20:21:07
|
|
[Video/KMSDRM] Correct typo.
|
|
cf489556
|
2020-12-19T20:15:50
|
|
[Video/KMSDRM] Honor the device index in Vulkan. Add notes about the display index.
|
|
ab3a390e
|
2020-12-19T17:35:04
|
|
[Video/KMSDRM] Better ATOMIC caps testing: patch by Oskan Sezer.
|
|
436499f3
|
2020-12-19T02:08:59
|
|
[Video/KMSDRM] Comment out some debug info, adjust comments for future work.
|
|
6b81cac4
|
2020-12-19T01:25:50
|
|
remove duplicated SDL_SetError after calling check_atomic_modesetting()
|
|
8952a613
|
2020-12-18T23:17:42
|
|
[Video/KMSDRM] Re-arrange display members setup.
|
|
f60f8d5d
|
2020-12-18T22:53:51
|
|
[Video/KMSDRM]: Add Vulkan support to the KMSDRM backend.
|
|
6c4ab484
|
2020-12-18T17:50:02
|
|
SDL_kmsdrmvideo.c: check atomic modesetting in check_modesetting()
.. so that KMSDRM_CreateDevice() can fail and SDL_VideoInit() would
move on to next bootstrap member which is kmsdrm_legacy. hopefully
fixes bug #5393.
|
|
90456670
|
2020-12-17T14:11:00
|
|
more "'for' loop initial declarations are only allowed in C99 mode" fixes
|
|
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.
|
|
010d5fba
|
2020-10-26T09:49:09
|
|
kmsdrm: Make this build with significantly older system libraries.
This allows one to build Raspberry Pi versions on an ancient version of
Raspbian and get both the KMSDRM and RPI video targets built into SDL, giving
maximum binary compatibility from linking against an older glibc, etc, but
also making one library that can access video on all RPi models and OS
releases.
|
|
5682b066
|
2020-10-22T19:51:57
|
|
kmsdrm: Add comment about KMSDRM_VideoQuit() changes.
|
|
63b78277
|
2020-10-22T19:44:38
|
|
kmsdrm: properly exit with an error when ATOMIC interface is not yet available, instead of just segfaulting.
|
|
a3262205
|
2020-10-22T17:55:45
|
|
kmsdrm: rearrange init function so we try ATOMIC compatibility first.
|
|
b1ea0be8
|
2020-10-22T17:06:34
|
|
kmsdrm: Add missing checks after SDL_calloc() calls.
|
|
ad9ec8b3
|
2020-10-22T16:15:34
|
|
kmsdrm: Small fix, missing bracket.
|
|
87a86675
|
2020-10-22T16:01:51
|
|
kmsdrm: Always use spaces for indentation. Always use SDL_calloc() for calloc.
|
|
cca16c9c
|
2020-10-15T17:56:19
|
|
kmsdrm: merge GetDisplayDPI implementation by bms20 <brett@mynah-software.com>
|
|
76980e30
|
2020-10-08T16:42:20
|
|
Added events for dynamically connecting and disconnecting displays, with an iOS implementation
|
|
78c274cb
|
2020-09-26T19:18:09
|
|
kmsdrm: merge patches from Ozkan Sezer for removing c-99'isms and raising libgbm version reqeriments.
|
|
9c342e76
|
2020-09-13T21:41:10
|
|
kmsdrm: merge heap buffer overflow and cursor creation patches from meyraud705.
|
|
0cb9bfa5
|
2020-09-12T15:58:47
|
|
kmsdrm: less excessive error checkhing
|
|
5bed30dd
|
2020-09-12T04:56:55
|
|
kmsdrm: also do pending modeseting in SwapWindowDoubleBuffered().
|
|
9e9227ad
|
2020-09-12T04:52:56
|
|
kmsdrm: reimplement modesetting for fullscreen window scaling and AR-correction.
|
|
4575c694
|
2020-09-12T02:36:02
|
|
kmsdrm: delete ununsed variable.
|
|
01b0cf1c
|
2020-09-12T00:47:00
|
|
Backed out changeset 4a45d1a30d25
kmsdrm: Fake KMSDRM_SetDisplayMode() is needed for some programs after all.
|
|
7b676548
|
2020-09-12T00:16:08
|
|
kmsdrm: don't fool SDL into thinking that changing the physical videomode is done.
|
|
a6d182d3
|
2020-09-11T23:47:26
|
|
kmsdrm: no need to reconnect/reactivate things in SwapWindowDoubleBuffered().
|
|
47e2d030
|
2020-09-10T23:26:02
|
|
kmsdrm: greatly improve comments in SwapBuffersFenced() for future reference.
|
|
3c6004fe
|
2020-09-10T15:07:23
|
|
kmsdrm: Choose how to swap buffers based on EGL extension availability.
|
|
c7e761f8
|
2020-09-10T15:05:55
|
|
kmsdrm: Patched to compile if EGL headers lack EGL_ANDROID_native_fence_sync.
|
|
224aa45b
|
2020-09-10T15:04:35
|
|
kmsdrm: Implement GL_DefaultProfileConfig for Raspberry Pi compatibility.
If we think this might be a Raspberry Pi device, default to ES2. Otherwise,
accept SDL's higher-level defaults.
|
|
055cad49
|
2020-09-10T02:15:53
|
|
kmsdrm: no need to re-connect/reactivate things in SwapWindow() anymore because we use a dumb buffer on KMS buffers destruction now.
|
|
351219bf
|
2020-09-09T03:18:26
|
|
kmsdrm: On VideoQuit(), only destroy dumb buffer if it exists.
|
|
244d0ad8
|
2020-09-08T15:30:45
|
|
kmsdrm: Tell SDL that mouse has entered the window via artificial event. Fixes sticky mouse in Scummvm.
|
|
550e1533
|
2020-09-08T02:42:32
|
|
kmsdrm: No need to test for display driverdata when freeing a plane.
|
|
6e03fab9
|
2020-09-07T23:15:33
|
|
kmsdrm: add temporary RPI4_COMPAT define to try RPI4+current Rasbian compatibility.
|
|
0f807fd6
|
2020-09-07T22:54:15
|
|
kmsdrm: use a black dumb buffer for keeping the PRIMARY PLANE occupied when we destroy the KMS buffers, instead of using the TTY buffer, to avoid flickering.
|
|
cce6c605
|
2020-09-07T01:33:04
|
|
kmsdrm: fix errors when trying to free up videomode driverdata pointers on quit.
|
|
9501b1c6
|
2020-09-07T00:18:13
|
|
kmsdrm: fix scaling for SDL_WINDOW_FULLSCREEN windows.
|
|
daa752b1
|
2020-09-06T23:19:54
|
|
kmsdrm: fix first frame display: no need to wait for SwapWindow() for EGL surface creation.
|
|
68ac9349
|
2020-09-06T12:48:39
|
|
kmsdrm: more coherent returns for SwapWindow.
|
|
d3d9d432
|
2020-09-06T12:17:27
|
|
kmsdrm: Remove debug printfs in SwapWindow.
|
|
d7aebbd5
|
2020-09-06T12:08:22
|
|
kmsdrm: Don't create surfaces until EGL context is available.
|
|
f4e02a5c
|
2020-08-31T19:17:17
|
|
kmsdrm: Do NOT modify window size manually from the backend: doing so caused renderer scaling params miscalculation.
|
|
c09d1cee
|
2020-08-28T23:04:00
|
|
kmsdrm: Apply window reconfiguration in SetWindowSize(), too.
|
|
31b17945
|
2020-08-28T22:38:26
|
|
kmsdrm: use PLANE and CRTC to do hardware-driven window scaling and AR-correction.
|
|
fe3f9796
|
2020-08-26T01:37:30
|
|
kmsdrm: unload EGL and GL lib only if using them.
|
|
9b43464d
|
2020-08-25T16:30:23
|
|
kmsdrm: Add programmer credits to the Atomic KMSDRM driver.
|
|
9316a8d9
|
2020-08-25T16:18:49
|
|
kmsdrm: move FENCE FD props setting to SwapWindow(), where it belongs.
|
|
3f38009b
|
2020-08-25T15:40:36
|
|
kmsdrm: comment out atomic commit fast-debugging printf.
|
|
0d16761c
|
2020-08-25T05:53:13
|
|
kmsdrm: fix segfault on quit beacuse of freed _this->egl_data.
|
|
d43e666e
|
2020-08-25T04:05:36
|
|
kmsdrm: Buffer management refactoring. Fixes for compatibility with more video drivers.
|
|
eade05ca
|
2020-08-24T12:51:20
|
|
kmsdrm: Finetune integer type usage. Add some comments.
|
|
a76f1763
|
2020-08-24T01:10:11
|
|
kmsdrm: Move cursor plane setup and freeing to MouseInit() and MouseQuit(), for better consistency.
|
|
0d593d7e
|
2020-08-23T23:44:07
|
|
kmsdrm: Add error control to plane prop setting function. Do most plane prop setting with a single function.
|
|
e06e9c35
|
2020-08-23T11:26:55
|
|
kmsdrm: move cursor-related atomic helper functions and related struct typedefs to the SDL_kmsdrmmouse unit.
|
|
0b7b7721
|
2020-08-23T03:13:50
|
|
kmsdrm: remove redundant function, use drm_atomic_setbuffers() for disconnecting planes instead.
|
|
16c04f26
|
2020-08-23T02:58:57
|
|
kmsdrm: Init cursor surface on SetCursor() ONLY. Removal of dynamic modeset because it causes A LOT of problems with some kernel video drivers. Some refactoring and cleanups.
|
|
0d0ba111
|
2020-08-19T01:34:56
|
|
kmsdrm: correct parameter name.
|
|
5d32eda9
|
2020-08-19T01:31:22
|
|
kmsdrm: implement smarter surface recreation function to be used in videomode changes. Other minor arrangements.
|
|
f79da817
|
2020-08-18T01:52:15
|
|
kmsdrm: free all connector, crtc and plane memory on KMSDRM_VideoQuit().
|
|
92cb9192
|
2020-08-17T18:35:04
|
|
kmsdrm: move hardware cursor functionality to the ATOMIC interface. Disconnect the display plane from the GBM surface buffers before destroying the GBM surface.
|
|
c437729b
|
2020-08-08T14:27:55
|
|
kmsdrm: separate requests in different functions so we only need one atomic commit for everything, as expected by atomic design.
|
|
3b9f1073
|
2020-08-07T11:53:04
|
|
kmsdrm: wait for possible pending atomic commits before destroying surfaces, and before restoring video on quit. Move messages to the SDL_Log* functions.
|
|
96c99693
|
2020-08-06T01:36:56
|
|
kmsdrm: wait for pending atomic commits before restoring videomode and crtc->buffer on VideoQuit, and simplify double-buffer SwapWindow() implementation.
|
|
09692b61
|
2020-08-05T18:55:22
|
|
kmsdrm: move videomode restoration on VideoQuit() to using the atomic interface instead of the legacy drmModeSetCrtc() function. Refactoring of get_plane_id().
|
|
fc722b2d
|
2020-08-05T15:28:51
|
|
kmsdrm: free memory for plane, crtc and connector property tables on VideoQuit.
|
|
2d69ce08
|
2020-08-05T02:06:59
|
|
kmsdrm: double and triple buffered versions of SwapWindow() are now both reimplemented in atomic pageflipping versions, and can be selected via SDL_VIDEO_DOUBLE_BUFFER env variable.
|
|
8996ee17
|
2020-08-03T22:24:49
|
|
kmsdrm: update SwapWindow fn, moving it to triple-buffer.
|
|
b131661c
|
2020-08-01T18:23:34
|
|
kmsdrm: rewrite the new SwapWindow() fn to avoid tearing. Double-buffer only for now.
|
|
1a5503ce
|
2020-07-28T21:11:25
|
|
kmsdrm: Moved to the ATOMIC KMS/DRM interface for buffer swapping, leaving DRM-legacy behind.
|
|
c7eb557d
|
2020-07-20T10:09:07
|
|
kmsdrm: do not leak drmModeConnector
Previously conn was leaked on the success path (when available was
set to SDL_TRUE).
|
|
412b21b0
|
2020-07-20T11:42:23
|
|
Rename the gbm device struct from gbm to gbm_dev for better readabilty.
|
|
155fdc7a
|
2020-07-19T21:48:17
|
|
kmsdrm: settle with first card that has a connected connector
Previously the first card with non-empty connectors, encoders
and crtcs would be selected, however KMSDRM_VideoInit could still reject
it if the connector was not connected. This allow finding the first card
(in a multi GPU setup) that is actually connected to a display.
|
|
b78b88f7
|
2020-07-19T21:46:41
|
|
kmsdrm: fix typo
|
|
75fe4b14
|
2020-07-19T19:53:57
|
|
Added comment about window creation behaviour in KMSDRM.
|
|
2f660c4f
|
2020-07-19T19:11:02
|
|
Delete windata variable no longer needed in KMSDR_SetDisplayMode().
|
|
3a1d7d9c
|
2020-07-19T19:09:15
|
|
Surfaces have to be recreated immediately from KMSDRM_SetDisplayMode().
|
|
b6a818b6
|
2020-07-19T18:45:29
|
|
Fix SDL_Window recreation: drmModeSetCrtc() has to be called everytime the EGL and GBM surfaces are recreated.
|
|
71e9df99
|
2020-07-19T08:55:01
|
|
Fixed bug 5231 - Fix for hardware cursor: size and alpha-premultiplication.
Manuel Alfayate Corchete
I noticed pt2-clone had problems with it's optional hardware mouse on the KMSDRM backend: cursor had a transparent block around it.
So I was investigating and it seems that a GBM cursor needs it's pixels to be alpha-premultiplied instead of straight-alpha.
A
lso, I was previously relying on "manual testing" for the cursor size, but it's far better to use whatever the DRM driver recommends via drmGetCap(): any working driver should make a size recommendation via drmGetCap(), so that's what we use now. I took this decision because I found out that the AMDGPU driver reported working cursor sizes that would appear garbled on screen, and only the recommended cursor size works.
|
|
052a1373
|
2020-07-12T19:11:15
|
|
Merge VideoBootStrap::available into VideoBootStrap::create
The two are only ever called together, and combining them makes it possible
to eliminate redundant symbol loading and redundant attempts to connect
to a display server.
|
|
b9f55b6d
|
2020-06-19T10:37:14
|
|
Fixed bug 5199 - Fix KMSDRM_CreateWindow() segfault when starting L?VE2D engine.
Manuel Alfayate Corchete
This small patch fixes the KMSDRM_CreateSurfaces() call in KMSDRM_CreateWindow(), that was segfaulting deeper into SDL internals because the windata->viddata pointer wasn't set before the KMSDRM_CreateSurfaces() call.
So that's what this small patch does.
Now, L?VE2D works perfectly well on the Raspberry Pi 3, instead of just segfaulting.
|
|
d48c97c4
|
2020-06-02T16:57:20
|
|
Fixed bug 5147 - KMSDRM: SetWindowFullscreen() failing with SDL_WINDOW_FULLSCREEN_DESKTOP
Manuel Alfayate Corchete
This patch is needed so programs that do this work as expected:
1) Start in a different video mode than the mode used by the system and then...
2) Try to go fullscreen with the mode originally used by the system via SetWindowFullScreen() with the SDL_WINDOW_FULLSCREEN_DESKTOP flag.
An example would be pt2-clone in https://github.com/8bitbubsy/pt2-clone.
This program does this:
Starts with:
video.window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, screenW, screenH, windowFlags);
and then, *IF* the user has configured it in fullscreen mode in its .ini, it tries to go fullscreen with the desktop mode:
SDL_SetWindowFullscreen(video.window, SDL_WINDOW_FULLSCREEN_DESKTOP);
This sequence of operations is currently failing because SDL_SetDisplayModeForDisplay() in SDL_video.c fails because display->desktop_mode is not being initialized with its correct value: SetDisplayMode() in SDL_kmsdrmvideo.c will not be able to set the mode because it detects the mode to have a driverdata of 0x0 ("if (!modedata)") and rightfully returns an error.
So, the included patch fixes this small problem, and programs that first change the video mode and then try to go fullscreen with the system video mode will now work.
The patch simply fixes an small omission, but its really needed now that dynamic video mode changing was implemented on the KMSDRM backend.
|
|
bcbaa4ec
|
2020-05-26T16:34:50
|
|
If there isn't a GetGlobalMouseState() implementation, fall back to the normal one.
|
|
437577f9
|
2020-05-26T16:29:26
|
|
Fixed bug 5141 - KMSDRM: manage SDL_GetGlobalMouseState()
Manuel Alfayate Corchete
On the KMSDRM backend, there is no such thing as a desktop, yet some programs could (and DO) use SDL_GetGlobalMouseState().
So I think its good idea that, in KMSDRM, it returns the same mouse coordinates anyway as SDL_GetMouseState() would return. There is nothing else it could return, as far as I can understand, since there is no desktop anyway.
This small patch does precisely that.
|
|
1df0a1e4
|
2020-05-26T16:27:00
|
|
Fixed bug 5140 - KMSDRM: Dynamic vsync toggle does not work
Manuel Alfayate Corchete
The KMSDRM backend was doing things wrong because of some small (but important) misconceptions on how KMS/DRM works: to implement a largely broken non-vsync refresh mechanism, the SwapWindow() function was issuing new pageflips before previous ones had completed, thus causing EBUSY returns, buffer mismanagement, etc... resulting in general breakage on vsync disabling from apps, that would not allow vsync to work again without KMSDRM video re-initialization.
To further clarify, on most DRM drivers async pageflips are NOT working nowadays, so all issued pageflips will complete on next VBLANK, NOT ASAP (calling drmModePageFlip() with the DRM_MODE_PAGE_FLIP_ASYNC flag will return error).
The old code was assuming that can just issue a synchronous (=on VBLANK) pageflip and then pass a 0 timeout to the pull() function so we do not wait for the pageflip event, thinking that this will lead to correct non-vsynced screen updates from the program: That is plain wrong.
Each pageflip has to be waite before issuing a new one, ALWAYS. And if we do not support ASYNC pageflips on the DRM driver level, then we are forced to wait for the next VBLANK. There is no way around it.
I have also added many comments on the KMSDRM code. This is needed for future reference for me or others who may need to look at this code: KMS/DRM terminology regarding what SYNC and ASYNC mean in pageflip terms, and where to do certain things and why, is not trivial. It is not desirable or possible to invest time on researching the same concepts every time there is need to dive into this code. So please leave all these comments in the patch.
|
|
b6afbe63
|
2020-04-07T09:38:57
|
|
Added SDL_log.h to SDL_internal.h so logging is available everywhere
|