• Show log

    Commit

  • Hash : 3e935aec
    Author : Sam Lantinga
    Date : 2020-02-09T11:44:22

    Fixed bug 4966 - KMSDRM: Add dynamic modeset support
    
    Anthony Pesch
    
    * Remove triple buffering support. As far as I can tell, this goes against the libdrm API; the EGL implementations themselves control the buffering. Removing it isn't absolutely necessary as it seemingly works on the Pi at least, but I noticed this while doing my work and explained my reasoning in the commit.
    
    * Replace the crtc_ready logic which allocates an extra bo to perform the initial CRTC configuration (which is required before calling drmModePageFlip) with a call to drmModeSetCrtc after the front and back buffers are allocated, avoiding this allocation.
    
    * Standardized the SDL_*Data variable names and null checks to improve readability. Given that there were duplicate fields in each SDL_*Data structure, having generic names such as "data" at times was very confusing.
    
    * Removed unused fields from the SDL_*Data structures and moves all display related fields out of SDL_VideoData and into SDL_DisplayData. Not required since the code only supports a single display right now, but this was helpful in reading and understanding the code initially.
    
    * Implement KMSDRM_GetDisplayModes / KMSDRM_SetDisplayMode to provide dynamic modeset support.
    
    These changes have been tested on a Raspberry Pi 4 and a Dell XPS laptop with an HD 520.
    
    As an update, I went back over the triple buffer changes and left them in. I didn't entirely get the code originally, I had just seen it calling KMSDRM_gbm_surface_lock_front_buffer twice for a single swap and had removed it because I was paranoid of bugs stemming from it while working on the modeset changes.
    
    I've made a few small changes to the logic that had thrown me off originally and rebased the changes:
    * The condition wrapping the call to release buffer was incorrect.
    * The first call to KMSDRM_gbm_surface_lock_front_buffer has been removed. I don't understand why it existed.
    * Added additional comments describing what was going on in the code (as it does fix the buffer release pattern of the original code before it).
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/SDL.git
    Git SSH git@git.kmx.io:kc3-lang/SDL.git
    Public access ? public
    Description

    Fork of https://github.com/libsdl-org/SDL

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags