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:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user