mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-28 07:30:22 +01:00
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:
parent
cc13073be4
commit
8f8bc7ca3b
6 changed files with 3 additions and 140 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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() {}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ struct vulkanCapset {
|
|||
uint32_t virglSupportedFormats[16];
|
||||
uint32_t vulkanBatchedDescriptorSetUpdate;
|
||||
uint32_t hasTraceAsyncCommand;
|
||||
uint32_t hasSetMetadataCommand;
|
||||
};
|
||||
|
||||
struct magmaCapset {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue