d3d12device: Set debugging friendly object name

Build object name with DXGI adapter index

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395>
This commit is contained in:
Seungha Yang 2024-03-19 19:24:56 +09:00 committed by GStreamer Marge Bot
parent 6de5eab1e4
commit b417c62940

View file

@ -226,11 +226,16 @@ public:
});
if (it != list_.end ()) {
GST_DEBUG ("Reusing created device");
auto device = (GstD3D12Device *)
g_object_new (GST_TYPE_D3D12_DEVICE, nullptr);
gst_object_ref_sink (device);
device->priv->inner = *it;
auto name = buildObjectName ((*it)->adapter_index);
gst_object_set_name (GST_OBJECT (device), name.c_str ());
GST_DEBUG_OBJECT (device, "Reusing created device");
return device;
}
@ -238,7 +243,10 @@ public:
if (!device)
return nullptr;
GST_DEBUG ("Created new device");
auto name = buildObjectName (device->priv->inner->adapter_index);
gst_object_set_name (GST_OBJECT (device), name.c_str ());
GST_DEBUG_OBJECT (device, "Created new device");
list_.push_back (device->priv->inner);
@ -263,9 +271,25 @@ private:
DeviceCacheManager () {}
~DeviceCacheManager () {}
std::string buildObjectName (UINT adapter_index)
{
auto name_it = name_map_.find (adapter_index);
UINT idx = 0;
if (name_it == name_map_.end ()) {
name_map_.insert ({adapter_index, 0});
} else {
name_it->second++;
idx = name_it->second;
}
return std::string ("d3d11device") + std::to_string (adapter_index) + "-" +
std::to_string (idx);
}
private:
std::mutex lock_;
std::vector<DeviceInnerPtr> list_;
std::unordered_map<UINT,UINT> name_map_;
};
/* *INDENT-ON* */