Mir
Public Member Functions | List of all members
mir::graphics::mesa::DisplayBuffer Class Reference

#include <display_buffer.h>

Inheritance diagram for mir::graphics::mesa::DisplayBuffer:
[legend]

Public Member Functions

 DisplayBuffer (std::shared_ptr< Platform > const &platform, std::shared_ptr< DisplayReport > const &listener, std::vector< std::shared_ptr< KMSOutput >> const &outputs, GBMSurfaceUPtr surface_gbm, geometry::Rectangle const &area, MirOrientation rot, GLConfig const &gl_config, EGLContext shared_context)
 
 ~DisplayBuffer ()
 
geometry::Rectangle view_area () const override
 The area the DisplayBuffer occupies in the virtual screen space. More...
 
void make_current () override
 Makes the the current GL render target. More...
 
void release_current () override
 Releases the current GL render target. More...
 
void swap_buffers () override
 Swap buffers for OpenGL rendering. More...
 
bool post_renderables_if_optimizable (RenderableList const &renderlist) override
 This will render renderlist to the screen and post the result to the screen if there is a hardware optimization that can be done. More...
 
void for_each_display_buffer (std::function< void(graphics::DisplayBuffer &)> const &f) override
 
void post () override
 Post the content of the DisplayBuffers associated with this DisplaySyncGroup. More...
 
std::chrono::milliseconds recommended_sleep () const override
 Returns a recommendation to the compositor as to how long it should wait before sampling the scene for the next frame. More...
 
MirOrientation orientation () const override
 Returns the orientation of the display buffer relative to how the user should see it (the orientation of the output). More...
 
NativeDisplayBuffernative_display_buffer () override
 Returns a pointer to the native display buffer object backing this display buffer. More...
 
void set_orientation (MirOrientation const rot, geometry::Rectangle const &a)
 
void schedule_set_crtc ()
 
void wait_for_page_flip ()
 
- Public Member Functions inherited from mir::graphics::DisplaySyncGroup
virtual void for_each_display_buffer (std::function< void(DisplayBuffer &)> const &f)=0
 Executes a functor that allows the DisplayBuffer contents to be updated. More...
 
virtual ~DisplaySyncGroup ()=default
 
- Public Member Functions inherited from mir::renderer::gl::RenderTarget
virtual ~RenderTarget ()=default
 

Additional Inherited Members

- Protected Member Functions inherited from mir::graphics::DisplayBuffer
 DisplayBuffer ()=default
 
 DisplayBuffer (DisplayBuffer const &c)=delete
 
DisplayBufferoperator= (DisplayBuffer const &c)=delete
 
- Protected Member Functions inherited from mir::graphics::DisplaySyncGroup
 DisplaySyncGroup ()=default
 
 DisplaySyncGroup (DisplaySyncGroup const &)=delete
 
DisplaySyncGroupoperator= (DisplaySyncGroup const &)=delete
 
- Protected Member Functions inherited from mir::graphics::NativeDisplayBuffer
 NativeDisplayBuffer ()=default
 
virtual ~NativeDisplayBuffer ()=default
 
 NativeDisplayBuffer (NativeDisplayBuffer const &)=delete
 
NativeDisplayBuffer operator= (NativeDisplayBuffer const &)=delete
 
- Protected Member Functions inherited from mir::renderer::gl::RenderTarget
 RenderTarget ()=default
 
 RenderTarget (RenderTarget const &)=delete
 
RenderTargetoperator= (RenderTarget const &)=delete
 

Constructor & Destructor Documentation

mir::graphics::mesa::DisplayBuffer::DisplayBuffer ( std::shared_ptr< Platform > const &  platform,
std::shared_ptr< DisplayReport > const &  listener,
std::vector< std::shared_ptr< KMSOutput >> const &  outputs,
GBMSurfaceUPtr  surface_gbm,
geometry::Rectangle const &  area,
MirOrientation  rot,
GLConfig const &  gl_config,
EGLContext  shared_context 
)
mir::graphics::mesa::DisplayBuffer::~DisplayBuffer ( )
virtual

Reimplemented from mir::graphics::DisplayBuffer.

Member Function Documentation

void mir::graphics::mesa::DisplayBuffer::for_each_display_buffer ( std::function< void(graphics::DisplayBuffer &)> const &  f)
override
void mir::graphics::mesa::DisplayBuffer::make_current ( )
overridevirtual

Makes the the current GL render target.

Implements mir::renderer::gl::RenderTarget.

NativeDisplayBuffer* mir::graphics::mesa::DisplayBuffer::native_display_buffer ( )
overridevirtual

Returns a pointer to the native display buffer object backing this display buffer.

The pointer to the native display buffer remains valid as long as the display buffer object is valid.

Implements mir::graphics::DisplayBuffer.

MirOrientation mir::graphics::mesa::DisplayBuffer::orientation ( ) const
overridevirtual

Returns the orientation of the display buffer relative to how the user should see it (the orientation of the output).

This tells us how much (if any) rotation the renderer needs to do. If your DisplayBuffer can do the rotation itself then this will always return mir_orientation_normal. If the DisplayBuffer does not implement the rotation itself then this function will return the amount of rotation the renderer must do to make things "look right".

Implements mir::graphics::DisplayBuffer.

void mir::graphics::mesa::DisplayBuffer::post ( )
overridevirtual

Post the content of the DisplayBuffers associated with this DisplaySyncGroup.

The content of all the DisplayBuffers in this DisplaySyncGroup are guaranteed to be onscreen in the near future. On some platforms, this may wait a potentially long time for vsync.

Implements mir::graphics::DisplaySyncGroup.

bool mir::graphics::mesa::DisplayBuffer::post_renderables_if_optimizable ( RenderableList const &  renderlist)
overridevirtual

This will render renderlist to the screen and post the result to the screen if there is a hardware optimization that can be done.

Parameters
[in]renderlistThe renderables that should appear on the screen if the hardware is capable of optmizing that list somehow. If what you want displayed on the screen cannot be represented by a RenderableList, then you should draw using OpenGL and use post_update()
Returns
true if the hardware can optimize the rendering of the list. When this call completes, the renderlist will have been posted to the screen. false if the hardware platform cannot optimize the list. The screen will not be updated. The caller should render the list another way, and post using post_update()

Implements mir::graphics::DisplayBuffer.

std::chrono::milliseconds mir::graphics::mesa::DisplayBuffer::recommended_sleep ( ) const
overridevirtual

Returns a recommendation to the compositor as to how long it should wait before sampling the scene for the next frame.

Sampling the scene too early results in up to one whole frame of extra lag if rendering is fast or skipped altogether (bypass/overlays). But sampling too late and we might miss the deadline. If unsure just return zero.

Implements mir::graphics::DisplaySyncGroup.

void mir::graphics::mesa::DisplayBuffer::release_current ( )
overridevirtual

Releases the current GL render target.

Implements mir::renderer::gl::RenderTarget.

void mir::graphics::mesa::DisplayBuffer::schedule_set_crtc ( )
void mir::graphics::mesa::DisplayBuffer::set_orientation ( MirOrientation const  rot,
geometry::Rectangle const &  a 
)
void mir::graphics::mesa::DisplayBuffer::swap_buffers ( )
overridevirtual

Swap buffers for OpenGL rendering.

After this method returns is the earliest time that it is safe to free GL-related resources such as textures and buffers.

Implements mir::renderer::gl::RenderTarget.

geometry::Rectangle mir::graphics::mesa::DisplayBuffer::view_area ( ) const
overridevirtual

The area the DisplayBuffer occupies in the virtual screen space.

Implements mir::graphics::DisplayBuffer.

void mir::graphics::mesa::DisplayBuffer::wait_for_page_flip ( )

The documentation for this class was generated from the following file:

Copyright © 2012-2015 Canonical Ltd.
Generated on Thu Oct 8 16:20:16 UTC 2015