use two plane 17/166017/3
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 5 Jan 2018 07:48:20 +0000 (16:48 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 5 Jan 2018 08:27:16 +0000 (17:27 +0900)
support only RGB plane.
set TDM_LAYER_CAPABILITY_SCANOUT layer capability.

Change-Id: I93f49d098099d0609f11a860340f8904634460d3
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/tdm_nexell_display.c

index c5959ec..7975409 100644 (file)
@@ -561,14 +561,6 @@ _tdm_nexell_display_create_layer_list_type(tdm_nexell_data *nexell_data)
                        goto failed;
                }
 
-               /* The TDM drm backend only support a primary layer. */
-               if (type != DRM_PLANE_TYPE_PRIMARY) {
-                       TDM_INFO("The TDM drm backend only support a primary layer. plane(%d) type(%d)",
-                                        plane->plane_id, type);
-                       drmModeFreePlane(plane);
-                       continue;
-               }
-
                planes[plane_cnt] = plane;
                types[plane_cnt] = type;
                plane_cnt++;
@@ -593,7 +585,12 @@ _tdm_nexell_display_create_layer_list_type(tdm_nexell_data *nexell_data)
 
        opos_next = 1;
        cpos_next = ovl_cnt;
-       for (i = 0; i < plane_cnt; i++) {
+       if (plane_cnt < 2) {
+               TDM_ERR("plane count(%d) should be over 2", plane_cnt);
+               goto failed;
+       }
+
+       for (i = plane_cnt - 2; i >= 0; i--) {
                tdm_nexell_layer_data *layer_data;
 
                layer_data = calloc(1, sizeof(tdm_nexell_layer_data));
@@ -608,15 +605,18 @@ _tdm_nexell_display_create_layer_list_type(tdm_nexell_data *nexell_data)
 
                if (types[i] == DRM_PLANE_TYPE_CURSOR) {
                        layer_data->capabilities = TDM_LAYER_CAPABILITY_CURSOR |
-                                                  TDM_LAYER_CAPABILITY_GRAPHIC;
+                                                                          TDM_LAYER_CAPABILITY_GRAPHIC |
+                                                                          TDM_LAYER_CAPABILITY_SCANOUT;
                        layer_data->zpos = cpos_next++;
                } else if (types[i] == DRM_PLANE_TYPE_OVERLAY) {
                        layer_data->capabilities = TDM_LAYER_CAPABILITY_OVERLAY |
-                                                  TDM_LAYER_CAPABILITY_GRAPHIC;
+                                                                          TDM_LAYER_CAPABILITY_GRAPHIC |
+                                                                          TDM_LAYER_CAPABILITY_SCANOUT;
                        layer_data->zpos = opos_next++;
                } else if (types[i] == DRM_PLANE_TYPE_PRIMARY) {
                        layer_data->capabilities = TDM_LAYER_CAPABILITY_PRIMARY |
-                                                  TDM_LAYER_CAPABILITY_GRAPHIC;
+                                                                          TDM_LAYER_CAPABILITY_GRAPHIC |
+                                                                          TDM_LAYER_CAPABILITY_SCANOUT;
                        layer_data->zpos = 0;
                        output_data->primary_layer = layer_data;
                } else {
@@ -625,8 +625,8 @@ _tdm_nexell_display_create_layer_list_type(tdm_nexell_data *nexell_data)
                }
 
                TDM_INFO("layer_data(%p) plane_id(%d) crtc_id(%d) zpos(%d) capabilities(%x)",
-                        layer_data, layer_data->plane_id, layer_data->output_data->crtc_id,
-                        layer_data->zpos, layer_data->capabilities);
+                                layer_data, layer_data->plane_id, layer_data->output_data->crtc_id,
+                                layer_data->zpos, layer_data->capabilities);
 
                LIST_ADDTAIL(&layer_data->link, &output_data->layer_list);
        }