Anthony Pesch
5a296e2589
kmsdrm: avoid overriding the mode requested by SDL_SetWindowDisplayMode
...
when recreating surfaces
2021-06-24 12:12:29 -07:00
Anthony Pesch
fc508eabe2
kmsdrm: remove redundant modeset_pending flag
...
this variable was added in commit 2067a7db8e4a36ba40ab34a55b3166ca28638a60 and
ultimately tracks if this is a surface's first present. checking if the current
bo is NULL provides the same functionality and cuts down on a redundant piece
of state potentially getting out of sync in the future
2021-06-01 15:32:02 -07:00
Anthony Pesch
4c965b7a8d
kmsdrm: fix SetDisplayMode binding the the wrong surface / context
...
SetDisplayMode needs to recreate the EGL surfaces, which then need to be
bound along with the correct context in each rendering thread
commit 3a1d7d9c9ac670bf35cfa8ebf3706a1e2a3e5de4 removed this behavior which
has broken using SetDisplayMode when rendering with multiple contexts
the commit message was rather vague, but if the surfaces do need to be
created immediately, this process probably needs to be split such that
surface is created immediately, but the binding is deferred
2021-06-01 15:32:02 -07:00
Anthony Pesch
fd5de93a02
kmsdrm: fix gbm surface dimensions not matching the mode being set
...
commit 2067a7db8e4a36ba40ab34a55b3166ca28638a60 introduced new surface_w and surface_h
variables which were passed to gbm_surface_create rather than the dimensions from the
drmModeModeInfo structure. commit 5105ecf8b1b37ab4e4b8344550c90dd69f49909e further
refactored this code and no longer synchronized these variables inside
KMSDRM_SetDisplayMode, breaking it
this change removes the variables since they're seemingly redundant to begin with
2021-06-01 15:32:02 -07:00
vanfanel
100166d7d7
[KMSDRM] Improve cursor management.
2021-03-22 10:48:02 -07:00
vanfanel
281a7bdbb3
[KMSDRM] Make the gbm_init flag a viddata member to avoid GBM re-init when several displays are connected.
2021-03-18 11:04:28 -07:00
Cacodemon345
d2d834b990
KMSDRM: Add gamma support
2021-02-25 11:39:10 -08:00
Manuel Alfayate Corchete
bfa51c3845
[KMS/DRM] Fix for bug #5518 : only do async pageflips when hardware supports them.
2021-02-10 10:22:18 -05:00
Manuel Alfayate Corchete
8d95aba174
[KMS/DRM] Remove unused KMSDRM_SetWindowGrab prototype in header file.
2021-02-10 10:22:18 -05:00
Manuel Alfayate Corchete
b17c49509b
[KMS/DRM] Patch for bug #5513 . KMSDRM backend can now manage and use several displays.
2021-02-10 10:22:18 -05:00
Sam Lantinga
f23022ef97
Removed non-functional window grab implementations
2021-02-10 10:22:16 -05:00
Cameron Gutman
a0d3c6c63c
Rename SetWindowGrab() to SetWindowMouseGrab()
2021-02-10 10:22:16 -05:00
Manuel Alfayate Corchete
03665004d0
[KMS/DRM] Small fix to KMSDRM_Waitpageflip(). More comments on how it works.
2021-01-24 00:51:23 -05:00
Manuel Alfayate Corchete
aac74db685
[KMS/DRM] Enable async pageflips.
2021-01-13 15:54:26 +01:00
Manuel Alfayate Corchete
5105ecf8b1
[KMS/DRM] Move surface size info to window driverdata, for coherency.
2021-01-11 21:02:07 +01:00
Manuel Alfayate Corchete
2067a7db8e
[KMS/DRM] Fix fullscreen to windowed transition. Fix aspect ratio correction without using planes.
2021-01-11 20:29:09 +01:00
Manuel Alfayate Corchete
850d9c8c0d
[KMS/DRM] Cleanup remainings from plane/scaling usage.
2021-01-09 02:25:13 +01:00
Manuel Alfayate Corchete
2aeb317743
[KMS/DRM] Fix vkQuake3 in OpenGL mode.
2021-01-08 22:00:28 +01:00
Manuel Alfayate Corchete
b24494734b
[KMS/DRM] Go back to the LEGACY interface only because using planes breaks compatibility with HW, so no advantage on using ATOMIC.
2021-01-08 18:57:12 +01:00
Manuel Alfayate Corchete
cef1bd0639
[KMS/DRM] Prevent creating another default cursor everytime a window is created. Other fixes and cleanups.
2021-01-08 13:14:42 +01:00
Sam Lantinga
9130f7c377
Updated copyright for 2021
2021-01-02 10:25:38 -08:00
Manuel Alfayate Corchete
427c96ec11
[KMS/DRM] Rework some functions.
2020-12-29 14:24:38 +01:00
Manuel Alfayate Corchete
0feaf7d196
[KMS/DRM][Vulkan] Correct non-existing property. Remove hacky surface destruction code (TTY buffer isn't there after a Vulkan window is created).
2020-12-28 14:37:58 +01:00
Manuel Alfayate Corchete
46d31d570d
[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.
2020-12-27 00:43:06 +01:00
Manuel Alfayate Corchete
2fc987c28f
[Buildsystem] Add guards for not building with KMSDRM support if EGL is not available.
2020-12-22 14:15:33 +01:00
Manuel Alfayate Corchete
cf71e01734
[Video/KMSDRM] Remove auxiliary AMDGPU compatibility workarounds not needed anymore.
2020-12-19 23:32:09 +01:00
Manuel Alfayate Corchete
f60f8d5d84
[Video/KMSDRM]: Add Vulkan support to the KMSDRM backend.
2020-12-18 22:53:51 +01:00
Manuel Alfayate Corchete
63b7827709
kmsdrm: properly exit with an error when ATOMIC interface is not yet available, instead of just segfaulting.
2020-10-22 19:44:38 +02:00
Manuel Alfayate Corchete
87a86675ed
kmsdrm: Always use spaces for indentation. Always use SDL_calloc() for calloc.
2020-10-22 16:01:51 +02:00
Manuel Alfayate Corchete
0cb9bfa502
kmsdrm: less excessive error checkhing
2020-09-12 15:58:47 +02:00
Manuel Alfayate Corchete
9e9227add3
kmsdrm: reimplement modesetting for fullscreen window scaling and AR-correction.
2020-09-12 04:52:56 +02:00
Manuel Alfayate Corchete
4575c6942a
kmsdrm: delete ununsed variable.
2020-09-12 02:36:02 +02:00
Ryan C. Gordon
3c6004feb7
kmsdrm: Choose how to swap buffers based on EGL extension availability.
2020-09-10 15:07:23 -04:00
Manuel Alfayate Corchete
0f807fd607
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.
2020-09-07 22:54:15 +02:00
Manuel Alfayate Corchete
cce6c60518
kmsdrm: fix errors when trying to free up videomode driverdata pointers on quit.
2020-09-07 01:33:04 +02:00
Manuel Alfayate Corchete
daa752b10e
kmsdrm: fix first frame display: no need to wait for SwapWindow() for EGL surface creation.
2020-09-06 23:19:54 +02:00
Manuel Alfayate Corchete
d7aebbd58f
kmsdrm: Don't create surfaces until EGL context is available.
2020-09-06 12:08:22 +02:00
Manuel Alfayate Corchete
f4e02a5c1b
kmsdrm: Do NOT modify window size manually from the backend: doing so caused renderer scaling params miscalculation.
2020-08-31 19:17:17 +02:00
Manuel Alfayate Corchete
31b1794534
kmsdrm: use PLANE and CRTC to do hardware-driven window scaling and AR-correction.
2020-08-28 22:38:26 +02:00
Manuel Alfayate Corchete
9b43464d81
kmsdrm: Add programmer credits to the Atomic KMSDRM driver.
2020-08-25 16:30:23 +02:00
Manuel Alfayate Corchete
9316a8d979
kmsdrm: move FENCE FD props setting to SwapWindow(), where it belongs.
2020-08-25 16:18:49 +02:00
Manuel Alfayate Corchete
d43e666eed
kmsdrm: Buffer management refactoring. Fixes for compatibility with more video drivers.
2020-08-25 04:05:36 +02:00
Manuel Alfayate Corchete
eade05ca03
kmsdrm: Finetune integer type usage. Add some comments.
2020-08-24 12:51:20 +02:00
Manuel Alfayate Corchete
0d593d7ead
kmsdrm: Add error control to plane prop setting function. Do most plane prop setting with a single function.
2020-08-23 23:44:07 +02:00
Manuel Alfayate Corchete
e06e9c35c8
kmsdrm: move cursor-related atomic helper functions and related struct typedefs to the SDL_kmsdrmmouse unit.
2020-08-23 11:26:55 +02:00
Manuel Alfayate Corchete
0b7b7721b9
kmsdrm: remove redundant function, use drm_atomic_setbuffers() for disconnecting planes instead.
2020-08-23 03:13:50 +02:00
Manuel Alfayate Corchete
16c04f266a
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.
2020-08-23 02:58:57 +02:00
Manuel Alfayate Corchete
0d0ba111ae
kmsdrm: correct parameter name.
2020-08-19 01:34:56 +02:00
Manuel Alfayate Corchete
5d32eda956
kmsdrm: implement smarter surface recreation function to be used in videomode changes. Other minor arrangements.
2020-08-19 01:31:22 +02:00
Manuel Alfayate Corchete
92cb9192e3
kmsdrm: move hardware cursor functionality to the ATOMIC interface. Disconnect the display plane from the GBM surface buffers before destroying the GBM surface.
2020-08-17 18:35:04 +02:00