tdm_helper: add checking hwc mode for tdm-monitor -info
[platform/core/uifw/libtdm.git] / src / tdm_helper.c
index c7e0983..804a112 100644 (file)
@@ -9,7 +9,7 @@
  *          Taeheon Kim <th908.kim@samsung.com>,
  *          YoungJun Cho <yj44.cho@samsung.com>,
  *          SooChan Lim <sc1.lim@samsung.com>,
- *          Boram Park <sc1.lim@samsung.com>
+ *          Boram Park <boram1288.park@samsung.com>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -44,7 +44,7 @@
 
 #define PNG_DEPTH 8
 
-static const char *file_exts[2] = {"png", "yuv"};
+static const char *file_exts[2] = {"png", "raw"};
 
 int tdm_dump_enable;
 char *tdm_debug_dump_dir;
@@ -291,6 +291,11 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
                strncat(p, ext, 3);
                p += 3;
                *p = '\0';
+       } else {
+               len = strnlen(file, TDM_PATH_LEN - 1);
+               strncat(p, file, len);
+               p += len;
+               *p = '\0';
        }
 
        tdm_helper_get_buffer_full_size(buffer, &bw, &bh);
@@ -326,17 +331,15 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
                                                         info.planes[1].size, NULL,
                                                         0);
                break;
-       case TBM_FORMAT_YUYV:
-       case TBM_FORMAT_UYVY:
+       default:
                _tdm_helper_dump_raw((const char*)temp,
                                                         info.planes[0].ptr,
-                                                        info.planes[0].size, NULL, 0,
-                                                        NULL, 0);
+                                                        info.planes[0].size,
+                                                        info.planes[1].ptr,
+                                                        info.planes[1].size,
+                                                        info.planes[2].ptr,
+                                                        info.planes[2].size);
                break;
-       default:
-               TDM_ERR("can't dump %c%c%c%c buffer", FOURCC_STR(info.format));
-               tbm_surface_unmap(buffer);
-               return;
        }
 
        tbm_surface_unmap(buffer);
@@ -383,22 +386,6 @@ tdm_helper_clear_buffer_color(tbm_surface_h buffer, tdm_pos *pos, unsigned int c
                memset((char*)info.planes[0].ptr, 0x10, info.planes[0].stride * info.height);
                memset((char*)info.planes[1].ptr, 0x80, info.planes[1].stride * (info.height >> 1));
                break;
-       case TBM_FORMAT_YUYV: {
-               int *ibuf = (int*)info.planes[0].ptr;
-               int i, size = info.planes[0].stride * info.height / 4;
-
-               for (i = 0 ; i < size ; i++)
-                       ibuf[i] = 0x10801080;
-       }
-       break;
-       case TBM_FORMAT_UYVY: {
-               int *ibuf = (int*)info.planes[0].ptr;
-               int i, size = info.planes[0].stride * info.height / 4;
-
-               for (i = 0 ; i < size ; i++)
-                       ibuf[i] = 0x80108010; /* YUYV -> 0xVYUY */
-       }
-       break;
        default:
                TDM_ERR("can't clear %c%c%c%c buffer", FOURCC_STR(info.format));
                break;
@@ -859,6 +846,8 @@ _tdm_helper_get_backend_information(tdm_private_module *private_module, char *re
                        }
                }
        }
+       if (LIST_IS_EMPTY(&private_module->output_list))
+               TDM_SNPRINTF(reply, len, "(no output)\n");
        TDM_SNPRINTF(reply, len, "\n");
 
        /* layer information */
@@ -867,6 +856,11 @@ _tdm_helper_get_backend_information(tdm_private_module *private_module, char *re
        TDM_SNPRINTF(reply, len, "idx   output   zpos   buf   format   size   crop   geometry   transform\n");
        TDM_SNPRINTF(reply, len, "-----------------------------------------------------------------------\n");
        LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) {
+               if (private_output->caps.capabilities & TDM_OUTPUT_CAPABILITY_HWC) {
+                       TDM_SNPRINTF(reply, len, "(no layer), hwc mode on\n");
+                       continue;
+               }
+
                LIST_FOR_EACH_ENTRY(private_layer, &private_output->layer_list, link) {
                        if (!private_layer->usable) {
                                tdm_info_layer info;
@@ -885,10 +879,7 @@ _tdm_helper_get_backend_information(tdm_private_module *private_module, char *re
                                format = tbm_surface_get_format(private_layer->showing_buffer->buffer);
                                tbm_surface_get_info(private_layer->showing_buffer->buffer, &buf_info);
 
-                               if (IS_RGB(format))
-                                       size.h = buf_info.planes[0].stride >> 2;
-                               else
-                                       size.h = buf_info.planes[0].stride;
+                               size.h = tbm_surface_get_width(private_layer->showing_buffer->buffer);
                                size.v = tbm_surface_get_height(private_layer->showing_buffer->buffer);
 
                                if (info.src_config.format)
@@ -961,6 +952,8 @@ _tdm_helper_get_backend_information(tdm_private_module *private_module, char *re
                        }
                }
        }
+       if (LIST_IS_EMPTY(&private_module->output_list))
+               TDM_SNPRINTF(reply, len, "(no layer)\n");
        TDM_SNPRINTF(reply, len, "\n");
 
        if (private_module->capabilities & TDM_DISPLAY_CAPABILITY_PP) {
@@ -1095,4 +1088,4 @@ tdm_helper_output_vblank_timer_expired(tdm_output *output)
        TDM_RETURN_VAL_IF_FAIL(private_output != NULL, -1);
 
        return private_output->vblank_timeout_timer_expired;
-}
\ No newline at end of file
+}