assign overlay, cursor, primary layer to each output 12/271112/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Fri, 11 Feb 2022 06:18:23 +0000 (15:18 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Fri, 11 Feb 2022 06:19:25 +0000 (15:19 +0900)
this patch makes to assign overlay and cursor layer to external output
and other layers are not used because current hwc policy use 3 layers.

Change-Id: I25b6239ff78ac7dfae9bf57c5c4f503cb9a4a0a5

src/libhal-backend-tdm-vc4/tdm_backend_vc4_types.h
src/libhal-backend-tdm-vc4/tdm_vc4_display.c

index ed45909..46e6b08 100644 (file)
@@ -186,6 +186,8 @@ struct _tdm_vc4_output {
        unsigned int connector_type_id;
        struct list_head layer_list;
        tdm_vc4_layer *primary_layer;
+       tdm_vc4_layer *overlay_layer;
+       tdm_vc4_layer *cursor_layer;
 
        /* not fixed data below */
        hal_tdm_output_vblank_handler vblank_func;
index d5e2470..5b6ff68 100644 (file)
@@ -609,6 +609,17 @@ _tdm_vc4_display_create_layer_list_type(tdm_vc4_display *display_data)
 
                LIST_FOR_EACH_ENTRY(output_data, &display_data->output_list, link) {
                        if (plane->possible_crtcs & (1 << output_data->pipe)) {
+                               if (type == DRM_PLANE_TYPE_CURSOR) {
+                                       if (output_data->cursor_layer)
+                                               continue;
+                               } else if (type == DRM_PLANE_TYPE_OVERLAY)  {
+                                       if (output_data->overlay_layer)
+                                               continue;
+                               } else if (type == DRM_PLANE_TYPE_PRIMARY) {
+                                       if (output_data->primary_layer)
+                                               continue;
+                               }
+
                                output_find = 1;
                                break;
                        }
@@ -630,10 +641,12 @@ _tdm_vc4_display_create_layer_list_type(tdm_vc4_display *display_data)
                        layer_data->capabilities = TDM_VC4_LAYER_CAPABILITY_CURSOR |
                                                                           TDM_VC4_LAYER_CAPABILITY_GRAPHIC;
                        layer_data->zpos = 2;
+                       output_data->cursor_layer = layer_data;
                } else if (type == DRM_PLANE_TYPE_OVERLAY) {
                        layer_data->capabilities = TDM_VC4_LAYER_CAPABILITY_OVERLAY |
                                                                           TDM_VC4_LAYER_CAPABILITY_GRAPHIC;
                        layer_data->zpos = 1;
+                       output_data->overlay_layer = layer_data;
                } else if (type == DRM_PLANE_TYPE_PRIMARY) {
                        layer_data->capabilities = TDM_VC4_LAYER_CAPABILITY_PRIMARY |
                                                                           TDM_VC4_LAYER_CAPABILITY_GRAPHIC;