Composition manager. More...
#include <kanzi/core.ui/platform/graphics_backend/gl/composition_manager.hpp>
Classes | |
class | Request |
Composition request class. More... | |
class | Target |
Composition target. More... | |
Public Member Functions | |
CompositionManager (ResourceManager *resourceManager) | |
Constructor. More... | |
virtual | ~CompositionManager () |
Destructor. More... | |
void | initialize (Renderer &renderer) |
Initialize composition manager. More... | |
void | clear () |
Remove all allocated temporary composition targets. More... | |
virtual Target | acquireTemporaryCompositionTarget (const Request &compositionReq) |
Request a composition target. More... | |
TextureSharedPtr | acquireTemporaryCompositionTarget (unsigned int width, unsigned int height, GraphicsFormat colorFormat, GraphicsFormat depthStencilFormat) |
Request a composition target. More... | |
TextureSharedPtr | acquireTemporaryCompositionTarget (unsigned int width, unsigned int height, bool alpha, bool depth, bool stencil) |
Request a composition target. More... | |
virtual void | releaseTemporaryCompositionTarget (const Target &target) |
Release an earlier composition target. More... | |
virtual Target | createPersistentCompositionTarget (const Request &compositionReq) |
Create a persistent composition target. More... | |
TextureSharedPtr | createPersistentCompositionTarget (unsigned int width, unsigned int height, GraphicsFormat colorFormat, GraphicsFormat depthStencilFormat, Sampler::AddressingMode addressingMode) |
Create a persistent composition target. More... | |
TextureSharedPtr | createPersistentCompositionTarget (unsigned int width, unsigned int height, bool alpha, bool depth, bool stencil) |
Create a persistent composition target. More... | |
TextureSharedPtr | createPersistentTexture (const CompositionManager::Request &compositionReq) |
Create a persistent color texture. More... | |
RenderbufferSharedPtr | createPersistentColorRenderbuffer (const CompositionManager::Request &compositionReq) |
Create a persistent color renderbuffer. More... | |
TextureSharedPtr | createPersistentDepthTexture (const CompositionManager::Request &compositionReq) |
Create a persistent depth texture. More... | |
bool | compositionTargetMatches (const Target &target, const Request &compositionReq, float downScaleLimit) const |
Checks if a given composition target is an acceptable match for given requirements. More... | |
bool | compositionTargetMatches (const Target &target, const Request &compositionReq) const |
Checks if a given composition target texture is an acceptable match for given requirements. More... | |
bool | compositionTargetMatches (TextureSharedPtr texture, unsigned int width, unsigned int height, GraphicsFormat colorFormat, GraphicsFormat depthStencilFormat) const |
Checks if a given composition target texture is an acceptable match for given requirements. More... | |
bool | compositionTargetMatches (TextureSharedPtr texture, unsigned int width, unsigned int height, bool alpha, bool depth, bool stencil, float downScaleLimit) const |
Checks if a given composition target texture is an acceptable match for given requirements. More... | |
bool | compositionTargetMatches (TextureSharedPtr texture, unsigned int width, unsigned int height, bool alpha, bool depth, bool stencil) const |
Checks if a given composition target texture is an acceptable match for given requirements. More... | |
bool | colorTextureMatches (const Texture &texture, const Request &compositionReq) const |
Tell if given color texture matches composition requirements. More... | |
bool | colorRenderbufferMatches (const Renderbuffer &renderbuffer, const Request &compositionReq) const |
Tell if given color render buffer matches composition requirements. More... | |
bool | depthTextureMatches (const Texture &texture, const Request &compositionReq) const |
Tell if given depth texture matches composition requirements. More... | |
GraphicsFormat | getColorFormat (bool alpha) const |
Gets color texture format format depending on alpha requirement. More... | |
GraphicsFormat | getDepthTextureFormat () const |
Gets format for depth textures. More... | |
GraphicsFormat | getDepthStencilFormat (bool depth, bool stencil) const |
Gets depth/stencil renderbuffer format depending on requirements. More... | |
GraphicsFormat | getDepthRenderbufferFormat () const |
Gets depth renderbuffer format. More... | |
GraphicsFormat | getDepthStencilRenderbufferFormat () const |
Gets depth + stencil format. More... | |
GraphicsFormat | getStencilRenderbufferFormat () const |
Gets stencil renderbuffer format. More... | |
Protected Member Functions | |
Target | createTemporaryCompositionTarget (const CompositionManager::Request &compositionReq, TextureSharedPtr texture, RenderbufferSharedPtr colorRenderbuffer, TextureSharedPtr depthTexture) |
Create a temporary composition target. More... | |
unsigned int | getTextureMatchLevel (const Texture &texture, const Request &compositionReq) const |
Get color texture match level for given requirements. More... | |
unsigned int | getColorRenderbufferMatchLevel (const Renderbuffer &renderbuffer, const Request &compositionReq) const |
Get color renderbuffer match level for given requirements. More... | |
unsigned int | getDepthTextureMatchLevel (const Texture &texture, const Request &compositionReq) const |
Get depth texture match level for given requirements. More... | |
TextureSharedPtr | findClosestTexture (const CompositionManager::Request &compositionReq) |
Finds the color texture most closely matching given composition requirement. More... | |
RenderbufferSharedPtr | findClosestColorRenderbuffer (const CompositionManager::Request &compositionReq) |
Finds the renderbuffer most closely matching given composition requirement. More... | |
TextureSharedPtr | findClosestDepthTexture (const CompositionManager::Request &compositionReq) |
Finds the depth texture most closely matching given composition requirement. More... | |
void | markTextureUsed (TextureSharedPtr texture) |
Mark given color texture as used. More... | |
void | markColorRenderbufferUsed (RenderbufferSharedPtr colorRenderbuffer) |
Mark given color renderbuffer as used. More... | |
void | markDepthTextureUsed (TextureSharedPtr depthTexture) |
Mark given depth texture as used. More... | |
void | markTextureUnused (TextureSharedPtr texture) |
Mark given color texture as available. More... | |
void | markColorRenderbufferUnused (RenderbufferSharedPtr colorRenderbuffer) |
Mark given color renderbuffer as available. More... | |
void | markDepthTextureUnused (TextureSharedPtr depthTexture) |
Mark given depth texture as available. More... | |
Composition manager.
Used for storing and managing composition targets and keeping track of their use. The rationale is to minimize memory used by composition targets.
|
explicit |
|
inlinevirtual |
Destructor.
void kanzi::CompositionManager::initialize | ( | Renderer & | renderer | ) |
void kanzi::CompositionManager::clear | ( | ) |
Remove all allocated temporary composition targets.
TextureSharedPtr kanzi::CompositionManager::acquireTemporaryCompositionTarget | ( | unsigned int | width, |
unsigned int | height, | ||
GraphicsFormat | colorFormat, | ||
GraphicsFormat | depthStencilFormat | ||
) |
Request a composition target.
Only the color texture element is returned.
width | Requested width. |
height | Requested height. |
colorFormat | Color buffer format. |
depthStencilFormat | Depth/stencil buffer format. |
|
inline |
Request a composition target.
Only the color texture element is returned.
width | Requested width. |
height | Requested height. |
alpha | Is alpha channel requested? |
depth | Is depth buffer requested? |
stencil | Is stencil buffer requested? |
|
virtual |
Release an earlier composition target.
This, released composition target may be re-used by successive requests.
target | Target to release. |
|
virtual |
Create a persistent composition target.
Caller has ownership of all the components of this composition target, it is not stored within the composition manager.
compositionReq | Request details. |
TextureSharedPtr kanzi::CompositionManager::createPersistentCompositionTarget | ( | unsigned int | width, |
unsigned int | height, | ||
GraphicsFormat | colorFormat, | ||
GraphicsFormat | depthStencilFormat, | ||
Sampler::AddressingMode | addressingMode | ||
) |
Create a persistent composition target.
Only the color texture element is returned. Caller has ownership of this composition target, it is not stored within the composition manager.
width | Requested width. |
height | Requested height. |
colorFormat | Color buffer format. |
depthStencilFormat | Depth/stencil buffer format. |
addressingMode | Addressing mode (wrap/clamp/etc.). |
mipmapMode | Mipmap mode (base/nearest/etc.). |
|
inline |
Create a persistent composition target.
Only the color texture element is returned. Caller has ownership of this composition target, it is not stored within the composition manager. Determines color, depth and stencil formats from on/off boolean values.
width | Requested width. |
height | Requested height. |
alpha | Alpha channel requirement. |
depth | Depth buffer requirement. |
stencil | Stencil buffer requirement. |
TextureSharedPtr kanzi::CompositionManager::createPersistentTexture | ( | const CompositionManager::Request & | compositionReq | ) |
Create a persistent color texture.
Note that the color format of this texture may be GraphicsFormatNone.
compositionReq | Request details. |
RenderbufferSharedPtr kanzi::CompositionManager::createPersistentColorRenderbuffer | ( | const CompositionManager::Request & | compositionReq | ) |
Create a persistent color renderbuffer.
compositionReq | Request details. |
TextureSharedPtr kanzi::CompositionManager::createPersistentDepthTexture | ( | const CompositionManager::Request & | compositionReq | ) |
Create a persistent depth texture.
compositionReq | Request details. |
bool kanzi::CompositionManager::compositionTargetMatches | ( | const Target & | target, |
const Request & | compositionReq, | ||
float | downScaleLimit | ||
) | const |
Checks if a given composition target is an acceptable match for given requirements.
target | Composition target to test. |
compositionReq | Request details. |
downScaleLimit | Limit for matching against smaller composition targets. |
|
inline |
Checks if a given composition target texture is an acceptable match for given requirements.
target | Composition target to test. |
compositionReq | Request details. |
downScaleLimit | Limit for matching against smaller composition targets. |
|
inline |
Checks if a given composition target texture is an acceptable match for given requirements.
Tolerance for how much smaller composition targets are accepted is determined automatically.
texture | Composition target texture to test. |
width | Requested width. |
height | Requested height. |
colorFormat | Color buffer format. |
depthStencilFormat | Depth/stencil buffer format. |
|
inline |
Checks if a given composition target texture is an acceptable match for given requirements.
Determines color, depth and stencil formats from on/off boolean values.
texture | Composition target texture to test. |
width | Requested width. |
height | Requested height. |
alpha | Alpha channel requirement. |
depth | Depth buffer requirement. |
stencil | Stencil buffer requirement. |
downScaleLimit | Limit for matching against smaller composition targets. |
|
inline |
Checks if a given composition target texture is an acceptable match for given requirements.
Determines color, depth and stencil formats from on/off boolean values. Tolerance for how much smaller composition targets are accepted is determined automatically.
target | Composition target to test. |
width | Requested width. |
height | Requested height. |
alpha | Alpha channel requirement. |
depth | Depth buffer requirement. |
stencil | Stencil buffer requirement. |
|
inline |
Tell if given color render buffer matches composition requirements.
renderbuffer | Renderbuffer to test. |
compositionReq | Request details. |
|
inline |
Gets color texture format format depending on alpha requirement.
alpha | Is alpha required? |
|
inline |
Gets format for depth textures.
|
inline |
Gets depth/stencil renderbuffer format depending on requirements.
depth | Is depth required? |
stencil | Is stencil required? |
|
inline |
Gets depth renderbuffer format.
|
inline |
Gets depth + stencil format.
|
inline |
Gets stencil renderbuffer format.
|
protected |
Create a temporary composition target.
Called internally from within acquireTemporaryCompositionTarget() if suitable existing elements are not found. Adds the components of the temporary composition target to the arrays of resources in use.
compositionReq | Request details. |
texture | Existing main texture most closely matching the requirements. |
colorRenderbuffer | Existing color renderbuffer most closely matching the requirements. |
depthTexture | Existing depth texture most closely matching the requirements. |
|
protected |
Get color renderbuffer match level for given requirements.
renderbuffer | Renderbuffer to test. |
compositionReq | Request details. |
|
protected |
Finds the color texture most closely matching given composition requirement.
compositionReq | Request details. |
|
protected |
Finds the renderbuffer most closely matching given composition requirement.
compositionReq | Request details. |
|
protected |
Finds the depth texture most closely matching given composition requirement.
compositionReq | Request details. |
|
protected |
Mark given color texture as used.
The texture must exist in available color textures.
texture | Texture to mark as used. |
|
protected |
Mark given color renderbuffer as used.
The renderbuffer must exist in available color renderbuffers.
colorRenderbuffer | Renderbuffer to mark as used. |
|
protected |
Mark given depth texture as used.
The texture must exist in available depth textures.
depthTexture | Texture to mark as used. |
|
protected |
Mark given color texture as available.
The texture must exist in used color textures.
texture | Texture to mark as used. |
|
protected |
Mark given color renderbuffer as available.
The renderbuffer must exist in used color renderbuffers.
colorRenderbuffer | Renderbuffer to mark as used. |
|
protected |
Mark given depth texture as available.
The texture must exist in used depth textures.
depthTexture | Texture to mark as used. |