Distiguish between component-based formats and 'the rest' in vesadrm's
color management. Scanout buffers with component-based format allow
for gamma correction. Palette-based formats (i.e., 'the rest') require
palette setup.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
Reviewed-by: Javier Martinez Canillas <javi...@redhat.com>
---
 drivers/gpu/drm/sysfb/vesadrm.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/sysfb/vesadrm.c b/drivers/gpu/drm/sysfb/vesadrm.c
index 9596322c232b..b6e5ed1863f9 100644
--- a/drivers/gpu/drm/sysfb/vesadrm.c
+++ b/drivers/gpu/drm/sysfb/vesadrm.c
@@ -223,15 +223,22 @@ static void vesadrm_crtc_helper_atomic_flush(struct 
drm_crtc *crtc,
         * plane's color format.
         */
        if (crtc_state->enable && crtc_state->color_mgmt_changed) {
-               if (sysfb_crtc_state->format == sysfb->fb_format) {
-                       if (crtc_state->gamma_lut)
-                               vesadrm_load_gamma_lut(vesa,
-                                                      sysfb_crtc_state->format,
-                                                      
crtc_state->gamma_lut->data);
-                       else
+               switch (sysfb->fb_format->format) {
+               /*
+                * Component formats
+                */
+               default:
+                       if (sysfb_crtc_state->format == sysfb->fb_format) {
+                               if (crtc_state->gamma_lut)
+                                       vesadrm_load_gamma_lut(vesa,
+                                                              
sysfb_crtc_state->format,
+                                                              
crtc_state->gamma_lut->data);
+                               else
+                                       vesadrm_fill_gamma_lut(vesa, 
sysfb_crtc_state->format);
+                       } else {
                                vesadrm_fill_gamma_lut(vesa, 
sysfb_crtc_state->format);
-               } else {
-                       vesadrm_fill_gamma_lut(vesa, sysfb_crtc_state->format);
+                       }
+                       break;
                }
        }
 }
-- 
2.50.0

Reply via email to