hwc: Add support for Macro Tile feature
Macro tile is enabled only if all the conditions are met:
1. GPU hardware should support Macro Tiling.
2. MDSS hardware should support Macro Tiling.
3. USAGE flags shouldnt contain GRALLOC_USAGE_SW_READ_OFTEN and
GRALLOC_USAGE_SW_WRITE_OFTEN.
4. RGB 16bit and 32bit formats.
5. persist.hwc.macro_tile_enable flag should be enabled.
PRIV_FLAGS_TILE_RENDERED flag is added to indicate whether the layer
is rendered/composited in Macro Tiling or Linear format.
Change-Id: Ie3139839c84d76c5d1a2300f33910a09eb7336f4
diff --git a/libgralloc/gr.h b/libgralloc/gr.h
index 1949f45..8c68e16 100644
--- a/libgralloc/gr.h
+++ b/libgralloc/gr.h
@@ -51,9 +51,20 @@
int mapFrameBufferLocked(struct private_module_t* module);
int terminateBuffer(gralloc_module_t const* module, private_handle_t* hnd);
+size_t getBufferSizeAndDimensions(int width, int height, int format, int usage,
+ int& alignedw, int &alignedh);
size_t getBufferSizeAndDimensions(int width, int height, int format,
int& alignedw, int &alignedh);
+
+// Attributes include aligned width, aligned height, tileEnabled and size of the buffer
+void getBufferAttributes(int width, int height, int format, int usage,
+ int& alignedw, int &alignedh,
+ int& tileEnabled, size_t &size);
+
+
+bool isMacroTileEnabled(int format, int usage);
+
int decideBufferHandlingMechanism(int format, const char *compositionUsed,
int hasBlitEngine, int *needConversion,
int *useBufferDirectly);
@@ -95,7 +106,16 @@
* @return aligned width, aligned height
*/
void getAlignedWidthAndHeight(int width, int height, int format,
- int& alignedw, int &alignedh);
+ int tileEnabled, int& alignedw, int &alignedh);
+
+ /*
+ * Function to return whether GPU support MacroTile feature
+ *
+ * @return >0 : supported
+ * 0 : not supported
+ */
+ int isMacroTilingSupportedByGPU();
+
private:
// Pointer to the padding library.
void *libadreno_utils;
@@ -114,6 +134,8 @@
int padding_threshold,
int *aligned_w,
int *aligned_h);
+ // link to the surface padding library.
+ int (*LINK_adreno_isMacroTilingSupportedByGpu) (void);
};
#endif /* GR_H_ */