C++11 style fixups
Change-Id: I356d02338820bfef41a9e278c88dafc17cfe1cf9
This commit is contained in:
@@ -28,7 +28,7 @@ namespace uirenderer {
|
||||
|
||||
#define UI_THREAD_FRAME_INFO_SIZE 9
|
||||
|
||||
HWUI_ENUM(FrameInfoIndex,
|
||||
enum class FrameInfoIndex {
|
||||
kFlags = 0,
|
||||
kIntendedVsync,
|
||||
kVsync,
|
||||
@@ -47,13 +47,14 @@ HWUI_ENUM(FrameInfoIndex,
|
||||
|
||||
// Must be the last value!
|
||||
kNumIndexes
|
||||
);
|
||||
};
|
||||
|
||||
HWUI_ENUM(FrameInfoFlags,
|
||||
enum class FrameInfoFlags {
|
||||
kWindowLayoutChanged = 1 << 0,
|
||||
kRTAnimation = 1 << 1,
|
||||
kSurfaceCanvas = 1 << 2,
|
||||
);
|
||||
};
|
||||
MAKE_FLAGS_ENUM(FrameInfoFlags)
|
||||
|
||||
class ANDROID_API UiFrameInfoBuilder {
|
||||
public:
|
||||
@@ -62,17 +63,21 @@ public:
|
||||
}
|
||||
|
||||
UiFrameInfoBuilder& setVsync(nsecs_t vsyncTime, nsecs_t intendedVsync) {
|
||||
mBuffer[FrameInfoIndex::kVsync] = vsyncTime;
|
||||
mBuffer[FrameInfoIndex::kIntendedVsync] = intendedVsync;
|
||||
set(FrameInfoIndex::kVsync) = vsyncTime;
|
||||
set(FrameInfoIndex::kIntendedVsync) = intendedVsync;
|
||||
return *this;
|
||||
}
|
||||
|
||||
UiFrameInfoBuilder& addFlag(FrameInfoFlagsEnum flag) {
|
||||
mBuffer[FrameInfoIndex::kFlags] |= static_cast<uint64_t>(flag);
|
||||
UiFrameInfoBuilder& addFlag(FrameInfoFlags flag) {
|
||||
set(FrameInfoIndex::kFlags) |= static_cast<uint64_t>(flag);
|
||||
return *this;
|
||||
}
|
||||
|
||||
private:
|
||||
inline int64_t& set(FrameInfoIndex index) {
|
||||
return mBuffer[static_cast<int>(index)];
|
||||
}
|
||||
|
||||
int64_t* mBuffer;
|
||||
};
|
||||
|
||||
@@ -81,33 +86,37 @@ public:
|
||||
void importUiThreadInfo(int64_t* info);
|
||||
|
||||
void markSyncStart() {
|
||||
mFrameInfo[FrameInfoIndex::kSyncStart] = systemTime(CLOCK_MONOTONIC);
|
||||
set(FrameInfoIndex::kSyncStart) = systemTime(CLOCK_MONOTONIC);
|
||||
}
|
||||
|
||||
void markIssueDrawCommandsStart() {
|
||||
mFrameInfo[FrameInfoIndex::kIssueDrawCommandsStart] = systemTime(CLOCK_MONOTONIC);
|
||||
set(FrameInfoIndex::kIssueDrawCommandsStart) = systemTime(CLOCK_MONOTONIC);
|
||||
}
|
||||
|
||||
void markSwapBuffers() {
|
||||
mFrameInfo[FrameInfoIndex::kSwapBuffers] = systemTime(CLOCK_MONOTONIC);
|
||||
set(FrameInfoIndex::kSwapBuffers) = systemTime(CLOCK_MONOTONIC);
|
||||
}
|
||||
|
||||
void markFrameCompleted() {
|
||||
mFrameInfo[FrameInfoIndex::kFrameCompleted] = systemTime(CLOCK_MONOTONIC);
|
||||
set(FrameInfoIndex::kFrameCompleted) = systemTime(CLOCK_MONOTONIC);
|
||||
}
|
||||
|
||||
int64_t operator[](FrameInfoIndexEnum index) const {
|
||||
int64_t operator[](FrameInfoIndex index) const {
|
||||
if (index == FrameInfoIndex::kNumIndexes) return 0;
|
||||
return mFrameInfo[static_cast<int>(index)];
|
||||
}
|
||||
|
||||
int64_t operator[](int index) const {
|
||||
if (index < 0 || index >= FrameInfoIndex::kNumIndexes) return 0;
|
||||
return mFrameInfo[static_cast<int>(index)];
|
||||
if (index < 0 || index >= static_cast<int>(FrameInfoIndex::kNumIndexes)) return 0;
|
||||
return mFrameInfo[index];
|
||||
}
|
||||
|
||||
private:
|
||||
int64_t mFrameInfo[FrameInfoIndex::kNumIndexes];
|
||||
inline int64_t& set(FrameInfoIndex index) {
|
||||
return mFrameInfo[static_cast<int>(index)];
|
||||
}
|
||||
|
||||
int64_t mFrameInfo[static_cast<int>(FrameInfoIndex::kNumIndexes)];
|
||||
};
|
||||
|
||||
} /* namespace uirenderer */
|
||||
|
||||
@@ -30,8 +30,8 @@ static const char* JANK_TYPE_NAMES[] = {
|
||||
};
|
||||
|
||||
struct Comparison {
|
||||
FrameInfoIndexEnum start;
|
||||
FrameInfoIndexEnum end;
|
||||
FrameInfoIndex start;
|
||||
FrameInfoIndex end;
|
||||
};
|
||||
|
||||
static const Comparison COMPARISONS[] = {
|
||||
@@ -91,15 +91,15 @@ void JankTracker::setFrameInterval(nsecs_t frameInterval) {
|
||||
}
|
||||
|
||||
void JankTracker::addFrame(const FrameInfo& frame) {
|
||||
using namespace FrameInfoIndex;
|
||||
mTotalFrameCount++;
|
||||
// Fast-path for jank-free frames
|
||||
int64_t totalDuration = frame[kFrameCompleted] - frame[kIntendedVsync];
|
||||
int64_t totalDuration =
|
||||
frame[FrameInfoIndex::kFrameCompleted] - frame[FrameInfoIndex::kIntendedVsync];
|
||||
if (CC_LIKELY(totalDuration < mFrameInterval)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (frame[kFlags] & EXEMPT_FRAMES_FLAGS) {
|
||||
if (frame[FrameInfoIndex::kFlags] & EXEMPT_FRAMES_FLAGS) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -399,7 +399,7 @@ void CanvasContext::dumpFrames(int fd) {
|
||||
continue;
|
||||
}
|
||||
fprintf(file, "\n");
|
||||
for (int i = 0; i < FrameInfoIndex::kNumIndexes; i++) {
|
||||
for (int i = 0; i < static_cast<int>(FrameInfoIndex::kNumIndexes); i++) {
|
||||
fprintf(file, "%" PRId64 ",", frame[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,8 @@ void DrawFrameTask::run() {
|
||||
|
||||
bool DrawFrameTask::syncFrameState(TreeInfo& info) {
|
||||
ATRACE_CALL();
|
||||
mRenderThread->timeLord().vsyncReceived(mFrameInfo[FrameInfoIndex::kVsync]);
|
||||
int64_t vsync = mFrameInfo[static_cast<int>(FrameInfoIndex::kVsync)];
|
||||
mRenderThread->timeLord().vsyncReceived(vsync);
|
||||
mContext->makeCurrent();
|
||||
Caches::getInstance().textureCache.resetMarkInUse();
|
||||
|
||||
|
||||
@@ -52,10 +52,11 @@ namespace renderthread {
|
||||
MethodInvokeRenderTask* task = new MethodInvokeRenderTask((RunnableMethod) Bridge_ ## method); \
|
||||
ARGS(method) *args = (ARGS(method) *) task->payload()
|
||||
|
||||
HWUI_ENUM(DumpFlags,
|
||||
enum class DumpFlags {
|
||||
kFrameStats = 1 << 0,
|
||||
kReset = 1 << 1,
|
||||
);
|
||||
};
|
||||
MAKE_FLAGS_ENUM(DumpFlags)
|
||||
|
||||
CREATE_BRIDGE4(createContext, RenderThread* thread, bool translucent,
|
||||
RenderNode* rootRenderNode, IContextFactory* contextFactory) {
|
||||
|
||||
@@ -35,12 +35,12 @@
|
||||
static_assert(std::is_standard_layout<Type>::value, \
|
||||
#Type " must have standard layout")
|
||||
|
||||
#define HWUI_ENUM(name, ...) \
|
||||
namespace name { \
|
||||
enum _##name { \
|
||||
__VA_ARGS__ \
|
||||
}; \
|
||||
} \
|
||||
typedef enum name::_##name name##Enum
|
||||
#define MAKE_FLAGS_ENUM(enumType) \
|
||||
inline int operator|(enumType lhs, enumType rhs) { \
|
||||
return static_cast<int>(lhs) | static_cast<int>(rhs); \
|
||||
} \
|
||||
inline int operator&(int lhs, enumType rhs) { \
|
||||
return lhs & static_cast<int>(rhs); \
|
||||
}
|
||||
|
||||
#endif /* MACROS_H */
|
||||
|
||||
Reference in New Issue
Block a user