Chromium Code Reviews| 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, |