Home | History | Annotate | Download | only in common
      1 /*
      2 // Copyright(c)2014 IntelCorporation
      3 //
      4 // LicensedundertheApacheLicense,Version2.0(the"License");
      5 // youmaynotusethisfileexceptincompliancewiththeLicense.
      6 // YoumayobtainacopyoftheLicenseat
      7 //
      8 // http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unlessrequiredbyapplicablelaworagreedtoinwriting,software
     11 // distributedundertheLicenseisdistributedonan"ASIS"BASIS,
     12 // WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
     13 // SeetheLicenseforthespecificlanguagegoverningpermissionsand
     14 // limitationsundertheLicense.
     15 */
     16 #include <HwcTrace.h>
     17 #include <common/GrallocBufferBase.h>
     18 #include <DisplayQuery.h>
     19 
     20 
     21 namespace android {
     22 namespace intel {
     23 
     24 GrallocBufferBase::GrallocBufferBase(buffer_handle_t handle)
     25     : GraphicBuffer(handle)
     26 {
     27     ATRACE("handle = %#x", handle);
     28     initBuffer(handle);
     29 }
     30 
     31 void GrallocBufferBase::resetBuffer(buffer_handle_t handle)
     32 {
     33     GraphicBuffer::resetBuffer(handle);
     34     initBuffer(handle);
     35 }
     36 
     37 void GrallocBufferBase::initBuffer(buffer_handle_t handle)
     38 {
     39     // nothing to initialize
     40 }
     41 
     42 void GrallocBufferBase::initStride()
     43 {
     44     int yStride, uvStride;
     45 
     46     // setup stride
     47     switch (mFormat) {
     48     case HAL_PIXEL_FORMAT_YV12:
     49     case HAL_PIXEL_FORMAT_I420:
     50         uint32_t yStride_align;
     51         yStride_align = DisplayQuery::getOverlayLumaStrideAlignment(mFormat);
     52         if (yStride_align > 0)
     53         {
     54             yStride = align_to(align_to(mWidth, 32), yStride_align);
     55         }
     56         else
     57         {
     58             yStride = align_to(align_to(mWidth, 32), 64);
     59         }
     60         uvStride = align_to(yStride >> 1, 64);
     61         mStride.yuv.yStride = yStride;
     62         mStride.yuv.uvStride = uvStride;
     63         break;
     64     case HAL_PIXEL_FORMAT_NV12:
     65         yStride = align_to(align_to(mWidth, 32), 64);
     66         uvStride = yStride;
     67         mStride.yuv.yStride = yStride;
     68         mStride.yuv.uvStride = uvStride;
     69         break;
     70     case OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar:
     71     case OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar_Tiled:
     72         yStride = align_to(align_to(mWidth, 32), 64);
     73         uvStride = yStride;
     74         mStride.yuv.yStride = yStride;
     75         mStride.yuv.uvStride = uvStride;
     76         break;
     77     case HAL_PIXEL_FORMAT_YUY2:
     78     case HAL_PIXEL_FORMAT_UYVY:
     79         yStride = align_to((align_to(mWidth, 32) << 1), 64);
     80         uvStride = 0;
     81         mStride.yuv.yStride = yStride;
     82         mStride.yuv.uvStride = uvStride;
     83         break;
     84     default:
     85         mStride.rgb.stride = align_to(((mBpp >> 3) * align_to(mWidth, 32)), 64);
     86         break;
     87     }
     88 }
     89 
     90 }
     91 }
     92