Home | History | Annotate | Download | only in utils
      1 /*
      2 * Copyright (c) 2016, The Linux Foundation. All rights reserved.
      3 *
      4 * Redistribution and use in source and binary forms, with or without
      5 * modification, are permitted provided that the following conditions are
      6 * met:
      7 *   * Redistributions of source code must retain the above copyright
      8 *     notice, this list of conditions and the following disclaimer.
      9 *   * Redistributions in binary form must reproduce the above
     10 *     copyright notice, this list of conditions and the following
     11 *     disclaimer in the documentation and/or other materials provided
     12 *     with the distribution.
     13 *   * Neither the name of The Linux Foundation nor the names of its
     14 *     contributors may be used to endorse or promote products derived
     15 *     from this software without specific prior written permission.
     16 *
     17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
     18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
     20 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
     21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
     27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28 */
     29 
     30 #include <utils/formats.h>
     31 
     32 #define __CLASS__ "FormatsUtils"
     33 
     34 namespace sdm {
     35 
     36 bool IsUBWCFormat(LayerBufferFormat format) {
     37   switch (format) {
     38   case kFormatRGBA8888Ubwc:
     39   case kFormatRGBX8888Ubwc:
     40   case kFormatBGR565Ubwc:
     41   case kFormatYCbCr420SPVenusUbwc:
     42   case kFormatRGBA1010102Ubwc:
     43   case kFormatRGBX1010102Ubwc:
     44   case kFormatYCbCr420TP10Ubwc:
     45     return true;
     46   default:
     47     return false;
     48   }
     49 }
     50 
     51 bool Is10BitFormat(LayerBufferFormat format) {
     52   switch (format) {
     53   case kFormatRGBA1010102:
     54   case kFormatARGB2101010:
     55   case kFormatRGBX1010102:
     56   case kFormatXRGB2101010:
     57   case kFormatBGRA1010102:
     58   case kFormatABGR2101010:
     59   case kFormatBGRX1010102:
     60   case kFormatXBGR2101010:
     61   case kFormatRGBA1010102Ubwc:
     62   case kFormatRGBX1010102Ubwc:
     63   case kFormatYCbCr420P010:
     64   case kFormatYCbCr420TP10Ubwc:
     65     return true;
     66   default:
     67     return false;
     68   }
     69 }
     70 
     71 const char *GetFormatString(const LayerBufferFormat &format) {
     72   switch (format) {
     73   case kFormatARGB8888:                 return "ARGB_8888";
     74   case kFormatRGBA8888:                 return "RGBA_8888";
     75   case kFormatBGRA8888:                 return "BGRA_8888";
     76   case kFormatXRGB8888:                 return "XRGB_8888";
     77   case kFormatRGBX8888:                 return "RGBX_8888";
     78   case kFormatBGRX8888:                 return "BGRX_8888";
     79   case kFormatRGBA5551:                 return "RGBA_5551";
     80   case kFormatRGBA4444:                 return "RGBA_4444";
     81   case kFormatRGB888:                   return "RGB_888";
     82   case kFormatBGR888:                   return "BGR_888";
     83   case kFormatRGB565:                   return "RGB_565";
     84   case kFormatBGR565:                   return "BGR_565";
     85   case kFormatRGBA8888Ubwc:             return "RGBA_8888_UBWC";
     86   case kFormatRGBX8888Ubwc:             return "RGBX_8888_UBWC";
     87   case kFormatBGR565Ubwc:               return "BGR_565_UBWC";
     88   case kFormatYCbCr420Planar:           return "Y_CB_CR_420";
     89   case kFormatYCrCb420Planar:           return "Y_CR_CB_420";
     90   case kFormatYCrCb420PlanarStride16:   return "Y_CR_CB_420_STRIDE16";
     91   case kFormatYCbCr420SemiPlanar:       return "Y_CBCR_420";
     92   case kFormatYCrCb420SemiPlanar:       return "Y_CRCB_420";
     93   case kFormatYCbCr420SemiPlanarVenus:  return "Y_CBCR_420_VENUS";
     94   case kFormatYCrCb420SemiPlanarVenus:  return "Y_CRCB_420_VENUS";
     95   case kFormatYCbCr422H1V2SemiPlanar:   return "Y_CBCR_422_H1V2";
     96   case kFormatYCrCb422H1V2SemiPlanar:   return "Y_CRCB_422_H1V2";
     97   case kFormatYCbCr422H2V1SemiPlanar:   return "Y_CBCR_422_H2V1";
     98   case kFormatYCrCb422H2V1SemiPlanar:   return "Y_CRCB_422_H2V2";
     99   case kFormatYCbCr420SPVenusUbwc:      return "Y_CBCR_420_VENUS_UBWC";
    100   case kFormatYCbCr422H2V1Packed:       return "YCBYCR_422_H2V1";
    101   case kFormatRGBA1010102:              return "RGBA_1010102";
    102   case kFormatARGB2101010:              return "ARGB_2101010";
    103   case kFormatRGBX1010102:              return "RGBX_1010102";
    104   case kFormatXRGB2101010:              return "XRGB_2101010";
    105   case kFormatBGRA1010102:              return "BGRA_1010102";
    106   case kFormatABGR2101010:              return "ABGR_2101010";
    107   case kFormatBGRX1010102:              return "BGRX_1010102";
    108   case kFormatXBGR2101010:              return "XBGR_2101010";
    109   case kFormatRGBA1010102Ubwc:          return "RGBA_1010102_UBWC";
    110   case kFormatRGBX1010102Ubwc:          return "RGBX_1010102_UBWC";
    111   case kFormatYCbCr420P010:             return "Y_CBCR_420_P010";
    112   case kFormatYCbCr420TP10Ubwc:         return "Y_CBCR_420_TP10_UBWC";
    113   default:                              return "UNKNOWN";
    114   }
    115 }
    116 
    117 }  // namespace sdm
    118 
    119