sde: Reduce level of indirections to access layer info.

1. Pull LayerArray information in LayerStack struct and
   remove LayerArray.
2. Remove size_t usage in SDE.

Change-Id: If2d4be17e42c27a2ee451c103282bac35eea42dc
diff --git a/displayengine/include/core/layer_stack.h b/displayengine/include/core/layer_stack.h
index 20d6728..fddfa8e 100644
--- a/displayengine/include/core/layer_stack.h
+++ b/displayengine/include/core/layer_stack.h
@@ -131,7 +131,7 @@
 */
 struct LayerRectArray {
   LayerRect *rect;  //!< Pointer to first element of array.
-  size_t count;     //!< Number of elements in the array.
+  uint32_t count;   //!< Number of elements in the array.
 
   LayerRectArray() : rect(NULL), count(0) { }
 };
@@ -184,17 +184,6 @@
             plane_alpha(0) { }
 };
 
-/*! @brief This structure defines an array of display layers.
-
-  @sa LayerStack
-*/
-struct LayerArray {
-  Layer *layer;   //!< Pointer to first element of array.
-  size_t count;   //!< Number of elements in the array.
-
-  LayerArray() : layer(NULL), count(0) { }
-};
-
 /*! @brief This structure defines a layer stack that contains layers which need to be composed and
   rendered onto the target.
 
@@ -215,7 +204,8 @@
                                   //!< NOTE: This field applies to a virtual display only.
   };
 
-  LayerArray layers;      //!< Array of layers.
+  Layer *layers;          //!< Array of layers.
+  uint32_t layer_count;   //!< Total number of layers.
   LayerStackFlags flags;  //!< Flags associated with this layer set.
 
   LayerStack() : output_buffer(NULL) { }
diff --git a/displayengine/libs/core/hw_framebuffer.cpp b/displayengine/libs/core/hw_framebuffer.cpp
index 2908d60..3d0078b 100644
--- a/displayengine/libs/core/hw_framebuffer.cpp
+++ b/displayengine/libs/core/hw_framebuffer.cpp
@@ -36,7 +36,6 @@
 #include <sys/ioctl.h>
 #include <linux/fb.h>
 #include <utils/constants.h>
-#include <utils/debug.h>
 
 #include "hw_framebuffer.h"
 
@@ -242,7 +241,7 @@
   uint32_t num_overlays = 0;
   for (uint32_t i = 0; i < hw_layer_info.count; i++) {
     uint32_t layer_index = hw_layer_info.index[i];
-    Layer &layer = stack->layers.layer[layer_index];
+    Layer &layer = stack->layers[layer_index];
     LayerBuffer *input_buffer = layer.input_buffer;
     HWLayerConfig &config = hw_layers->config[i];
     HWPipeInfo &left_pipe = config.left_pipe;
@@ -318,7 +317,7 @@
   stack->retire_fence_fd = retire_fence;
   for (uint32_t i = 0; i < hw_layer_info.count; i++) {
     uint32_t layer_index = hw_layer_info.index[i];
-    Layer &layer = stack->layers.layer[layer_index];
+    Layer &layer = stack->layers[layer_index];
     LayerBuffer *input_buffer = layer.input_buffer;
     input_buffer->release_fence_fd = dup(release_fence);
   }
diff --git a/displayengine/libs/core/hw_framebuffer.h b/displayengine/libs/core/hw_framebuffer.h
index d0c43c7..ebd8ccb 100644
--- a/displayengine/libs/core/hw_framebuffer.h
+++ b/displayengine/libs/core/hw_framebuffer.h
@@ -30,11 +30,6 @@
 
 namespace sde {
 
-struct HWContext {
-  HWBlockType type;
-  int device_fd;
-};
-
 class HWFrameBuffer : public HWInterface {
  public:
   HWFrameBuffer();
@@ -54,6 +49,11 @@
   virtual DisplayError Commit(Handle device, HWLayers *hw_layers);
 
  private:
+  struct HWContext {
+    HWBlockType type;
+    int device_fd;
+  };
+
   inline void SetFormat(uint32_t *target, const LayerBufferFormat &source);
   inline void SetBlending(uint32_t *target, const LayerBlending &source);
   inline void SetRect(mdp_rect *target, const LayerRect &source);
diff --git a/displayengine/libs/core/res_config.cpp b/displayengine/libs/core/res_config.cpp
index 7d16c00..0f71945 100644
--- a/displayengine/libs/core/res_config.cpp
+++ b/displayengine/libs/core/res_config.cpp
@@ -40,7 +40,7 @@
   HWLayersInfo &layer_info = hw_layers->info;
 
   for (uint32_t i = 0; i < layer_info.count; i++) {
-    Layer& layer = layer_info.stack->layers.layer[layer_info.index[i]];
+    Layer& layer = layer_info.stack->layers[layer_info.index[i]];
     float w_scale, h_scale;
     if (!IsValidDimension(layer, &w_scale, &h_scale)) {
       DLOGV("Invalid dimension");
diff --git a/displayengine/libs/core/res_manager.cpp b/displayengine/libs/core/res_manager.cpp
index cb44747..16060d8 100644
--- a/displayengine/libs/core/res_manager.cpp
+++ b/displayengine/libs/core/res_manager.cpp
@@ -214,7 +214,7 @@
   }
 
   for (uint32_t i = 0; i < layer_info.count; i++) {
-    Layer &layer = layer_info.stack->layers.layer[layer_info.index[i]];
+    Layer &layer = layer_info.stack->layers[layer_info.index[i]];
     bool use_non_dma_pipe = hw_layers->config[i].use_non_dma_pipe;
 
     // Temp setting, this should be set by comp_manager
diff --git a/displayengine/libs/core/strategy_default.cpp b/displayengine/libs/core/strategy_default.cpp
index b8188aa..d05b9b8 100644
--- a/displayengine/libs/core/strategy_default.cpp
+++ b/displayengine/libs/core/strategy_default.cpp
@@ -37,12 +37,12 @@
                                               HWLayersInfo *hw_layers_info) {
   // Mark all layers for GPU composition. Find GPU target buffer and store its index for programming
   // the hardware.
-  LayerArray &layer_array = hw_layers_info->stack->layers;
+  LayerStack *layer_stack = hw_layers_info->stack;
   uint32_t &hw_layer_count = hw_layers_info->count;
 
   hw_layer_count = 0;
-  for (uint32_t i = 0; i < layer_array.count; i++) {
-    LayerComposition &composition = layer_array.layer[i].composition;
+  for (uint32_t i = 0; i < layer_stack->layer_count; i++) {
+    LayerComposition &composition = layer_stack->layers[i].composition;
     if (composition != kCompositionGPUTarget) {
       composition = kCompositionGPU;
     } else {
diff --git a/displayengine/libs/hwc/hwc_sink.cpp b/displayengine/libs/hwc/hwc_sink.cpp
index 33ba62d..2041944 100644
--- a/displayengine/libs/hwc/hwc_sink.cpp
+++ b/displayengine/libs/hwc/hwc_sink.cpp
@@ -188,13 +188,13 @@
   uint8_t *current_address = layer_stack_.raw;
 
   // Layer array address
-  layer_stack_.layers.layer = reinterpret_cast<Layer *>(current_address);
-  layer_stack_.layers.count = num_hw_layers;
+  layer_stack_.layers = reinterpret_cast<Layer *>(current_address);
+  layer_stack_.layer_count = static_cast<uint32_t>(num_hw_layers);
   current_address += num_hw_layers * sizeof(Layer);
 
   for (size_t i = 0; i < num_hw_layers; i++) {
     hwc_layer_1_t &hwc_layer = content_list->hwLayers[i];
-    Layer &layer = layer_stack_.layers.layer[i];
+    Layer &layer = layer_stack_.layers[i];
 
     // Layer buffer handle address
     layer.input_buffer = reinterpret_cast<LayerBuffer *>(current_address);
@@ -202,7 +202,7 @@
 
     // Visible rectangle address
     layer.visible_regions.rect = reinterpret_cast<LayerRect *>(current_address);
-    layer.visible_regions.count = hwc_layer.visibleRegionScreen.numRects;
+    layer.visible_regions.count = static_cast<uint32_t>(hwc_layer.visibleRegionScreen.numRects);
     current_address += hwc_layer.visibleRegionScreen.numRects * sizeof(LayerRect);
 
     // Dirty rectangle address
@@ -225,7 +225,7 @@
     hwc_layer_1_t &hwc_layer = content_list->hwLayers[i];
     const private_handle_t *pvt_handle = static_cast<const private_handle_t *>(hwc_layer.handle);
 
-    Layer &layer = layer_stack_.layers.layer[i];
+    Layer &layer = layer_stack_.layers[i];
     LayerBuffer *layer_buffer = layer.input_buffer;
 
     if (pvt_handle) {
@@ -271,7 +271,7 @@
 
   for (size_t i = 0; i < num_hw_layers; i++) {
     hwc_layer_1_t &hwc_layer = content_list->hwLayers[i];
-    Layer &layer = layer_stack_.layers.layer[i];
+    Layer &layer = layer_stack_.layers[i];
     SetComposition(&hwc_layer.compositionType, layer.composition);
   }
 
@@ -286,7 +286,7 @@
 
   for (size_t i = 0; i < num_hw_layers; i++) {
     hwc_layer_1_t &hwc_layer = content_list->hwLayers[i];
-    LayerBuffer *layer_buffer = layer_stack_.layers.layer[i].input_buffer;
+    LayerBuffer *layer_buffer = layer_stack_.layers[i].input_buffer;
 
     layer_buffer->acquire_fence_fd = hwc_layer.acquireFenceFd;
   }
@@ -299,8 +299,8 @@
 
   for (size_t i = 0; i < num_hw_layers; i++) {
     hwc_layer_1_t &hwc_layer = content_list->hwLayers[i];
-    Layer &layer = layer_stack_.layers.layer[i];
-    LayerBuffer *layer_buffer = layer_stack_.layers.layer[i].input_buffer;
+    Layer &layer = layer_stack_.layers[i];
+    LayerBuffer *layer_buffer = layer_stack_.layers[i].input_buffer;
 
     if (layer.composition == kCompositionSDE || layer.composition == kCompositionGPUTarget) {
       hwc_layer.releaseFenceFd = layer_buffer->release_fence_fd;