gfxstream: revert "gfxstream: Add Vulkan func/structs for passing debugging data to host"

Breaks emulator 26Q1-release.

Reviewed-by: David Gilhooley <djgilhooley.gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39205>
This commit is contained in:
Andrew Sinclair 2026-01-06 10:34:51 -08:00 committed by Gurchetan Singh
parent cc13073be4
commit 8f8bc7ca3b
6 changed files with 3 additions and 140 deletions

View file

@ -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)

View file

@ -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 <memory>

View file

@ -37,30 +37,6 @@ specific entries.
<member><type>uint32_t</type> <name>blobFlags</name></member>
<member><type>uint64_t</type> <name>blobId</name></member>
</type>
<type category="struct" name="VkDebugMetadataGOOGLE">
<member values="VK_STRUCTURE_TYPE_DEBUG_METADATA_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
</type>
<type category="struct" name="VkDebugMetadataGuestProcessNameGOOGLE" structextends="VkDebugMetadataGOOGLE">
<member values="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_PROCESS_NAME_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true" len="null-terminated">const <type>char</type>* <name>pName</name></member>
</type>
<type category="struct" name="VkDebugMetadataGuestProcessIdGOOGLE" structextends="VkDebugMetadataGOOGLE">
<member values="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_PROCESS_ID_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>id</name></member>
</type>
<type category="struct" name="VkDebugMetadataGuestThreadNameGOOGLE" structextends="VkDebugMetadataGOOGLE">
<member values="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_THREAD_NAME_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true" len="null-terminated">const <type>char</type>* <name>pName</name></member>
</type>
<type category="struct" name="VkDebugMetadataGuestThreadIdGOOGLE" structextends="VkDebugMetadataGOOGLE">
<member values="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_THREAD_ID_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>id</name></member>
</type>
</types>
<commands comment="Vulkan command definitions">
@ -269,10 +245,6 @@ specific entries.
<proto><type>void</type> <name>vkTraceAsyncGOOGLE</name></proto>
<param><type>uint64_t</type> <name>id</name></param>
</command>
<command>
<proto><type>void</type> <name>vkSetDebugMetadataAsyncGOOGLE</name></proto>
<param>const <type>VkDebugMetadataGOOGLE</type>* <name>pDebugMetadata</name></param>
</command>
</commands>
<extensions comment="Vulkan extension interface definitions">
<extension name="VK_ANDROID_native_buffer" supported="vulkan"/>
@ -284,19 +256,9 @@ specific entries.
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_COLOR_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"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_METADATA_GOOGLE"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_PROCESS_NAME_GOOGLE"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_PROCESS_ID_GOOGLE"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_THREAD_NAME_GOOGLE"/>
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_METADATA_GUEST_THREAD_ID_GOOGLE"/>
<type name="VkImportColorBufferGOOGLE"/>
<type name="VkImportBufferGOOGLE"/>
<type name="VkCreateBlobGOOGLE"/>
<type name="VkDebugMetadataGuestGOOGLE"/>
<type name="VkDebugMetadataGuestProcessNameGOOGLE"/>
<type name="VkDebugMetadataGuestProcessIdGOOGLE"/>
<type name="VkDebugMetadataGuestThreadNameGOOGLE"/>
<type name="VkDebugMetadataGuestThreadIdGOOGLE"/>
<command name="vkMapMemoryIntoAddressSpaceGOOGLE"/>
<command name="vkUpdateDescriptorSetWithTemplateSizedGOOGLE"/>
<command name="vkBeginCommandBufferAsyncGOOGLE"/>
@ -323,7 +285,6 @@ specific entries.
<command name="vkQueueSubmitAsync2GOOGLE"/>
<command name="vkGetSemaphoreGOOGLE"/>
<command name="vkTraceAsyncGOOGLE"/>
<command name="vkSetDebugMetadataAsyncGOOGLE"/>
</require>
</extension>
</extensions>

View file

@ -5,94 +5,8 @@
#include "GfxStreamVulkanConnection.h"
#include <string>
#include "util/detect_os.h"
#include "util/u_process.h"
#include "VirtGpu.h"
#if DETECT_OS_LINUX
#include <sys/prctl.h>
#if !defined(HAVE_GETTID)
#include <sys/syscall.h>
#endif // !defined(HAVE_GETTID)
#include <unistd.h>
#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<gfxstream::vk::VkEncoder>(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() {}

View file

@ -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<const VkPhysicalDeviceMemoryProperties> mCachedPhysicalDeviceMemoryProps;

View file

@ -107,7 +107,6 @@ struct vulkanCapset {
uint32_t virglSupportedFormats[16];
uint32_t vulkanBatchedDescriptorSetUpdate;
uint32_t hasTraceAsyncCommand;
uint32_t hasSetMetadataCommand;
};
struct magmaCapset {