sde: Interfaces for Snapdragon Display Engine (SDE)
1. Define SDE interfaces for hwc. 2. Define strategy manager interfaces for composition manager. 3. Define utility classes used by SDE. Change-Id: I2985fbd05e824cb41ac9b03aa0114daac754d712
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
parent
8f3e80c320
commit
f9ba485c78
53
displayengine/include/utils/constants.h
Normal file
53
displayengine/include/utils/constants.h
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
* provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
|
||||
* endorse or promote products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __CONSTANTS_H__
|
||||
#define __CONSTANTS_H__
|
||||
|
||||
#define LIKELY(exp) __builtin_expect((exp) != 0, true)
|
||||
#define UNLIKELY(exp) __builtin_expect((exp) != 0, false)
|
||||
|
||||
#define INT(exp) static_cast<int>(exp)
|
||||
#define FLOAT(exp) static_cast<float>(exp)
|
||||
#define UINT32(exp) static_cast<uint32_t>(exp)
|
||||
#define INT32(exp) static_cast<int32_t>(exp)
|
||||
|
||||
#define STRUCT_VAR(struct_name, var_name) \
|
||||
struct struct_name var_name; \
|
||||
memset(&var_name, 0, sizeof(var_name));
|
||||
|
||||
#define STRUCT_VAR_ARRAY(struct_name, var_name, num_var) \
|
||||
struct struct_name var_name[num_var]; \
|
||||
memset(&var_name[0], 0, sizeof(var_name));
|
||||
|
||||
#define ROUND_UP(number, step) ((((number) + ((step) - 1)) / (step)) * (step))
|
||||
|
||||
namespace sde {
|
||||
|
||||
typedef void * Handle;
|
||||
|
||||
} // namespace sde
|
||||
|
||||
#endif // __CONSTANTS_H__
|
||||
|
||||
56
displayengine/include/utils/debug.h
Normal file
56
displayengine/include/utils/debug.h
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
* provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
|
||||
* endorse or promote products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __DEBUG_H__
|
||||
#define __DEBUG_H__
|
||||
|
||||
namespace sde {
|
||||
|
||||
enum LogTag {
|
||||
kTagNone = 0, //!< Log tag name is not specified.
|
||||
kTagCore, //!< Log is tagged for display core.
|
||||
kTagStrategy, //!< Log is tagged for composition strategy.
|
||||
};
|
||||
|
||||
class Debug {
|
||||
public:
|
||||
// Log handlers
|
||||
static void Error(const LogTag &tag, const char *format, ...);
|
||||
static void Warning(const LogTag &tag, const char *format, ...);
|
||||
static void Info(const LogTag &tag, const char *format, ...);
|
||||
static void Verbose(const LogTag &tag, const char *format, ...);
|
||||
|
||||
// Debug properties
|
||||
static bool IsVirtualDriver() { return debug_.virtual_driver_; }
|
||||
|
||||
private:
|
||||
Debug();
|
||||
bool virtual_driver_;
|
||||
static Debug debug_;
|
||||
};
|
||||
|
||||
} // namespace sde
|
||||
|
||||
#endif // __DEBUG_H__
|
||||
|
||||
85
displayengine/include/utils/locker.h
Normal file
85
displayengine/include/utils/locker.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
* provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
|
||||
* endorse or promote products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __LOCKER_H__
|
||||
#define __LOCKER_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#define SCOPE_LOCK(locker) Locker::ScopeLock scopeLock(locker)
|
||||
|
||||
namespace sde {
|
||||
|
||||
class Locker {
|
||||
public:
|
||||
class ScopeLock {
|
||||
public:
|
||||
explicit ScopeLock(Locker& locker) : locker_(locker) {
|
||||
locker_.Lock();
|
||||
}
|
||||
|
||||
~ScopeLock() {
|
||||
locker_.Unlock();
|
||||
}
|
||||
|
||||
private:
|
||||
Locker &locker_;
|
||||
};
|
||||
|
||||
Locker() {
|
||||
pthread_mutex_init(&mutex_, 0);
|
||||
pthread_cond_init(&condition_, 0);
|
||||
}
|
||||
|
||||
~Locker() {
|
||||
pthread_mutex_destroy(&mutex_);
|
||||
pthread_cond_destroy(&condition_);
|
||||
}
|
||||
|
||||
void Lock() { pthread_mutex_lock(&mutex_); }
|
||||
void Unlock() { pthread_mutex_unlock(&mutex_); }
|
||||
void Signal() { pthread_cond_signal(&condition_); }
|
||||
void Broadcast() { pthread_cond_broadcast(&condition_); }
|
||||
void Wait() { pthread_cond_wait(&condition_, &mutex_); }
|
||||
int WaitFinite(long int ms) {
|
||||
struct timespec ts;
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
ts.tv_sec = tv.tv_sec + ms/1000;
|
||||
ts.tv_nsec = tv.tv_usec*1000 + (ms%1000)*1000000;
|
||||
ts.tv_sec += ts.tv_nsec/1000000000L;
|
||||
ts.tv_nsec += ts.tv_nsec%1000000000L;
|
||||
return pthread_cond_timedwait(&condition_, &mutex_, &ts);
|
||||
}
|
||||
|
||||
private:
|
||||
pthread_mutex_t mutex_;
|
||||
pthread_cond_t condition_;
|
||||
};
|
||||
|
||||
} // namespace sde
|
||||
|
||||
#endif // __LOCKER_H__
|
||||
|
||||
53
displayengine/include/utils/logger.h
Normal file
53
displayengine/include/utils/logger.h
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
* provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
|
||||
* endorse or promote products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __LOGGER_H__
|
||||
#define __LOGGER_H__
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
namespace sde {
|
||||
|
||||
#ifndef DISPLAY_LOG_TAG
|
||||
#define DISPLAY_LOG_TAG kLogTagNone
|
||||
#endif
|
||||
|
||||
#ifndef DISPLAY_MODULE_NAME
|
||||
#define DISPLAY_MODULE_NAME "SDE"
|
||||
#endif
|
||||
|
||||
#define DLOG(method, format, ...) Debug::method(DISPLAY_LOG_TAG, \
|
||||
DISPLAY_MODULE_NAME ": " format, ##__VA_ARGS__)
|
||||
|
||||
// DISPLAY_LOG_TAG and DISPLAY_MODULE_NAME must be defined before #include this header file in
|
||||
// respective module, else default definitions are used.
|
||||
#define DLOGE(format, ...) DLOG(Error, format, ##__VA_ARGS__)
|
||||
#define DLOGW(format, ...) DLOG(Warning, format, ##__VA_ARGS__)
|
||||
#define DLOGI(format, ...) DLOG(Info, format, ##__VA_ARGS__)
|
||||
#define DLOGV(format, ...) DLOG(Verbose, format, ##__VA_ARGS__)
|
||||
|
||||
} // namespace sde
|
||||
|
||||
#endif // __LOGGER_H__
|
||||
|
||||
Reference in New Issue
Block a user