1
0
Fork 0

Add BackendManager::CreateBackendForPipeline

Create a Backend for the given DrmDisplayPipeline using the same logic
in CreateBackendForDisplay.

A subsequent change will use this function and deprecate
CreateBackendForDisplay.

Change-Id: I72365f5c689f6643e2f6da11f76dde1ac68f3e2d
This commit is contained in:
Drew Davenport 2025-10-17 14:44:18 -06:00
parent caa94f923e
commit fbd684e3e0
2 changed files with 21 additions and 11 deletions

View file

@ -44,27 +44,35 @@ int BackendManager::RegisterBackend(const std::string &name,
}
int BackendManager::SetBackendForDisplay(HwcDisplay *display) {
auto driver_name(display->GetPipe().device->GetName());
display->set_backend(
CreateBackendForConnector(display->GetPipe().connector->Get()));
if (display->backend() == nullptr) {
return -EINVAL;
}
return 0;
}
std::unique_ptr<Backend> BackendManager::CreateBackendForConnector(
const DrmConnector *connector) {
auto driver_name(connector->GetDev().GetName());
std::string backend_name = Properties::GetBackendOverride();
if (backend_name.empty()) {
backend_name = driver_name;
}
display->set_backend(GetBackendByName(backend_name));
if (display->backend() == nullptr) {
ALOGE("Failed to set backend '%s' for '%s' and driver '%s'",
backend_name.c_str(),
display->GetPipe().connector->Get()->GetName().c_str(),
auto backend = GetBackendByName(backend_name);
if (backend == nullptr) {
ALOGE("Failed to create backend '%s' for '%s' and driver '%s'",
backend_name.c_str(), connector->GetName().c_str(),
driver_name.c_str());
return -EINVAL;
return nullptr;
}
ALOGI("Backend '%s' for '%s' and driver '%s' was successfully set",
backend_name.c_str(),
display->GetPipe().connector->Get()->GetName().c_str(),
ALOGI("Backend '%s' for '%s' and driver '%s' was successfully created",
backend_name.c_str(), connector->GetName().c_str(),
driver_name.c_str());
return 0;
return backend;
}
std::unique_ptr<Backend> BackendManager::GetBackendByName(std::string &name) {

View file

@ -41,6 +41,8 @@ class BackendManager {
int RegisterBackend(const std::string &name,
BackendConstructorT backend_constructor);
int SetBackendForDisplay(HwcDisplay *display);
std::unique_ptr<Backend> CreateBackendForConnector(
const DrmConnector *connector);
std::unique_ptr<Backend> GetBackendByName(std::string &name);
private: