Make frame number type consistent

The frame numbers are ultimately stored as uint64_t so to avoid any implementation dependent casting we make sure all direct and indirect references to this value are stored as uint64_t

Test: N/A
Change-Id: I080c94b1007f2e884cf0fa3583bf51badc913a05
This commit is contained in:
Pablo Gamito
2021-08-24 11:03:51 +02:00
parent dfb85a2b82
commit 35b80cde92
6 changed files with 17 additions and 17 deletions

View File

@@ -26,11 +26,11 @@ public:
virtual void notify(const int64_t* buffer) = 0;
bool waitForPresentTime() const { return mWaitForPresentTime; };
void reportMetricsFrom(int64_t frameNumber, int32_t surfaceControlId) {
void reportMetricsFrom(uint64_t frameNumber, int32_t surfaceControlId) {
mAttachedFrameNumber = frameNumber;
mSurfaceControlId = surfaceControlId;
};
int64_t attachedFrameNumber() const { return mAttachedFrameNumber; };
uint64_t attachedFrameNumber() const { return mAttachedFrameNumber; };
int32_t attachedSurfaceControlId() const { return mSurfaceControlId; };
/**
@@ -64,7 +64,7 @@ private:
// The frame number the metrics observer was attached on. Metrics will be sent from this frame
// number (inclusive) onwards in the case that the surface id is equal to mSurfaceControlId.
int64_t mAttachedFrameNumber;
uint64_t mAttachedFrameNumber;
};
} // namespace uirenderer

View File

@@ -20,7 +20,7 @@ namespace android {
namespace uirenderer {
void FrameMetricsReporter::reportFrameMetrics(const int64_t* stats, bool hasPresentTime,
int64_t frameNumber, int32_t surfaceControlId) {
uint64_t frameNumber, int32_t surfaceControlId) {
FatVector<sp<FrameMetricsObserver>, 10> copy;
{
std::lock_guard lock(mObserversLock);

View File

@@ -69,7 +69,7 @@ public:
* stats of frames that are from "old" surfaces (i.e. with surfaceControlIds older than the one
* the observer was attached on) nor those that are from "old" frame numbers.
*/
void reportFrameMetrics(const int64_t* stats, bool hasPresentTime, int64_t frameNumber,
void reportFrameMetrics(const int64_t* stats, bool hasPresentTime, uint64_t frameNumber,
int32_t surfaceControlId);
private:

View File

@@ -513,7 +513,7 @@ nsecs_t CanvasContext::draw() {
mContentDrawBounds, mOpaque, mLightInfo, mRenderNodes,
&(profiler()));
int64_t frameCompleteNr = getFrameNumber();
uint64_t frameCompleteNr = getFrameNumber();
waitOnFences();
@@ -704,7 +704,7 @@ void CanvasContext::addFrameMetricsObserver(FrameMetricsObserver* observer) {
// We want to make sure we aren't reporting frames that have already been queued by the
// BufferQueueProducer on the rendner thread but are still pending the callback to report their
// their frame metrics.
int64_t nextFrameNumber = getFrameNumber();
uint64_t nextFrameNumber = getFrameNumber();
observer->reportMetricsFrom(nextFrameNumber, mSurfaceControlGenerationId);
mFrameMetricsReporter->addObserver(observer);
}
@@ -890,7 +890,7 @@ void CanvasContext::enqueueFrameWork(std::function<void()>&& func) {
mFrameFences.push_back(CommonPool::async(std::move(func)));
}
int64_t CanvasContext::getFrameNumber() {
uint64_t CanvasContext::getFrameNumber() {
// mFrameNumber is reset to -1 when the surface changes or we swap buffers
if (mFrameNumber == -1 && mNativeSurface.get()) {
mFrameNumber = ANativeWindow_getNextFrameId(mNativeSurface->getNativeWindow());

View File

@@ -173,7 +173,7 @@ public:
// Used to queue up work that needs to be completed before this frame completes
void enqueueFrameWork(std::function<void()>&& func);
int64_t getFrameNumber();
uint64_t getFrameNumber();
void waitOnFences();
@@ -281,7 +281,7 @@ private:
// Need at least 4 because we do quad buffer. Add a 5th for good measure.
RingBuffer<SwapHistory, 5> mSwapHistory;
int64_t mFrameNumber = -1;
uint64_t mFrameNumber = -1;
int64_t mDamageId = 0;
// last vsync for a dropped frame due to stuffed queue

View File

@@ -44,7 +44,7 @@ TEST(FrameMetricsReporter, reportsAllFramesIfNoFromFrameIsSpecified) {
const int64_t* stats;
bool hasPresentTime = false;
int64_t frameNumber = 0;
uint64_t frameNumber = 1;
int32_t surfaceControlId = 0;
reporter->reportFrameMetrics(stats, hasPresentTime, frameNumber, surfaceControlId);
@@ -69,7 +69,7 @@ TEST(FrameMetricsReporter, respectsWaitForPresentTimeUnset) {
const int64_t* stats;
bool hasPresentTime = false;
int64_t frameNumber = 3;
uint64_t frameNumber = 3;
int32_t surfaceControlId = 0;
EXPECT_CALL(*observer, notify).Times(1);
@@ -88,7 +88,7 @@ TEST(FrameMetricsReporter, respectsWaitForPresentTimeSet) {
const int64_t* stats;
bool hasPresentTime = false;
int64_t frameNumber = 3;
uint64_t frameNumber = 3;
int32_t surfaceControlId = 0;
EXPECT_CALL(*observer, notify).Times(0);
@@ -136,9 +136,9 @@ TEST(FrameMetricsReporter, doesNotReportsFramesBeforeSpecifiedFromFrame) {
bool hasPresentTime = false;
std::vector<uint64_t> frameNumbers{1, 10};
std::vector<uint32_t> surfaceControlIds{0, 1, 10};
std::vector<int32_t> surfaceControlIds{0, 1, 10};
for (uint64_t frameNumber : frameNumbers) {
for (uint32_t surfaceControlId : surfaceControlIds) {
for (int32_t surfaceControlId : surfaceControlIds) {
auto reporter = std::make_shared<FrameMetricsReporter>();
auto observer =
@@ -161,7 +161,7 @@ TEST(FrameMetricsReporter, doesNotReportsFramesBeforeSpecifiedFromFrame) {
TEST(FrameMetricsReporter, canRemoveObservers) {
const int64_t* stats;
bool hasPresentTime = false;
int64_t frameNumber = 3;
uint64_t frameNumber = 3;
int32_t surfaceControlId = 0;
auto reporter = std::make_shared<FrameMetricsReporter>();
@@ -183,7 +183,7 @@ TEST(FrameMetricsReporter, canRemoveObservers) {
TEST(FrameMetricsReporter, canSupportMultipleObservers) {
const int64_t* stats;
bool hasPresentTime = false;
int64_t frameNumber = 3;
uint64_t frameNumber = 3;
int32_t surfaceControlId = 0;
auto reporter = std::make_shared<FrameMetricsReporter>();