Home | History | Annotate | Download | only in dri
      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