1d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin/* 2829790261efb161bff68251b0a1baceae6610430Mekala Natarajan* Copyright (c) 2014 - 2016, The Linux Foundation. All rights reserved. 3d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* 4d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* Redistribution and use in source and binary forms, with or without modification, are permitted 5d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* provided that the following conditions are met: 6d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* * Redistributions of source code must retain the above copyright notice, this list of 7d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* conditions and the following disclaimer. 8d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* * Redistributions in binary form must reproduce the above copyright notice, this list of 9d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* conditions and the following disclaimer in the documentation and/or other materials provided 10d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* with the distribution. 11d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* * Neither the name of The Linux Foundation nor the names of its contributors may be used to 12d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* endorse or promote products derived from this software without specific prior written 13d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* permission. 14d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* 15d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 16d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 18d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 20d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 21d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*/ 24d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 25d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifndef __CONSTANTS_H__ 26d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define __CONSTANTS_H__ 27d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 28d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#include <stdlib.h> 29d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#include <inttypes.h> 30d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 31d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifndef PRIu64 32d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define PRIu64 "llu" 33d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif 34d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 35d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define INT(exp) static_cast<int>(exp) 36d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define FLOAT(exp) static_cast<float>(exp) 37d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define UINT8(exp) static_cast<uint8_t>(exp) 38d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define UINT16(exp) static_cast<uint16_t>(exp) 39d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define UINT32(exp) static_cast<uint32_t>(exp) 40d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define INT32(exp) static_cast<int32_t>(exp) 41d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define UINT64(exp) static_cast<uint64_t>(exp) 42d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 43d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define ROUND_UP(number, step) ((((number) + ((step) - 1)) / (step)) * (step)) 44d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 45d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define BITMAP(bit) (1 << (bit)) 46d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 47d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define ROUND_UP_ALIGN_DOWN(value, a) FLOAT(FloorToMultipleOf(UINT32(value + 0.5f), UINT32(a))) 48d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define ROUND_UP_ALIGN_UP(value, a) FLOAT(CeilToMultipleOf(UINT32(value + 0.5f), UINT32(a))) 49d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 50d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define IDLE_TIMEOUT_DEFAULT_MS 70 51d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 52d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define IS_RGB_FORMAT(format) (((format) < kFormatYCbCr420Planar) ? true: false) 53d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 54829790261efb161bff68251b0a1baceae6610430Mekala Natarajan#define BITS_PER_BYTE 8 55829790261efb161bff68251b0a1baceae6610430Mekala Natarajan#define BITS_TO_BYTES(x) (((x) + (BITS_PER_BYTE - 1)) / (BITS_PER_BYTE)) 56829790261efb161bff68251b0a1baceae6610430Mekala Natarajan 57d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin// factor value should be in powers of 2(eg: 1, 2, 4, 8) 58d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjintemplate <class T1, class T2> 59d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjininline T1 FloorToMultipleOf(const T1 &value, const T2 &factor) { 60d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin return (T1)(value & (~(factor - 1))); 61d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin} 62d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 63d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjintemplate <class T1, class T2> 64d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjininline T1 CeilToMultipleOf(const T1 &value, const T2 &factor) { 65d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin return (T1)((value + (factor - 1)) & (~(factor - 1))); 66d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin} 67d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 68d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinnamespace sdm { 69d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 70d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin const int kThreadPriorityUrgent = -9; 71d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin const int kMaxRotatePerLayer = 2; 72d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin const uint32_t kMaxBlitTargetLayers = 2; 73d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin const int kPageSize = 4096; 74d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 75d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin typedef void * Handle; 76d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 77d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin} // namespace sdm 78d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 79d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif // __CONSTANTS_H__ 80d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 81