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

Unified Diff: ui/ozone/platform/dri/gbm_surface_factory.cc

Issue 341603002: Create scanout buffer in GbmSurfaceFactory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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/dri/gbm_surface_factory.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..a1faa20f20c42b86d809aa057bed9559380b5a5e 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) {
+ case SurfaceFactoryOzone::UNKNOWN:
+ return 0;
+ case SurfaceFactoryOzone::RGBA_8888:
+ gbm_format = GBM_FORMAT_XRGB8888;
dnicoara 2014/06/17 21:15:09 I was thinking of having another case statement. W
+ 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);
+ 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
« no previous file with comments | « ui/ozone/platform/dri/gbm_surface_factory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698