Chromium Code Reviews| Index: ui/ozone/platform/dri/gbm_surface_factory.cc |
| diff --git a/ui/ozone/platform/dri/gbm_surface_factory.cc b/ui/ozone/platform/dri/gbm_surface_factory.cc |
| index 0c864d3c76ce8a9bb94b35a4cd55add38e3f60a5..2795fb9a9a211642fb8deb4a21cae3a049e6a346 100644 |
| --- a/ui/ozone/platform/dri/gbm_surface_factory.cc |
| +++ b/ui/ozone/platform/dri/gbm_surface_factory.cc |
| @@ -5,9 +5,11 @@ |
| #include "ui/ozone/platform/dri/gbm_surface_factory.h" |
| #include <EGL/egl.h> |
| +#include <gbm.h> |
| #include "base/files/file_path.h" |
| #include "ui/gfx/ozone/surface_ozone_egl.h" |
| +#include "ui/ozone/platform/dri/buffer_data.h" |
| #include "ui/ozone/platform/dri/dri_vsync_provider.h" |
| #include "ui/ozone/platform/dri/gbm_surface.h" |
| #include "ui/ozone/platform/dri/hardware_display_controller.h" |
| @@ -150,4 +152,33 @@ scoped_ptr<gfx::SurfaceOzoneEGL> GbmSurfaceFactory::CreateEGLSurfaceForWidget( |
| new GbmSurfaceAdapter(screen_manager_->GetDisplayController(w))); |
| } |
| +gfx::NativeBufferOzone GbmSurfaceFactory::CreateNativeBuffer( |
| + gfx::Size size, |
| + BufferFormat format) { |
| + uint32_t gbm_format = 0; |
| + switch (format) { |
|
dnicoara
2014/06/17 18:16:43
Should we have XRGB8888 in here for 32 bpp support
|
| + case SurfaceFactoryOzone::UNKNOWN: |
| + return 0; |
| + case SurfaceFactoryOzone::RGBA_8888: |
| + gbm_format = GBM_FORMAT_ARGB8888; |
| + break; |
| + case SurfaceFactoryOzone::RGB_888: |
| + gbm_format = GBM_FORMAT_RGB888; |
| + break; |
| + } |
| + gbm_bo* buffer_object = |
| + gbm_bo_create(device_, |
| + size.width(), |
| + size.height(), |
| + gbm_format, |
| + GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING | 0); |
|
dnicoara
2014/06/17 18:16:43
nit: Don't need "| 0" at the end.
|
| + if (!buffer_object) |
| + return 0; |
| + |
| + BufferData* data = BufferData::CreateData(drm_, buffer_object); |
| + DCHECK(data) << "Failed to associate the buffer with the controller"; |
| + |
| + return reinterpret_cast<gfx::NativeBufferOzone>(buffer_object); |
| +} |
| + |
| } // namespace ui |