From 8f8bc7ca3b525626c7016bffe2dea7948c7e356b Mon Sep 17 00:00:00 2001 From: Andrew Sinclair Date: Tue, 6 Jan 2026 10:34:51 -0800 Subject: [PATCH] gfxstream: revert "gfxstream: Add Vulkan func/structs for passing debugging data to host" Breaks emulator 26Q1-release. Reviewed-by: David Gilhooley Part-of: --- .../codegen/scripts/cereal/decoder.py | 12 +-- .../codegen/scripts/cerealgenerator.py | 2 +- src/gfxstream/codegen/xml/vk_gfxstream.xml | 39 --------- .../vulkan_enc/GfxStreamVulkanConnection.cpp | 86 ------------------- .../guest/vulkan_enc/ResourceTracker.h | 3 +- .../virtio-gpu/virtgpu_gfxstream_protocol.h | 1 - 6 files changed, 3 insertions(+), 140 deletions(-) diff --git a/src/gfxstream/codegen/scripts/cereal/decoder.py b/src/gfxstream/codegen/scripts/cereal/decoder.py index d5db5cef184..9d49808e00f 100644 --- a/src/gfxstream/codegen/scripts/cereal/decoder.py +++ b/src/gfxstream/codegen/scripts/cereal/decoder.py @@ -35,13 +35,6 @@ GLOBAL_COMMANDS_WITHOUT_DISPATCH = [ "vkEnumerateInstanceExtensionProperties", "vkEnumerateInstanceLayerProperties", "vkTraceAsyncGOOGLE", - "vkSetDebugMetadataAsyncGOOGLE", -] - -COMMANDS_WITHOUT_TRACE = [ - # This command is used to set perfetto track names (using the guest process and thread name) - # and track names should (ideally) be set before any trace events - 'vkSetDebugMetadataAsyncGOOGLE', ] SNAPSHOT_API_CALL_HANDLE_VARNAME = "snapshotApiCallHandle" @@ -799,7 +792,6 @@ custom_decodes = { "vkGetBlobGOOGLE" : emit_global_state_wrapped_decoding, "vkGetSemaphoreGOOGLE" : emit_global_state_wrapped_decoding, "vkTraceAsyncGOOGLE" : emit_global_state_wrapped_decoding, - "vkSetDebugMetadataAsyncGOOGLE" : emit_global_state_wrapped_decoding, # Descriptor update templates "vkCreateDescriptorUpdateTemplate" : emit_global_state_wrapped_decoding, @@ -976,9 +968,7 @@ size_t VkDecoder::Impl::decode(void* buf, size_t len, IOStream* ioStream, cgen.line("case OP_%s:" % name) cgen.beginBlock() - - if name not in COMMANDS_WITHOUT_TRACE: - cgen.stmt("GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY, \"VkDecoder %s\")" % name) + cgen.stmt("GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY, \"VkDecoder %s\")" % name) if api.name in custom_decodes.keys(): custom_decodes[api.name](typeInfo, api, cgen) diff --git a/src/gfxstream/codegen/scripts/cerealgenerator.py b/src/gfxstream/codegen/scripts/cerealgenerator.py index d6f2a563e14..748b9c1d819 100644 --- a/src/gfxstream/codegen/scripts/cerealgenerator.py +++ b/src/gfxstream/codegen/scripts/cerealgenerator.py @@ -556,7 +556,7 @@ using DlSymFunc = void* (void*, const char*); decoderHeaderIncludes = f""" #include "vk_decoder_context.h" -#include "gfxstream/host/process_resources.h" +#include "gfxstream/host/ProcessResources.h" #include diff --git a/src/gfxstream/codegen/xml/vk_gfxstream.xml b/src/gfxstream/codegen/xml/vk_gfxstream.xml index 13f7218c73a..52fcc068782 100644 --- a/src/gfxstream/codegen/xml/vk_gfxstream.xml +++ b/src/gfxstream/codegen/xml/vk_gfxstream.xml @@ -37,30 +37,6 @@ specific entries. uint32_t blobFlags uint64_t blobId - - VkStructureType sType - const void* pNext - - - VkStructureType sType - const void* pNext - const char* pName - - - VkStructureType sType - const void* pNext - uint64_t id - - - VkStructureType sType - const void* pNext - const char* pName - - - VkStructureType sType - const void* pNext - uint64_t id - @@ -269,10 +245,6 @@ specific entries. void vkTraceAsyncGOOGLE uint64_t id - - void vkSetDebugMetadataAsyncGOOGLE - const VkDebugMetadataGOOGLE* pDebugMetadata - @@ -284,19 +256,9 @@ specific entries. - - - - - - - - - - @@ -323,7 +285,6 @@ specific entries. - diff --git a/src/gfxstream/guest/vulkan_enc/GfxStreamVulkanConnection.cpp b/src/gfxstream/guest/vulkan_enc/GfxStreamVulkanConnection.cpp index 5753694f103..ec269e6c2f4 100644 --- a/src/gfxstream/guest/vulkan_enc/GfxStreamVulkanConnection.cpp +++ b/src/gfxstream/guest/vulkan_enc/GfxStreamVulkanConnection.cpp @@ -5,94 +5,8 @@ #include "GfxStreamVulkanConnection.h" -#include - -#include "util/detect_os.h" -#include "util/u_process.h" -#include "VirtGpu.h" - -#if DETECT_OS_LINUX -#include -#if !defined(HAVE_GETTID) -#include -#endif // !defined(HAVE_GETTID) -#include -#endif - -namespace { - -// TODO: move to a more common src/util location. -static uint64_t getProcessId() { -#if DETECT_OS_LINUX - return getpid(); -#endif - return -1; -} - -// TODO: move to a more common src/util location. -static std::string getThreadName() { - std::string threadName; -#if DETECT_OS_LINUX - char buf[16] = {}; - if (prctl(PR_GET_NAME, buf) == 0) { - threadName = buf; - } -#endif - return threadName; -} - -// TODO: move to a more common src/util location. -static uint64_t getThreadId() { -#if DETECT_OS_LINUX -#if defined(HAVE_GETTID) - return gettid(); -#else - return (pid_t)syscall(SYS_gettid); -#endif // defined(HAVE_GETTID) -#endif - return -1; -} - -} // namespace - GfxStreamVulkanConnection::GfxStreamVulkanConnection(gfxstream::guest::IOStream* stream) { mVkEnc = std::make_unique(stream); - - auto* device = VirtGpuDevice::getInstance(kCapsetGfxStreamVulkan); - if (device != nullptr) { - const auto caps = device->getCaps(); - if (caps.vulkanCapset.hasSetMetadataCommand) { - const std::string processName = util_get_process_name(); - const struct VkDebugMetadataGuestProcessNameGOOGLE debugMetadataGuestProcessName = { - .sType = VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_PROCESS_NAME_GOOGLE, - .pNext = nullptr, - .pName = processName.c_str(), - }; - const uint64_t processId = getProcessId(); - const struct VkDebugMetadataGuestThreadIdGOOGLE debugMetadataGuestProcessId = { - .sType = VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_PROCESS_ID_GOOGLE, - .pNext = &debugMetadataGuestProcessName, - .id = processId, - }; - const std::string threadName = getThreadName(); - const struct VkDebugMetadataGuestThreadNameGOOGLE debugMetadataGuestThreadName = { - .sType = VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_THREAD_NAME_GOOGLE, - .pNext = &debugMetadataGuestProcessId, - .pName = threadName.c_str(), - }; - const uint64_t threadId = getThreadId(); - const struct VkDebugMetadataGuestThreadIdGOOGLE debugMetadataGuestThreadId = { - .sType = VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_THREAD_ID_GOOGLE, - .pNext = &debugMetadataGuestThreadName, - .id = threadId, - }; - const struct VkDebugMetadataGOOGLE debugMetadata = { - .sType = VK_STRUCTURE_TYPE_DEBUG_METADATA_GOOGLE, - .pNext = &debugMetadataGuestThreadId, - }; - mVkEnc->vkSetDebugMetadataAsyncGOOGLE(&debugMetadata, false /* no lock */); - } - } } GfxStreamVulkanConnection::~GfxStreamVulkanConnection() {} diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.h b/src/gfxstream/guest/vulkan_enc/ResourceTracker.h index 7ee10f216dd..faa55a481f3 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.h +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.h @@ -520,6 +520,7 @@ class ResourceTracker { void setupFeatures(const struct GfxStreamVkFeatureInfo* features); void setupCaps(uint32_t& noRenderControlEnc); void setupPlatformHelpers(); + void setThreadingCallbacks(const ThreadingCallbacks& callbacks); bool hostSupportsVulkan() const; bool usingDirectMapping() const; @@ -886,8 +887,6 @@ class ResourceTracker { void EmitGuestAndHostTraceMarker(VkEncoder* encoder); - void sendGuestInfo(VkEncoder* encoder); - std::recursive_mutex mLock; std::optional mCachedPhysicalDeviceMemoryProps; diff --git a/src/virtio/virtio-gpu/virtgpu_gfxstream_protocol.h b/src/virtio/virtio-gpu/virtgpu_gfxstream_protocol.h index d35e0dbc363..247fd4bb900 100644 --- a/src/virtio/virtio-gpu/virtgpu_gfxstream_protocol.h +++ b/src/virtio/virtio-gpu/virtgpu_gfxstream_protocol.h @@ -107,7 +107,6 @@ struct vulkanCapset { uint32_t virglSupportedFormats[16]; uint32_t vulkanBatchedDescriptorSetUpdate; uint32_t hasTraceAsyncCommand; - uint32_t hasSetMetadataCommand; }; struct magmaCapset {