Snap for 9979206 from fdb86bdacbeb252007d3aa0146ec5a9b9ce9e4f0 to sdk-release

Change-Id: I80aa85894580723129cc540f4638b985fee56480
diff --git a/include/vulkan/include/vulkan/vulkan_core.h b/include/vulkan/include/vulkan/vulkan_core.h
index 3b97ee8..19e9ffe 100644
--- a/include/vulkan/include/vulkan/vulkan_core.h
+++ b/include/vulkan/include/vulkan/vulkan_core.h
@@ -908,9 +908,8 @@
     VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002,
     VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003,
     VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE = 1000385000,
-    VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE = 1000385001,
-    VK_STRUCTURE_TYPE_IMPORT_BUFFER_HANDLE_GOOGLE = 1000385002,
-    VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE = 1000385003,
+    VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE = 1000385001,
+    VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE = 1000385002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
     VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
diff --git a/registry/vulkan/scripts/cereal/api_log_decoder.py b/registry/vulkan/scripts/cereal/api_log_decoder.py
index dfca071..97930f5 100644
--- a/registry/vulkan/scripts/cereal/api_log_decoder.py
+++ b/registry/vulkan/scripts/cereal/api_log_decoder.py
@@ -72,6 +72,7 @@
         "vkFreeMemorySyncGOOGLE",
         "vkGetFenceStatus",
         "vkGetMemoryHostAddressInfoGOOGLE",
+        "vkGetBlobGOOGLE",
         "vkGetPhysicalDeviceFormatProperties",
         "vkGetPhysicalDeviceProperties2KHR",
         "vkGetPipelineCacheData",
diff --git a/registry/vulkan/scripts/cereal/common/codegen.py b/registry/vulkan/scripts/cereal/common/codegen.py
index 0fcac4a..b6b8a6b 100644
--- a/registry/vulkan/scripts/cereal/common/codegen.py
+++ b/registry/vulkan/scripts/cereal/common/codegen.py
@@ -947,7 +947,7 @@
         },
         "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT": {
             "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2": "VkPhysicalDeviceFragmentDensityMapPropertiesEXT",
-            "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkImportPhysicalAddressGOOGLE",
+            "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkCreateBlobGOOGLE",
             "default": "VkPhysicalDeviceFragmentDensityMapPropertiesEXT",
         },
         "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT": {
diff --git a/registry/vulkan/scripts/cereal/common/vulkantypes.py b/registry/vulkan/scripts/cereal/common/vulkantypes.py
index 31284e2..dc3a907 100644
--- a/registry/vulkan/scripts/cereal/common/vulkantypes.py
+++ b/registry/vulkan/scripts/cereal/common/vulkantypes.py
@@ -750,7 +750,7 @@
 
 class VulkanAPI(object):
 
-    def __init__(self, name: str, retType: VulkanType, parameters: list[VulkanType], origName=None):
+    def __init__(self, name: str, retType: VulkanType, parameters, origName=None):
         self.name: str = name
         self.origName = name
         self.retType: VulkanType = retType
diff --git a/registry/vulkan/scripts/cereal/decoder.py b/registry/vulkan/scripts/cereal/decoder.py
index 5363f63..e082db0 100644
--- a/registry/vulkan/scripts/cereal/decoder.py
+++ b/registry/vulkan/scripts/cereal/decoder.py
@@ -26,27 +26,37 @@
 
 decoder_decl_preamble = """
 
+namespace gfxstream {
 class IOStream;
+class ProcessResources;
+}  // namespace gfxstream
+
+namespace gfxstream {
+namespace vk {
 
 class VkDecoder {
 public:
     VkDecoder();
     ~VkDecoder();
     void setForSnapshotLoad(bool forSnapshotLoad);
-    size_t decode(void* buf, size_t bufsize, IOStream* stream, uint32_t* seqnoPtr,
-                  const VkDecoderContext&);
+    size_t decode(void* buf, size_t bufsize, IOStream* stream,
+                  const ProcessResources* processResources, const VkDecoderContext&);
 private:
     class Impl;
     std::unique_ptr<Impl> mImpl;
 };
+
+}  // namespace vk
+}  // namespace gfxstream
+
 """
 
 decoder_impl_preamble ="""
+namespace gfxstream {
+namespace vk {
+
 using android::base::MetricEventBadPacketLength;
 using android::base::MetricEventDuplicateSequenceNum;
-using emugl::vkDispatch;
-
-using namespace goldfish_vk;
 
 class VkDecoder::Impl {
 public:
@@ -66,8 +76,8 @@
         m_forSnapshotLoad = forSnapshotLoad;
     }
 
-    size_t decode(void* buf, size_t bufsize, IOStream* stream, uint32_t* seqnoPtr,
-                  const VkDecoderContext&);
+    size_t decode(void* buf, size_t bufsize, IOStream* stream,
+                  const ProcessResources* processResources, const VkDecoderContext&);
 
 private:
     bool m_logCalls;
@@ -94,14 +104,22 @@
     mImpl->setForSnapshotLoad(forSnapshotLoad);
 }
 
-size_t VkDecoder::decode(void* buf, size_t bufsize, IOStream* stream, uint32_t* seqnoPtr,
+size_t VkDecoder::decode(void* buf, size_t bufsize, IOStream* stream,
+                         const ProcessResources* processResources,
                          const VkDecoderContext& context) {
-    return mImpl->decode(buf, bufsize, stream, seqnoPtr, context);
+    return mImpl->decode(buf, bufsize, stream, processResources, context);
 }
 
 // VkDecoder::Impl::decode to follow
 """ % (VULKAN_STREAM_TYPE, VULKAN_STREAM_TYPE)
 
+decoder_impl_postamble = """
+
+}  // namespace vk
+}  // namespace gfxstream
+
+"""
+
 READ_STREAM = "vkReadStream"
 WRITE_STREAM = "vkStream"
 
@@ -319,14 +337,12 @@
     if delay:
         cgen.line("};")
 
-def emit_global_state_wrapped_call(api, cgen, logger, context):
+def emit_global_state_wrapped_call(api, cgen, context):
     if api.name in DELAYED_DECODER_DELETES:
         print("Error: Cannot generate a global state wrapped call that is also a delayed delete (yet)");
         raise
 
     customParams = ["&m_pool"] + list(map(lambda p: p.paramName, api.parameters))
-    if logger:
-        customParams += ["gfx_logger"]
     if context:
         customParams += ["context"]
     cgen.vkApiCall(api, customPrefix=global_state_prefix, \
@@ -423,7 +439,7 @@
     cgen.stmt("%s->clearPool()" % READ_STREAM)
 
 def emit_seqno_incr(api, cgen):
-    cgen.stmt("if (queueSubmitWithCommandsEnabled) __atomic_fetch_add(seqnoPtr, 1, __ATOMIC_SEQ_CST)")
+    cgen.stmt("if (queueSubmitWithCommandsEnabled) seqnoPtr->fetch_add(1, std::memory_order_seq_cst)")
 
 def emit_snapshot(typeInfo, api, cgen):
 
@@ -461,7 +477,7 @@
     cgen.vkApiCall(apiForSnapshot, customPrefix="m_state->snapshot()->")
     cgen.endIf()
 
-def emit_decoding(typeInfo, api, cgen, globalWrapped=False, logger=False, context=False):
+def emit_decoding(typeInfo, api, cgen, globalWrapped=False, context=False):
     isAcquire = api.name in RELAXED_APIS
     emit_decode_parameters(typeInfo, api, cgen, globalWrapped)
 
@@ -469,7 +485,7 @@
         emit_seqno_incr(api, cgen)
 
     if globalWrapped:
-        emit_global_state_wrapped_call(api, cgen, logger, context)
+        emit_global_state_wrapped_call(api, cgen, context)
     else:
         emit_dispatch_call(api, cgen)
 
@@ -489,9 +505,6 @@
 def emit_global_state_wrapped_decoding(typeInfo, api, cgen):
     emit_decoding(typeInfo, api, cgen, globalWrapped=True)
 
-def emit_global_state_wrapped_decoding_with_logger(typeInfo, api, cgen):
-    emit_decoding(typeInfo, api, cgen, globalWrapped=True, logger=True)
-
 def emit_global_state_wrapped_decoding_with_context(typeInfo, api, cgen):
     emit_decoding(typeInfo, api, cgen, globalWrapped=True, context=True)
 
@@ -613,6 +626,9 @@
     "vkGetImageMemoryRequirements" : emit_global_state_wrapped_decoding,
     "vkGetImageMemoryRequirements2" : emit_global_state_wrapped_decoding,
     "vkGetImageMemoryRequirements2KHR" : emit_global_state_wrapped_decoding,
+    "vkGetBufferMemoryRequirements" : emit_global_state_wrapped_decoding,
+    "vkGetBufferMemoryRequirements2": emit_global_state_wrapped_decoding,
+    "vkGetBufferMemoryRequirements2KHR": emit_global_state_wrapped_decoding,
 
     "vkCreateDescriptorSetLayout" : emit_global_state_wrapped_decoding,
     "vkDestroyDescriptorSetLayout" : emit_global_state_wrapped_decoding,
@@ -642,8 +658,8 @@
     "vkCmdExecuteCommands" : emit_global_state_wrapped_decoding,
     "vkQueueSubmit" : emit_global_state_wrapped_decoding,
     "vkQueueWaitIdle" : emit_global_state_wrapped_decoding,
-    "vkBeginCommandBuffer" : emit_global_state_wrapped_decoding_with_logger,
-    "vkEndCommandBuffer" : emit_global_state_wrapped_decoding_with_logger,
+    "vkBeginCommandBuffer" : emit_global_state_wrapped_decoding_with_context,
+    "vkEndCommandBuffer" : emit_global_state_wrapped_decoding_with_context,
     "vkResetCommandBuffer" : emit_global_state_wrapped_decoding,
     "vkFreeCommandBuffers" : emit_global_state_wrapped_decoding,
     "vkCreateCommandPool" : emit_global_state_wrapped_decoding,
@@ -682,10 +698,7 @@
     "vkFreeMemorySyncGOOGLE" : emit_global_state_wrapped_decoding,
     "vkMapMemoryIntoAddressSpaceGOOGLE" : emit_global_state_wrapped_decoding,
     "vkGetMemoryHostAddressInfoGOOGLE" : emit_global_state_wrapped_decoding,
-
-    # VK_GOOGLE_color_buffer
-    "vkRegisterImageColorBufferGOOGLE" : emit_global_state_wrapped_decoding,
-    "vkRegisterBufferColorBufferGOOGLE" : emit_global_state_wrapped_decoding,
+    "vkGetBlobGOOGLE" : emit_global_state_wrapped_decoding,
 
     # Descriptor update templates
     "vkCreateDescriptorUpdateTemplate" : emit_global_state_wrapped_decoding,
@@ -695,8 +708,8 @@
     "vkUpdateDescriptorSetWithTemplateSizedGOOGLE" : emit_global_state_wrapped_decoding,
 
     # VK_GOOGLE_gfxstream
-    "vkBeginCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_logger,
-    "vkEndCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_logger,
+    "vkBeginCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_context,
+    "vkEndCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_context,
     "vkResetCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding,
     "vkCommandBufferHostSyncGOOGLE" : emit_global_state_wrapped_decoding,
     "vkCreateImageWithRequirementsGOOGLE" : emit_global_state_wrapped_decoding,
@@ -741,7 +754,8 @@
 
         self.module.appendImpl(
             """
-size_t VkDecoder::Impl::decode(void* buf, size_t len, IOStream* ioStream, uint32_t* seqnoPtr,
+size_t VkDecoder::Impl::decode(void* buf, size_t len, IOStream* ioStream,
+                               const ProcessResources* processResources,
                                const VkDecoderContext& context)
 """)
 
@@ -796,6 +810,9 @@
                 executionData->insert({{"previous_seqno", std::to_string(m_prevSeqno.value())}});
             }
         }
+
+        std::atomic<uint32_t>* seqnoPtr = processResources->getSequenceNumberPtr();
+
         if (queueSubmitWithCommandsEnabled && ((opcode >= OP_vkFirst && opcode < OP_vkLast) || (opcode >= OP_vkFirst_old && opcode < OP_vkLast_old))) {
             uint32_t seqno;
             memcpy(&seqno, *readStreamPtrPtr, sizeof(uint32_t)); *readStreamPtrPtr += sizeof(uint32_t);
@@ -817,12 +834,11 @@
                             /* Data gathered if this hangs*/
                             .setOnHangCallback([=]() {
                                 auto annotations = std::make_unique<EventHangMetadata::HangAnnotations>();
-                                annotations->insert({{"seqnoPtr", std::to_string(__atomic_load_n(
-                                                                      seqnoPtr, __ATOMIC_SEQ_CST))}});
+                                annotations->insert({{"seqnoPtr", std::to_string(seqnoPtr->load(std::memory_order_seq_cst))}});
                                 return annotations;
                             })
                             .build();
-                    while ((seqno - __atomic_load_n(seqnoPtr, __ATOMIC_SEQ_CST) != 1)) {
+                    while ((seqno - seqnoPtr->load(std::memory_order_seq_cst) != 1)) {
                         #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)))
                         _mm_pause();
                         #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
@@ -893,3 +909,4 @@
         self.cgen.stmt("return ptr - (unsigned char*)buf;")
         self.cgen.endBlock() # function body
         self.module.appendImpl(self.cgen.swapCode())
+        self.module.appendImpl(decoder_impl_postamble)
diff --git a/registry/vulkan/scripts/cereal/decodersnapshot.py b/registry/vulkan/scripts/cereal/decodersnapshot.py
index f4dc6d6..4ff97a1 100644
--- a/registry/vulkan/scripts/cereal/decodersnapshot.py
+++ b/registry/vulkan/scripts/cereal/decodersnapshot.py
@@ -39,7 +39,7 @@
 
 decoder_snapshot_impl_preamble ="""
 
-using namespace goldfish_vk;
+using namespace gfxstream::vk;
 using emugl::GfxApiLogger;
 using emugl::HealthMonitor;
 
diff --git a/registry/vulkan/scripts/cereal/encoder.py b/registry/vulkan/scripts/cereal/encoder.py
index 42d1e81..d3e3974 100644
--- a/registry/vulkan/scripts/cereal/encoder.py
+++ b/registry/vulkan/scripts/cereal/encoder.py
@@ -38,7 +38,7 @@
 
 encoder_impl_preamble ="""
 
-using namespace goldfish_vk;
+using namespace gfxstream::vk;
 
 using android::base::guest::AutoLock;
 using android::base::guest::Lock;
@@ -79,9 +79,6 @@
     "vkGetPhysicalDeviceProperties",
     "vkGetPhysicalDeviceProperties2",
     "vkGetPhysicalDeviceProperties2KHR",
-    "vkGetPhysicalDeviceMemoryProperties",
-    "vkGetPhysicalDeviceMemoryProperties2",
-    "vkGetPhysicalDeviceMemoryProperties2KHR",
     "vkCreateDescriptorUpdateTemplate",
     "vkCreateDescriptorUpdateTemplateKHR",
     "vkGetPhysicalDeviceExternalSemaphoreProperties",
@@ -401,7 +398,7 @@
             emit_marshal(typeInfo, p, cgen)
 
         dispatchDone = True
-    
+
     cgen.beginIf("watchdog")
     cgen.stmt("size_t watchdogBufSize = std::min<size_t>(static_cast<size_t>(packetSize_%s), kWatchdogBufferMax)" % (api.name))
     cgen.stmt("healthMonitorAnnotation_packetContents.resize(watchdogBufSize)")
diff --git a/registry/vulkan/scripts/cereal/marshalingdefs.py b/registry/vulkan/scripts/cereal/marshalingdefs.py
index 19b08d1..88791f6 100644
--- a/registry/vulkan/scripts/cereal/marshalingdefs.py
+++ b/registry/vulkan/scripts/cereal/marshalingdefs.py
@@ -332,8 +332,6 @@
     "vkCmdSetCheckpointNV": 20315,
     "vkGetQueueCheckpointDataNV": 20316,
     "vkMapMemoryIntoAddressSpaceGOOGLE": 20317,
-    "vkRegisterImageColorBufferGOOGLE": 20318,
-    "vkRegisterBufferColorBufferGOOGLE": 20319,
     "vkUpdateDescriptorSetWithTemplateSizedGOOGLE": 20320,
     "vkBeginCommandBufferAsyncGOOGLE": 20321,
     "vkEndCommandBufferAsyncGOOGLE": 20322,
@@ -355,6 +353,7 @@
     "vkUseIOSurfaceMVK": 20338,
     "vkGetIOSurfaceMVK": 20339,
     "vkQueueFlushCommandsGOOGLE": 20340,
+    "vkGetBlobGOOGLE": 20341,
 }
 
 CUSTOM_MARSHAL_TYPES = {
diff --git a/registry/vulkan/scripts/cereal/subdecode.py b/registry/vulkan/scripts/cereal/subdecode.py
index a81f722..b77cad7 100644
--- a/registry/vulkan/scripts/cereal/subdecode.py
+++ b/registry/vulkan/scripts/cereal/subdecode.py
@@ -261,11 +261,9 @@
         cgen.stmt("unlock()")
 
 
-def emit_global_state_wrapped_call(api, cgen, logger=False, context=False):
+def emit_global_state_wrapped_call(api, cgen, context=False):
     customParams = ["pool", "(VkCommandBuffer)(boxed_dispatchHandle)"] + \
         list(map(lambda p: p.paramName, api.parameters[1:]))
-    if logger:
-        customParams += ["gfx_logger"];
     if context:
         customParams += ["context"];
     cgen.vkApiCall(api, customPrefix=global_state_prefix,
@@ -282,10 +280,6 @@
     emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
     emit_global_state_wrapped_call(api, cgen)
 
-def emit_global_state_wrapped_decoding_with_logger(typeInfo, api, cgen):
-    emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
-    emit_global_state_wrapped_call(api, cgen, logger=True)
-
 def emit_global_state_wrapped_decoding_with_context(typeInfo, api, cgen):
     emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
     emit_global_state_wrapped_call(api, cgen, context=True)
@@ -295,15 +289,15 @@
     "vkCmdCopyImage": emit_global_state_wrapped_decoding,
     "vkCmdCopyImageToBuffer": emit_global_state_wrapped_decoding,
     "vkCmdExecuteCommands": emit_global_state_wrapped_decoding,
-    "vkBeginCommandBuffer": emit_global_state_wrapped_decoding_with_logger,
-    "vkEndCommandBuffer": emit_global_state_wrapped_decoding_with_logger,
+    "vkBeginCommandBuffer": emit_global_state_wrapped_decoding_with_context,
+    "vkEndCommandBuffer": emit_global_state_wrapped_decoding_with_context,
     "vkResetCommandBuffer": emit_global_state_wrapped_decoding,
     "vkCmdPipelineBarrier": emit_global_state_wrapped_decoding,
     "vkCmdBindPipeline": emit_global_state_wrapped_decoding,
     "vkCmdBindDescriptorSets": emit_global_state_wrapped_decoding,
     "vkCmdCopyQueryPoolResults": emit_global_state_wrapped_decoding,
-    "vkBeginCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_logger,
-    "vkEndCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_logger,
+    "vkBeginCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_context,
+    "vkEndCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_context,
     "vkResetCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding,
     "vkCommandBufferHostSyncGOOGLE": emit_global_state_wrapped_decoding,
 }
@@ -327,7 +321,6 @@
 
         self.cgen.beginBlock()  # function body
 
-        self.cgen.stmt("auto& gfx_logger = *context.gfxApiLogger")
         self.cgen.stmt("auto& metricsLogger = *context.metricsLogger")
         self.cgen.stmt("uint32_t count = 0")
         self.cgen.stmt("unsigned char *buf = (unsigned char *)pData")
diff --git a/registry/vulkan/scripts/cereal/wrapperdefs.py b/registry/vulkan/scripts/cereal/wrapperdefs.py
index 6d89197..9b96987 100644
--- a/registry/vulkan/scripts/cereal/wrapperdefs.py
+++ b/registry/vulkan/scripts/cereal/wrapperdefs.py
@@ -98,8 +98,8 @@
     "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT",
     "VkRenderPassFragmentDensityMapCreateInfoEXT": "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT",
     "VkImportColorBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE",
-    "VkImportPhysicalAddressGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE",
     "VkImportBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE",
+    "VkCreateBlobGOOGLE": "VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE",
 }
 
 MAX_PACKET_LENGTH = "(400 * 1024 * 1024) // 400MB"
diff --git a/registry/vulkan/scripts/cerealgenerator.py b/registry/vulkan/scripts/cerealgenerator.py
index 29d7321..988cda4 100644
--- a/registry/vulkan/scripts/cerealgenerator.py
+++ b/registry/vulkan/scripts/cerealgenerator.py
@@ -325,11 +325,13 @@
         dispatchHeaderDefs = f"""
 {self.hostCommonExtraVulkanHeaders}
 #include "goldfish_vk_private_defs.h"
-namespace goldfish_vk {{
+namespace gfxstream {{
+namespace vk {{
 
 struct VulkanDispatch;
 
-}} // namespace goldfish_vk
+}} // namespace vk
+}} // namespace gfxstream
 using DlOpenFunc = void* (void);
 using DlSymFunc = void* (void*, const char*);
 """
@@ -411,6 +413,7 @@
 #include "{self.baseLibDirPrefix}/system/System.h"
 #include "{self.baseLibDirPrefix}/Tracing.h"
 #include "{self.baseLibDirPrefix}/Metrics.h"
+#include "stream-servers/FrameBuffer.h"
 #include "stream-servers/IOStream.h"
 #include "host-common/feature_control.h"
 #include "host-common/GfxstreamFatalError.h"
@@ -651,8 +654,16 @@
                 autogeneratedHeaderTemplate % \
                 (basename, "(header) generated by %s" % banner_command(sys.argv))
 
-        namespaceBegin = "namespace goldfish_vk {" if useNamespace else ""
-        namespaceEnd = "} // namespace goldfish_vk" if useNamespace else ""
+
+        namespaceBegin = """
+namespace gfxstream {
+namespace vk {
+""" if useNamespace else ""
+
+        namespaceEnd = """
+}  // namespace vk"
+}  // namespace gfxstream
+""" if useNamespace else ""
 
         module.headerPreamble += "#pragma once\n"
         if (not suppressVulkanHeaders):
diff --git a/registry/vulkan/xml/vk.xml b/registry/vulkan/xml/vk.xml
index 0e19344..73245d2 100644
--- a/registry/vulkan/xml/vk.xml
+++ b/registry/vulkan/xml/vk.xml
@@ -5462,14 +5462,12 @@
             <member><type>void</type>*                  <name>pNext</name></member>
             <member><type>uint32_t</type>   <name>buffer</name></member>
         </type>
-        <type category="struct" name="VkImportPhysicalAddressGOOGLE" structextends="VkMemoryAllocateInfo">
-            <member values="VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
+        <type category="struct" name="VkCreateBlobGOOGLE" structextends="VkMemoryAllocateInfo">
+            <member values="VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
             <member><type>void</type>*                  <name>pNext</name></member>
-            <member><type>uint64_t</type>   <name>physicalAddress</name></member>
-            <member><type>VkDeviceSize</type>   <name>size</name></member>
-            <member><type>VkFormat</type>   <name>format</name></member>
-            <member><type>VkImageTiling</type>   <name>tiling</name></member>
-            <member><type>uint32_t</type>   <name>tilingParameter</name></member>
+            <member><type>uint32_t</type>   <name>blobMem</name></member>
+            <member><type>uint32_t</type>   <name>blobFlags</name></member>
+            <member><type>uint64_t</type>   <name>blobId</name></member>
         </type>
         <type category="struct" name="VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
             <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"><type>VkStructureType</type> <name>sType</name></member>
@@ -10222,18 +10220,6 @@
             <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
             <param optional="false,true"><type>uint64_t</type>* <name>pAddress</name></param>
         </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkRegisterImageColorBufferGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkImage</type> <name>image</name></param>
-            <param><type>uint32_t</type> <name>colorBuffer</name></param>
-        </command>
-        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
-            <proto><type>VkResult</type> <name>vkRegisterBufferColorBufferGOOGLE</name></proto>
-            <param><type>VkDevice</type> <name>device</name></param>
-            <param><type>VkBuffer</type> <name>buffer</name></param>
-            <param><type>uint32_t</type> <name>colorBuffer</name></param>
-        </command>
         <command>
             <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplateSizedGOOGLE</name></proto>
             <param><type>VkDevice</type> <name>device</name></param>
@@ -10350,6 +10336,11 @@
             <param><type>VkDeviceSize</type> <name>dataSize</name></param>
             <param len="dataSize">const <type>void</type>* <name>pData</name></param>
         </command>
+        <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
+            <proto><type>VkResult</type> <name>vkGetBlobGOOGLE</name></proto>
+            <param><type>VkDevice</type> <name>device</name></param>
+            <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
+        </command>
         <command>
             <proto><type>void</type> <name>vkGetMTLDeviceMVK</name></proto>
             <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
@@ -17657,14 +17648,11 @@
                 <enum value="386"                                           name="VK_GOOGLE_GFXSTREAM_NUMBER"/>
                 <enum value="&quot;VK_GOOGLE_gfxstream&quot;"               name="VK_GOOGLE_GFXSTREAM_EXTENSION_NAME"/>
                 <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE"/>
-                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE"/>
-                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_BUFFER_HANDLE_GOOGLE"/>
-                <enum offset="3" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE"/>
+                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE"/>
+                <enum offset="2" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE"/>
                 <type name="VkImportColorBufferGOOGLE"/>
                 <type name="VkImportBufferGOOGLE"/>
-                <type name="VkImportPhysicalAddressGOOGLE"/>
-                <command name="vkRegisterImageColorBufferGOOGLE"/>
-                <command name="vkRegisterBufferColorBufferGOOGLE"/>
+                <type name="VkCreateBlobGOOGLE"/>
                 <command name="vkMapMemoryIntoAddressSpaceGOOGLE"/>
                 <command name="vkUpdateDescriptorSetWithTemplateSizedGOOGLE"/>
                 <command name="vkBeginCommandBufferAsyncGOOGLE"/>
@@ -17686,6 +17674,7 @@
                 <command name="vkCollectDescriptorPoolIdsGOOGLE"/>
                 <command name="vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"/>
                 <command name="vkQueueFlushCommandsFromAuxMemoryGOOGLE"/>
+                <command name="vkGetBlobGOOGLE"/>
             </require>
         </extension>
     </extensions>