|
| | MetalRenderSystem () |
| |
| | ~MetalRenderSystem () override |
| |
| void | _beginFrame () override |
| | Signifies the beginning of a frame, i.e.
|
| |
| void | _beginFrameOnce () override |
| | Signifies the beginning of the main frame.
|
| |
| Window * | _createRenderWindow (const String &name, uint32 width, uint32 height, bool fullScreen, const NameValuePairList *miscParams=0) override |
| | Creates a new rendering window.
|
| |
| void | _descriptorSetTexture2Created (DescriptorSetTexture2 *newSet) override |
| |
| void | _descriptorSetTexture2Destroyed (DescriptorSetTexture2 *set) override |
| |
| void | _descriptorSetUavCreated (DescriptorSetUav *newSet) override |
| |
| void | _descriptorSetUavDestroyed (DescriptorSetUav *set) override |
| |
| void | _dispatch (const HlmsComputePso &pso) override |
| |
| void | _endFrame () override |
| | Ends rendering of a frame to the current viewport.
|
| |
| void | _endFrameOnce () override |
| | Called once per frame, regardless of how many active workspaces there are.
|
| |
| MetalFrameBufferDescMap & | _getFrameBufferDescMap () |
| |
| void | _hlmsComputePipelineStateObjectCreated (HlmsComputePso *newPso) override |
| |
| void | _hlmsComputePipelineStateObjectDestroyed (HlmsComputePso *pso) override |
| |
| void | _hlmsPipelineStateObjectCreated (HlmsPso *newPso) override |
| |
| void | _hlmsPipelineStateObjectDestroyed (HlmsPso *pso) override |
| |
| void | _hlmsSamplerblockCreated (HlmsSamplerblock *newBlock) override |
| |
| void | _hlmsSamplerblockDestroyed (HlmsSamplerblock *block) override |
| |
| Window * | _initialise (bool autoCreateWindow, const String &windowTitle="OGRE Render Window") override |
| | Start up the renderer using the settings selected (Or the defaults if none have been selected).
|
| |
| void | _notifyActiveComputeEnded () |
| |
| void | _notifyActiveEncoderEnded (bool callEndRenderPassDesc) |
| |
| void | _notifyDeviceStalled () |
| |
| void | _notifyNewCommandBuffer () |
| |
| void | _render (const CbDrawCallIndexed *cmd) override |
| | Renders the VAO. Assumes _setVertexArrayObject has already been called.
|
| |
| void | _render (const CbDrawCallStrip *cmd) override |
| |
| void | _render (const v1::CbDrawCallIndexed *cmd) override |
| | Renders a V1 RenderOperation. Assumes _setRenderOperation has already been called.
|
| |
| void | _render (const v1::CbDrawCallStrip *cmd) override |
| |
| void | _render (const v1::RenderOperation &op) override |
| | Render something to the active viewport.
|
| |
| void | _renderEmulated (const CbDrawCallIndexed *cmd) override |
| |
| void | _renderEmulated (const CbDrawCallStrip *cmd) override |
| |
| void | _setComputePso (const HlmsComputePso *pso) override |
| | Unlike _setPipelineStateObject, the RenderSystem will check if the PSO has changed to avoid redundant state changes (since it's hard to do it at Hlms level)
|
| |
| void | _setCurrentDeviceFromTexture (TextureGpu *texture) override |
| | Because Ogre doesn't (yet) have the notion of a 'device' or 'GL context', this function lets Ogre know which device should be used by providing a texture.
|
| |
| void | _setHlmsSamplerblock (uint8 texUnit, const HlmsSamplerblock *samplerblock) override |
| | See HlmsSamplerblock.
|
| |
| void | _setIndirectBuffer (IndirectBufferPacked *indirectBuffer) override |
| |
| void | _setPipelineStateObject (const HlmsPso *pso) override |
| |
| void | _setPointParameters (Real size, bool attenuationEnabled, Real constant, Real linear, Real quadratic, Real minSize, Real maxSize) override |
| | Sets the size of points and how they are attenuated with distance.
|
| |
| void | _setPointSpritesEnabled (bool enabled) override |
| | Sets whether or not rendering points using OT_POINT_LIST will render point sprites (textured quads) or plain points.
|
| |
| void | _setProjectionMatrix (const Matrix4 &m) override |
| | Sets the projection transform matrix.
|
| |
| void | _setRenderOperation (const v1::CbRenderOp *cmd) override |
| |
| void | _setSamplers (uint32 slotStart, const DescriptorSetSampler *set) override |
| |
| void | _setSamplersCS (uint32 slotStart, const DescriptorSetSampler *set) override |
| |
| void | _setSurfaceParams (const ColourValue &ambient, const ColourValue &diffuse, const ColourValue &specular, const ColourValue &emissive, Real shininess, TrackVertexColourType tracking=TVC_NONE) override |
| | Sets the surface properties to be used for future rendering.
|
| |
| void | _setTexture (size_t unit, TextureGpu *texPtr, bool bDepthReadOnly) override |
| | Sets the texture to bind to a given texture unit.
|
| |
| void | _setTextureBlendMode (size_t unit, const LayerBlendModeEx &bm) override |
| | Sets the texture blend modes from a TextureUnitState record.
|
| |
| void | _setTextureCoordCalculation (size_t unit, TexCoordCalcMethod m, const Frustum *frustum=0) override |
| | Sets a method for automatically calculating texture coordinates for a stage.
|
| |
| void | _setTextureMatrix (size_t unit, const Matrix4 &xform) override |
| | Sets the texture coordinate transformation matrix for a texture unit.
|
| |
| void | _setTextures (uint32 slotStart, const DescriptorSetTexture *set, uint32 hazardousTexIdx) override |
| |
| void | _setTextures (uint32 slotStart, const DescriptorSetTexture2 *set) override |
| |
| void | _setTexturesCS (uint32 slotStart, const DescriptorSetTexture *set) override |
| |
| void | _setTexturesCS (uint32 slotStart, const DescriptorSetTexture2 *set) override |
| |
| void | _setUavCS (uint32 slotStart, const DescriptorSetUav *set) override |
| |
| void | _setVertexArrayObject (const VertexArrayObject *vao) override |
| | Part of the low level rendering interface.
|
| |
| void | _setViewMatrix (const Matrix4 &m) override |
| | Sets the view transform matrix.
|
| |
| void | _setWorldMatrix (const Matrix4 &m) override |
| | Sets the world transform matrix.
|
| |
| void | _useLights (const LightList &lights, unsigned short limit) override |
| | Tells the rendersystem to use the attached set of lights (and no others) up to the number specified (this allows the same list to be used with different count limits)
|
| |
| void | _waitForTailFrameToFinish () |
| | See VaoManager::waitForTailFrameToFinish.
|
| |
| void | beginGPUSampleProfile (const String &name, uint32 *hashCache) override |
| |
| void | beginProfileEvent (const String &eventName) override |
| | This marks the beginning of an event for GPU profiling.
|
| |
| void | beginRenderPassDescriptor (RenderPassDescriptor *desc, TextureGpu *anyTarget, uint8 mipLevel, const Vector4 *viewportSizes, const Vector4 *scissors, uint32 numViewports, bool overlaysEnabled, bool warnIfRtvWasFlushed) override |
| | When the descriptor is set to Load clear, two possible things may happen:
|
| |
| void | bindGpuProgramParameters (GpuProgramType gptype, GpuProgramParametersSharedPtr params, uint16 variabilityMask) override |
| | Bind Gpu program parameters.
|
| |
| void | bindGpuProgramPassIterationParameters (GpuProgramType gptype) override |
| | Only binds Gpu program parameters used for passes that have more than one iteration rendering.
|
| |
| void | clearFrameBuffer (RenderPassDescriptor *renderPassDesc, TextureGpu *anyTarget, uint8 mipLevel) override |
| | Immediately clears the whole frame buffer on the selected RenderPassDescriptor.
|
| |
| void | compositorWorkspaceBegin (CompositorWorkspace *workspace, const bool forceBeginFrame) override |
| | See RenderSystem::updateCompositorManager.
|
| |
| void | compositorWorkspaceEnd (CompositorWorkspace *workspace, const bool forceEndFrame) override |
| | See RenderSystem::updateCompositorManager.
|
| |
| void | compositorWorkspaceUpdate (CompositorWorkspace *workspace) override |
| | See RenderSystem::updateCompositorManager.
|
| |
| HardwareOcclusionQuery * | createHardwareOcclusionQuery () override |
| | Create an object for performing hardware occlusion queries.
|
| |
| RenderPassDescriptor * | createRenderPassDescriptor () override |
| |
| RenderSystemCapabilities * | createRenderSystemCapabilities () const override |
| | Query the real capabilities of the GPU and driver in the RenderSystem.
|
| |
| void | deinitGPUProfiling () override |
| |
| void | endGPUSampleProfile (const String &name) override |
| |
| void | endProfileEvent () override |
| | Ends the currently active GPU profiling event.
|
| |
| void | endRenderPassDescriptor () override |
| |
| void | endRenderPassDescriptor (bool isInterruptingRender) |
| |
| void | executeRenderPassDescriptorDelayedActions () override |
| | Metal needs to delay RenderCommand creation to the last minute, because we can't issue blit operations (e.g.
|
| |
| void | executeRenderPassDescriptorDelayedActions (bool officialCall) |
| |
| void | flushCommands () override |
| |
| void | flushUAVs () |
| |
| MetalDevice * | getActiveDevice () |
| |
| VertexElementType | getColourVertexElementType () const override |
| | Get the native VertexElementType for a compact 32-bit colour value for this rendersystem.
|
| |
| ConfigOptionMap & | getConfigOptions () override |
| | Returns the details of this API's configuration options.
|
| |
| unsigned int | getDisplayMonitorCount () const override |
| | Gets the number of display monitors.
|
| |
| String | getErrorDescription (long errorNumber) const override |
| | Returns a description of an error code.
|
| |
| const String & | getFriendlyName () const override |
| | Returns the friendly name of the render system.
|
| |
| Real | getHorizontalTexelOffset () override |
| | Returns the horizontal texel offset value required for mapping texel origins to pixel origins in this rendersystem.
|
| |
| Real | getMaximumDepthInputValue () override |
| | Gets the maximum (farthest) depth value to be used when rendering using identity transforms.
|
| |
| MetalProgramFactory * | getMetalProgramFactory () |
| |
| Real | getMinimumDepthInputValue () override |
| | Gets the minimum (closest) depth value to be used when rendering using identity transforms.
|
| |
| const String & | getName () const override |
| | Returns the name of the rendering system.
|
| |
| const PixelFormatToShaderType * | getPixelFormatToShaderType () const override |
| |
| Real | getVerticalTexelOffset () override |
| | Returns the vertical texel offset value required for mapping texel origins to pixel origins in this rendersystem.
|
| |
| bool | hasAnisotropicMipMapFilter () const override |
| | Determines if the system has anisotropic mip map filter support.
|
| |
| bool | hasStoreAndMultisampleResolve () const |
| |
| void | initConfigOptions () |
| |
| void | initGPUProfiling () override |
| |
| void | initialiseFromRenderSystemCapabilities (RenderSystemCapabilities *caps, Window *primary) override |
| | Initialize the render system from the capabilities.
|
| |
| void | markProfileEvent (const String &event) override |
| | Marks an instantaneous event for graphics profilers.
|
| |
| void | postExtraThreadsStarted () override |
| |
| void | preExtraThreadsStarted () override |
| | Tell the rendersystem to perform any prep tasks it needs to directly before other threads which might access the rendering API are registered.
|
| |
| void | registerThread () override |
| | Register the an additional thread which may make calls to rendersystem-related objects.
|
| |
| void | reinitialise () override |
| | Restart the renderer (normally following a change in settings).
|
| |
| void | setClipPlanesImpl (const PlaneList &clipPlanes) override |
| | Internal method used to set the underlying clip planes when needed.
|
| |
| void | setConfigOption (const String &name, const String &value) override |
| | Sets an option for this API.
|
| |
| void | setStencilBufferParams (uint32 refValue, const StencilParams &stencilParams) override |
| | This method allows you to set all the stencil buffer parameters in one call.
|
| |
| void | shutdown () override |
| | Shutdown the renderer and cleanup resources.
|
| |
| void | unregisterThread () override |
| | Unregister an additional thread which may make calls to rendersystem-related objects.
|
| |
| void | updateCompositorManager (CompositorManager2 *compositorManager) override |
| | This gives the renderer a chance to perform the compositor update in a special way.
|
| |
| String | validateConfigOptions () override |
| | Validates the options set for the rendering system, returning a message if there are problems.
|
| |
| SampleDescription | validateSampleDescription (const SampleDescription &sampleDesc, PixelFormatGpu format) override |
| | Returns supported sample description for requested FSAA mode, with graceful downgrading.
|
| |
| | RenderSystem () |
| | Default Constructor.
|
| |
| virtual | ~RenderSystem () |
| | Destructor.
|
| |
| void | _addMetrics (const RenderingMetrics &newMetrics) |
| |
| void | _cleanupDepthBuffers () |
| |
| virtual void | _clearStateAndFlushCommandBuffer () |
| | On D3D11 calls ClearState followed by Flush().
|
| |
| virtual void | _convertOpenVrProjectionMatrix (const Matrix4 &matrix, Matrix4 &dest) |
| | Converts an OpenVR projection matrix to have the proper depth range and reverse Z settings.
|
| |
| virtual void | _convertProjectionMatrix (const Matrix4 &matrix, Matrix4 &dest) |
| | Converts a uniform projection matrix to suitable for this render system.
|
| |
| virtual bool | _createRenderWindows (const RenderWindowDescriptionList &renderWindowDescriptions, WindowList &createdWindows) |
| | Creates multiple rendering windows.
|
| |
| void | _dereferenceSharedDepthBuffer (TextureGpu *depthBuffer) |
| | Releases the reference count on a shared depth buffer.
|
| |
| virtual void | _descriptorSetSamplerCreated (DescriptorSetSampler *newSet) |
| |
| virtual void | _descriptorSetSamplerDestroyed (DescriptorSetSampler *set) |
| |
| virtual void | _descriptorSetTextureCreated (DescriptorSetTexture *newSet) |
| |
| virtual void | _descriptorSetTextureDestroyed (DescriptorSetTexture *set) |
| |
| Viewport & | _getCurrentRenderViewport () |
| |
| virtual const String & | _getDefaultViewportMaterialScheme () const |
| | Returns the default material scheme used by the render system.
|
| |
| virtual void | _hlmsBlendblockCreated (HlmsBlendblock *newBlock) |
| |
| virtual void | _hlmsBlendblockDestroyed (HlmsBlendblock *block) |
| |
| virtual void | _hlmsMacroblockCreated (HlmsMacroblock *newBlock) |
| |
| virtual void | _hlmsMacroblockDestroyed (HlmsMacroblock *block) |
| |
| virtual void | _makeRsProjectionMatrix (const Matrix4 &matrix, Matrix4 &dest, Real nearPlane, Real farPlane, ProjectionType projectionType) |
| | Takes a regular source projection matrix in range [-1; 1] and converts it to a projection matrix in 'dest' with reverse Z range [1; 0].
|
| |
| virtual RenderSystemContext * | _pauseFrame () |
| | Pause rendering for a frame.
|
| |
| virtual void | _renderEmulatedNoBaseInstance (const CbDrawCallIndexed *cmd) |
| |
| virtual void | _renderEmulatedNoBaseInstance (const CbDrawCallStrip *cmd) |
| |
| virtual void | _renderNoBaseInstance (const v1::CbDrawCallIndexed *cmd) |
| |
| virtual void | _renderNoBaseInstance (const v1::CbDrawCallStrip *cmd) |
| |
| void | _resetMetrics () |
| |
| virtual void | _resumeFrame (RenderSystemContext *context) |
| | Resume rendering for a frame.
|
| |
| virtual void | _setBindingType (TextureUnitState::BindingType bindigType) |
| | Set texture unit binding type.
|
| |
| virtual void | _setGeometryTexture (size_t unit, TextureGpu *tex) |
| |
| virtual void | _setTessellationDomainTexture (size_t unit, TextureGpu *tex) |
| |
| virtual void | _setTessellationHullTexture (size_t unit, TextureGpu *tex) |
| |
| virtual void | _setTextureProjectionRelativeTo (bool enabled, const Vector3 &pos) |
| | Notify the rendersystem that it should adjust texture projection to be relative to a different origin.
|
| |
| virtual void | _setTextureUnitSettings (size_t texUnit, TextureUnitState &tl) |
| | Utility function for setting all the properties of a texture unit at once.
|
| |
| virtual void | _setVertexTexture (size_t unit, TextureGpu *tex) |
| | Binds a texture to a vertex, geometry, compute, tessellation hull or tessellation domain sampler.
|
| |
| virtual void | _setWorldMatrices (const Matrix4 *m, unsigned short count) |
| | Sets multiple world matrices (vertex blending).
|
| |
| virtual void | _startLegacyV1Rendering () |
| | May override the current VertexArrayObject!
|
| |
| void | _update () |
| | Called once per frame, regardless of how many active workspaces there are.
|
| |
| virtual void | addClipPlane (const Plane &p) |
| | Add a user clipping plane.
|
| |
| virtual void | addClipPlane (Real A, Real B, Real C, Real D) |
| | Add a user clipping plane.
|
| |
| virtual void | addListener (Listener *l) |
| | Adds a listener to the custom events that this render system can raise.
|
| |
| virtual bool | areFixedFunctionLightsInViewSpace () const |
| | Are fixed-function lights provided in view space?
|
| |
| virtual bool | checkExtension (const String &ext) const |
| | Checks for the presense of an API-specific extension (eg. Vulkan, GL)
|
| |
| virtual void | convertColourValue (const ColourValue &colour, uint32 *pDest) |
| | Generates a packed data version of the passed in ColourValue suitable for use as with this RenderSystem.
|
| |
| virtual void | debugAnnotationPop () |
| |
| virtual void | debugAnnotationPush (const String &event) |
| | Specifically meant to mark passes in RenderDoc.
|
| |
| virtual void | destroyHardwareOcclusionQuery (HardwareOcclusionQuery *hq) |
| | Destroy a hardware occlusion query object.
|
| |
| void | destroyRenderPassDescriptor (RenderPassDescriptor *renderPassDesc) |
| |
| virtual void | destroyRenderWindow (Window *window) |
| | Destroys a render window.
|
| |
| virtual void | endCopyEncoder () |
| | Required when caller will soon start analyzing barriers (e.g.
|
| |
| virtual void | endGpuDebuggerFrameCapture (Window *window, const bool bDiscard=false) |
| | See RenderSystem::startGpuDebuggerFrameCapture Call this function when you're done capturing a frame.
|
| |
| virtual void | executeResourceTransition (const ResourceTransitionArray &rstCollection) |
| |
| BarrierSolver & | getBarrierSolver () |
| |
| BoundUav | getBoundUav (size_t slot) const |
| |
| const RenderSystemCapabilities * | getCapabilities () const |
| | Gets the capabilities of the render system.
|
| |
| RenderPassDescriptor * | getCurrentPassDescriptor () |
| |
| Viewport * | getCurrentRenderViewports () |
| |
| virtual void | getCustomAttribute (const String &name, void *pData) |
| | Gets a custom (maybe platform-specific) attribute.
|
| |
| bool | getDebugShaders () const |
| |
| virtual TextureGpu * | getDepthBufferFor (TextureGpu *colourTexture, uint16 poolId, bool preferDepthTexture, PixelFormatGpu depthBufferFormat) |
| |
| virtual const DriverVersion & | getDriverVersion () const |
| | Returns the driver version.
|
| |
| v1::HardwareVertexBufferSharedPtr | getGlobalInstanceVertexBuffer () const |
| | Returns the global instance vertex buffer.
|
| |
| v1::VertexDeclaration * | getGlobalInstanceVertexBufferVertexDeclaration () const |
| | Gets vertex declaration for the global vertex buffer for the global instancing.
|
| |
| size_t | getGlobalNumberOfInstances () const |
| | Gets the global number of instances.
|
| |
| bool | getInvertedClipSpaceY () const |
| | +Y is downwards in NDC (Normalized Device Coordinates). Only Vulkan has this problem.
|
| |
| virtual bool | getInvertVertexWinding () const |
| | Indicates whether or not the vertex windings set will be inverted for the current render (e.g.
|
| |
| uint32 | getMaxBoundViewports () |
| |
| const RenderingMetrics & | getMetrics () const |
| |
| RenderSystemCapabilities * | getMutableCapabilities () |
| | Get a pointer to the current capabilities being used by the RenderSystem.
|
| |
| uint16 | getNativeShadingLanguageVersion () const |
| | Gets the native shading language version for this render system.
|
| |
| virtual size_t | getNumPriorityConfigOptions () const |
| | Number of priority config options in RenderSystem::getPriorityConfigOption.
|
| |
| virtual const char * | getPriorityConfigOption (size_t idx) const |
| | Some options depend on other options.
|
| |
| RENDERDOC_API_1_4_1 * | getRenderDocApi () |
| | Returns the RenderDoc API handle in case you want to do more advanced functionality than what we expose.
|
| |
| virtual const StringVector & | getRenderSystemEvents () const |
| | Gets a list of the rendersystem specific events that this rendersystem can raise.
|
| |
| virtual Real | getRSDepthRange () const |
| | OpenGL depth is in range [-1;1] so it returns 2.0f; D3D11 & Metal are in range [0;1] so it returns 1.0f;.
|
| |
| const StencilParams & | getStencilBufferParams () const |
| |
| TextureGpuManager * | getTextureGpuManager () const |
| |
| VaoManager * | getVaoManager () const |
| |
| bool | getWBufferEnabled () const |
| | Returns true if the renderer will try to use W-buffers when available.
|
| |
| virtual bool | isGpuProgramBound (GpuProgramType gptype) |
| | Returns whether or not a Gpu program of the given type is currently bound.
|
| |
| bool | isReverseDepth () const |
| |
| virtual bool | isSameLayout (ResourceLayout::Layout a, ResourceLayout::Layout b, const TextureGpu *texture, bool bIsDebugCheck) const |
| | Returns true if 'a' and 'b' internally map to the same layout and should be considered equivalent for a given texture.
|
| |
| virtual bool | isStaticBufferLockable () const |
| |
| bool | loadRenderDocApi () |
| | Explicitly loads RenderDoc.
|
| |
| void | queueBindUAVs (const DescriptorSetUav *descSetUav) |
| | Queues the binding of an UAV to the binding point/slot.
|
| |
| virtual void | removeListener (Listener *l) |
| | Remove a listener to the custom events that this render system can raise.
|
| |
| virtual void | resetClipPlanes () |
| | Clears the user clipping region.
|
| |
| virtual void | setClipPlanes (const PlaneList &clipPlanes) |
| | Sets the user clipping region.
|
| |
| virtual void | setCurrentPassIterationCount (const size_t count) |
| | set the current multi pass count value.
|
| |
| void | setDebugShaders (bool bDebugShaders) |
| | Instructs the RenderSystem to compile shaders without optimizations and with debug information, for easier debugging on APIs that support it.
|
| |
| virtual void | setDeriveDepthBias (bool derive, float baseValue=0.0f, float multiplier=0.0f, float slopeScale=0.0f) |
| | Tell the render system whether to derive a depth bias on its own based on the values passed to it in setCurrentPassIterationCount.
|
| |
| virtual bool | setDrawBuffer (ColourBufferType colourBuffer) |
| | Sets the colour buffer that the render system will to draw.
|
| |
| void | setGlobalInstanceVertexBuffer (const v1::HardwareVertexBufferSharedPtr &val) |
| | Sets the global instance vertex buffer.
|
| |
| void | setGlobalInstanceVertexBufferVertexDeclaration (v1::VertexDeclaration *val) |
| | Sets vertex declaration for the global vertex buffer for the global instancing.
|
| |
| void | setGlobalNumberOfInstances (const size_t val) |
| | Sets the global number of instances.
|
| |
| void | setInvertVertexWinding (bool invert) |
| | Sets whether or not vertex windings set should be inverted; this can be important for rendering reflections.
|
| |
| void | setMetricsRecordingEnabled (bool bEnable) |
| |
| void | setUavStartingSlot (uint32 startingSlot) |
| | In Direct3D11, UAV & RenderTargets share the same slots.
|
| |
| void | setWBufferEnabled (bool enabled) |
| | Sets whether or not W-buffers are enabled if they are available for this renderer.
|
| |
| virtual bool | startGpuDebuggerFrameCapture (Window *window) |
| | Programmatically performs a GPU capture when attached to a GPU debugger like RenderDoc or Metal Graphics Debugger.
|
| |
| virtual void | useCustomRenderSystemCapabilities (RenderSystemCapabilities *capabilities) |
| | Force the render system to use the special capabilities.
|
| |
| virtual bool | validateDevice (bool forceDeviceElection=false) |
| | Some render systems have moments when GPU device is temporarily unavailable, for example when D3D11 device is lost, or when iOS app is in background, etc.
|
| |