Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2023)

Unified Diff: ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc

Issue 2800653003: SurfaceFactoryOzone: expose scanout supported GpuMemoryBufferAttribs
Patch Set: use uint64_t modifiers, get modifiers for primary plane Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h ('k') | ui/ozone/platform/drm/gpu/drm_thread.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
index 100c7a405ecd97318359373e24ee1c4173cf6ba6..53fb4c180593e4bdd3d450b9af963ad0ddad1850 100644
--- a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
+++ b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
@@ -108,6 +108,37 @@ void DrmGpuDisplayManager::GetScanoutFormats(
scanout_formats->push_back(GetBufferFormatFromFourCCFormat(fourcc));
}
+void DrmGpuDisplayManager::GetScanoutFormatsWithModifiers(
+ gfx::AcceleratedWidget widget,
+ gfx::GpuMemoryBufferAttribVector* scanout_combinations) {
+ HardwareDisplayPlaneManager* plane_manager =
+ drm_device_manager_->GetDrmDevice(widget)
+ ->plane_manager();
+ const std::vector<uint32_t>& fourcc_formats =
+ plane_manager->GetSupportedFormats();
+
+ for (auto& format : fourcc_formats) {
+ const std::vector<std::unique_ptr<HardwareDisplayPlane>>& planes =
+ plane_manager->planes();
+ for (auto& plane : planes) {
+ if (plane->type() != HardwareDisplayPlane::kPrimary)
+ continue;
+
+ const std::vector<uint64_t>& drm_modifiers =
+ plane->ModifiersForFormat(format);
+ if (drm_modifiers.size() > 0) {
+ for (auto modifier : drm_modifiers) {
+ scanout_combinations->push_back(gfx::GpuMemoryBufferAttrib(
+ GetBufferFormatFromFourCCFormat(format), modifier));
+ }
+ } else
+ scanout_combinations->push_back(gfx::GpuMemoryBufferAttrib(
+ GetBufferFormatFromFourCCFormat(format), 0 /* MOD_NONE */));
+ break;
+ }
+ }
+}
+
bool DrmGpuDisplayManager::TakeDisplayControl() {
const DrmDeviceVector& devices = drm_device_manager_->GetDrmDevices();
bool status = true;
« no previous file with comments | « ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h ('k') | ui/ozone/platform/drm/gpu/drm_thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698