[15/n] ResourceTracker: Allow query and incrementing the sequence number
Bug: 177241396
This lets us access and increment the per-process sequence number
from ResourceTracker.
Change-Id: Ib7ed652e2d652874ab35c0dadaa4457887daf10c
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 51bc68f..2d9b8e6 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -227,6 +227,8 @@
DEFINE_RESOURCE_TRACKING_CLASS(UnwrapMapping, UNWRAP_MAPPING_IMPL_FOR_TYPE)
DEFINE_RESOURCE_TRACKING_CLASS(DestroyMapping, DESTROY_MAPPING_IMPL_FOR_TYPE)
+static uint32_t* sSeqnoPtr = nullptr;
+
// static
uint32_t ResourceTracker::streamFeatureBits = 0;
ResourceTracker::ThreadingCallbacks ResourceTracker::threadingCallbacks;
@@ -5545,6 +5547,23 @@
return mImpl->hasDeviceExtension(device, name);
}
+// static
+void ResourceTracker::setSeqnoPtr(uint32_t* seqnoptr) {
+ sSeqnoPtr = seqnoptr;
+}
+
+// static
+__attribute__((always_inline)) uint32_t ResourceTracker::nextSeqno() {
+ uint32_t res = __atomic_add_fetch(sSeqnoPtr, 1, __ATOMIC_SEQ_CST);
+ return res;
+}
+
+// static
+__attribute__((always_inline)) uint32_t ResourceTracker::getSeqno() {
+ uint32_t res = __atomic_load_n(sSeqnoPtr, __ATOMIC_SEQ_CST);
+ return res;
+}
+
VkResult ResourceTracker::on_vkEnumerateInstanceExtensionProperties(
void* context,
VkResult input_result,