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

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

Issue 1598573002: Propagate supported scanout formats from driver to SurfaceFactoryOzone. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
Index: ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
diff --git a/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc b/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
index fb9157bc9a8c451910725be872aa1cf7b80d56a4..28ba6b1b1148e399b812223ca5ac27760592c78e 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
+++ b/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
@@ -10,6 +10,7 @@
#include "build/build_config.h"
#include "third_party/khronos/EGL/egl.h"
#include "ui/ozone/common/egl_util.h"
+#include "ui/ozone/platform/drm/common/drm_util.h"
#include "ui/ozone/platform/drm/gpu/drm_thread_proxy.h"
#include "ui/ozone/platform/drm/gpu/drm_window_proxy.h"
#include "ui/ozone/platform/drm/gpu/gbm_buffer.h"
@@ -103,6 +104,33 @@ GbmSurfaceFactory::CreateSurfacelessEGLSurfaceForWidget(
new GbmSurfaceless(drm_thread_->CreateDrmWindowProxy(widget), this));
}
+bool GbmSurfaceFactory::GetSupportedFormats(
spang 2016/01/20 18:52:24 Why does this take a usage parameter? This is che
william.xie 2016/01/21 02:14:02 Thanks Michael, I documented the concern in the AP
+ gfx::BufferUsage buffer_usage,
+ std::vector<gfx::BufferFormat>* support_formats) {
+ auto it = support_formats_map_.find(buffer_usage);
+ if (it != support_formats_map_.end()) {
+ *support_formats = it->second;
+ return true;
+ }
+
+ switch (buffer_usage) {
+ case gfx::BufferUsage::SCANOUT:
+ if (drm_thread_ != nullptr) {
+ std::vector<uint32_t> fourcc_formats;
+ drm_thread_->GetSupportedFormats(&fourcc_formats);
+ for (auto& fourcc : fourcc_formats)
+ support_formats->push_back(GetBufferFormatFromFourCCFormat(fourcc));
+ support_formats_map_.insert(
+ std::make_pair(buffer_usage, *support_formats));
+ return true;
+ }
+ default:
+ return false;
+ }
+
+ return false;
+}
+
scoped_refptr<ui::NativePixmap> GbmSurfaceFactory::CreateNativePixmap(
gfx::AcceleratedWidget widget,
gfx::Size size,

Powered by Google App Engine
This is Rietveld 408576698