1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_OZONE_PLATFORM_DRI_GBM_SURFACE_FACTORY_H_ 6 #define UI_OZONE_PLATFORM_DRI_GBM_SURFACE_FACTORY_H_ 7 8 #include "ui/ozone/platform/dri/dri_surface_factory.h" 9 10 struct gbm_device; 11 12 namespace ui { 13 14 class DriWindowDelegate; 15 class DriWindowDelegateManager; 16 17 class GbmSurfaceFactory : public DriSurfaceFactory { 18 public: 19 GbmSurfaceFactory(bool allow_surfaceless); 20 virtual ~GbmSurfaceFactory(); 21 22 void InitializeGpu(DriWrapper* dri, 23 gbm_device* device, 24 ScreenManager* screen_manager, 25 DriWindowDelegateManager* window_manager); 26 27 // DriSurfaceFactory: 28 virtual intptr_t GetNativeDisplay() OVERRIDE; 29 virtual const int32_t* GetEGLSurfaceProperties( 30 const int32_t* desired_list) OVERRIDE; 31 virtual bool LoadEGLGLES2Bindings( 32 AddGLLibraryCallback add_gl_library, 33 SetGLGetProcAddressProcCallback set_gl_get_proc_address) OVERRIDE; 34 virtual scoped_ptr<ui::SurfaceOzoneEGL> CreateEGLSurfaceForWidget( 35 gfx::AcceleratedWidget w) OVERRIDE; 36 virtual scoped_ptr<SurfaceOzoneEGL> CreateSurfacelessEGLSurfaceForWidget( 37 gfx::AcceleratedWidget widget) OVERRIDE; 38 virtual scoped_refptr<ui::NativePixmap> CreateNativePixmap( 39 gfx::Size size, 40 BufferFormat format) OVERRIDE; 41 virtual OverlayCandidatesOzone* GetOverlayCandidates( 42 gfx::AcceleratedWidget w) OVERRIDE; 43 virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 44 int plane_z_order, 45 gfx::OverlayTransform plane_transform, 46 scoped_refptr<NativePixmap> buffer, 47 const gfx::Rect& display_bounds, 48 const gfx::RectF& crop_rect) OVERRIDE; 49 virtual bool CanShowPrimaryPlaneAsOverlay() OVERRIDE; 50 51 private: 52 DriWindowDelegate* GetOrCreateWindowDelegate(gfx::AcceleratedWidget widget); 53 54 gbm_device* device_; // Not owned. 55 bool allow_surfaceless_; 56 57 DISALLOW_COPY_AND_ASSIGN(GbmSurfaceFactory); 58 }; 59 60 } // namespace ui 61 62 #endif // UI_OZONE_PLATFORM_DRI_GBM_SURFACE_FACTORY_H_ 63