Class GraphicsOffload
- All Implemented Interfaces:
Accessible,Buildable,ConstraintTarget,Proxy
Graphics offload is an optimization to reduce overhead and battery use that is most useful for video content. It only works on some platforms and in certain situations. GTK will automatically fall back to normal rendering if it doesn't.
Graphics offload is most efficient if there are no controls drawn on top of the video content.
You should consider using graphics offload for your main widget if it shows
frequently changing content (such as a video, or a VM display) and you provide
the content in the form of dmabuf textures (see DmabufTextureBuilder),
in particular if it may be fullscreen.
Numerous factors can prohibit graphics offload:
- Unsupported platforms. Currently, graphics offload only works on Linux with Wayland.
- Clipping, such as rounded corners that cause the video content to not be rectangular
- Unsupported dmabuf formats (see
Display.getDmabufFormats())
- Translucent video content (content with an alpha channel, even if it isn't used)
- Transforms that are more complex than translations and scales
- Filters such as opacity, grayscale or similar
To investigate problems related graphics offload, GTK offers debug flags to print out information about graphics offload and dmabuf use:
GDK_DEBUG=offload GDK_DEBUG=dmabuf
The GTK inspector provides a visual debugging tool for graphics offload.
- Since:
- 4.14
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classGraphicsOffload.Builder<B extends GraphicsOffload.Builder<B>>Inner class implementing a builder pattern to construct a GObject with properties.static classNested classes/interfaces inherited from class org.gnome.gtk.Widget
Widget.DestroyCallback, Widget.DirectionChangedCallback, Widget.HideCallback, Widget.KeynavFailedCallback, Widget.MapCallback, Widget.MnemonicActivateCallback, Widget.MoveFocusCallback, Widget.QueryTooltipCallback, Widget.RealizeCallback, Widget.ShowCallback, Widget.StateFlagsChangedCallback, Widget.UnmapCallback, Widget.UnrealizeCallback, Widget.Widget$Impl, Widget.WidgetClassNested classes/interfaces inherited from class org.gnome.gobject.InitiallyUnowned
InitiallyUnowned.InitiallyUnownedClassNested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClassNested classes/interfaces inherited from interface org.gnome.gtk.Accessible
Accessible.Accessible$Impl, Accessible.AccessibleInterfaceNested classes/interfaces inherited from interface org.gnome.gtk.Buildable
Buildable.Buildable$Impl, Buildable.BuildableIfaceNested classes/interfaces inherited from interface org.gnome.gtk.ConstraintTarget
ConstraintTarget.ConstraintTarget$Impl, ConstraintTarget.ConstraintTargetInterface -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new GraphicsOffload.GraphicsOffload(MemorySegment address) Create a GraphicsOffload proxy instance for the provided memory address.GraphicsOffload(@Nullable Widget child) Creates a new GtkGraphicsOffload widget. -
Method Summary
Modifier and TypeMethodDescriptionprotected GraphicsOffloadasParent()Returns this instance as if it were its parent type.static GraphicsOffload.Builder<? extends GraphicsOffload.Builder> builder()AGraphicsOffload.Builderobject constructs aGraphicsOffloadwith the specified properties.booleanReturns whether the widget draws a black background.@Nullable WidgetgetChild()Gets the child ofself.Returns whether offload is enabled forself.static @Nullable TypegetType()Get the GType of the GraphicsOffload classvoidsetBlackBackground(boolean value) Sets whether this GtkGraphicsOffload widget will draw a black background.voidSets the child ofself.voidsetEnabled(GraphicsOffloadEnabled enabled) Sets whether this GtkGraphicsOffload widget will attempt to offload the content of its child widget.Methods inherited from class org.gnome.gtk.Widget
actionSetEnabled, activateActionIfExists, activateDefault, activateWidget, addController, addCssClass, addMnemonicLabel, addTickCallback, allocate, childFocus, computeBounds, computeExpand, computeExpand, computePoint, computeTransform, contains, createPangoContext, createPangoLayout, cssChanged, directionChanged, disposeTemplate, dragCheckThreshold, emitDestroy, emitDirectionChanged, emitHide, emitKeynavFailed, emitMap, emitMnemonicActivate, emitMoveFocus, emitQueryTooltip, emitRealize, emitShow, emitStateFlagsChanged, emitUnmap, emitUnrealize, errorBell, focus, getAllocatedBaseline, getAllocatedHeight, getAllocatedWidth, getAllocation, getAncestor, getBaseline, getCanFocus, getCanTarget, getChildVisible, getClipboard, getColor, getCssClasses, getCssName, getCursor, getDefaultDirection, getDirection, getDisplay, getFirstChild, getFocusable, getFocusChild, getFocusOnClick, getFontMap, getFontOptions, getFrameClock, getHalign, getHasTooltip, getHeight, getHexpand, getHexpandSet, getLastChild, getLayoutManager, getLimitEvents, getMapped, getMarginBottom, getMarginEnd, getMarginStart, getMarginTop, getMemoryLayout, getName, getNative, getNextSibling, getOpacity, getOverflow, getPangoContext, getParent, getPreferredSize, getPrevSibling, getPrimaryClipboard, getRealized, getReceivesDefault, getRequestMode, getRoot, getScaleFactor, getSensitive, getSettings, getSize, getSizeRequest, getStateFlags, getStyleContext, getTemplateChild, getTooltipMarkup, getTooltipText, getValign, getVexpand, getVexpandSet, getVisible, getWidth, grabFocus, hasCssClass, hasDefault, hasFocus, hasVisibleFocus, hide, inDestruction, initTemplate, insertActionGroup, insertAfter, insertBefore, isAncestor, isDrawable, isFocus, isSensitive, isVisible, keynavFailed, listMnemonicLabels, map, measure, mnemonicActivate, moveFocus, observeChildren, observeControllers, onDestroy, onDirectionChanged, onHide, onKeynavFailed, onMap, onMnemonicActivate, onMoveFocus, onQueryTooltip, onRealize, onShow, onStateFlagsChanged, onUnmap, onUnrealize, pick, pick, queryTooltip, queueAllocate, queueDraw, queueResize, realize, removeController, removeCssClass, removeMnemonicLabel, removeTickCallback, root, setCanFocus, setCanTarget, setChildVisible, setCssClasses, setCursor, setCursorFromName, setDefaultDirection, setDirection, setFocusable, setFocusChild, setFocusOnClick, setFontMap, setFontOptions, setHalign, setHasTooltip, setHexpand, setHexpandSet, setLayoutManager, setLimitEvents, setMarginBottom, setMarginEnd, setMarginStart, setMarginTop, setName, setOpacity, setOverflow, setParent, setReceivesDefault, setSensitive, setSizeRequest, setStateFlags, setStateFlags, setTooltipMarkup, setTooltipText, setValign, setVexpand, setVexpandSet, setVisible, shouldLayout, show, sizeAllocate, sizeAllocate, snapshot, snapshotChild, stateFlagsChanged, systemSettingChanged, translateCoordinates, triggerTooltipQuery, unmap, unparent, unrealize, unroot, unsetStateFlags, unsetStateFlagsMethods inherited from class org.gnome.gobject.GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newv, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withPropertiesMethods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, cast, getPrivate, readGClass, writeGClassMethods inherited from class org.javagi.base.ProxyInstance
equals, handle, hashCodeMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.gnome.gtk.Accessible
announce, getAccessibleParent, getAccessibleRole, getAtContext, getBounds, getFirstAccessibleChild, getNextAccessibleSibling, getPlatformState, resetProperty, resetRelation, resetState, setAccessibleParent, updateNextAccessibleSibling, updatePlatformState, updateProperty, updateRelation, updateStateMethods inherited from interface org.gnome.gtk.Buildable
getBuildableId
-
Constructor Details
-
GraphicsOffload
Create a GraphicsOffload proxy instance for the provided memory address.- Parameters:
address- the memory address of the native object
-
GraphicsOffload
Creates a new GtkGraphicsOffload widget.- Parameters:
child- the child widget- Since:
- 4.14
-
GraphicsOffload
public GraphicsOffload()Creates a new GraphicsOffload.
-
-
Method Details
-
getType
Get the GType of the GraphicsOffload class- Returns:
- the GType
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuperkeyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName(). This will call the native function pointer of this virtual method in the typeclass of the parent type. -
getBlackBackground
public boolean getBlackBackground()Returns whether the widget draws a black background.- Returns:
TRUEif black background is drawn- Since:
- 4.16
-
getChild
-
getEnabled
Returns whether offload is enabled forself.- Returns:
- whether offload is enabled
- Since:
- 4.14
-
setBlackBackground
public void setBlackBackground(boolean value) Sets whether this GtkGraphicsOffload widget will draw a black background.A main use case for this is _letterboxing_ where black bars are visible next to the content if the aspect ratio of the content does not match the dimensions of the monitor.
Using this property for letterboxing instead of CSS allows compositors to show content with maximum efficiency, using direct scanout to avoid extra copies in the compositor.
On Wayland, this is implemented using the single-pixel buffer protocol.
- Parameters:
value- whether to draw a black background behind the content- Since:
- 4.16
-
setChild
Sets the child ofself.- Parameters:
child- the child widget- Since:
- 4.14
-
setEnabled
Sets whether this GtkGraphicsOffload widget will attempt to offload the content of its child widget.- Parameters:
enabled- whether to enable offload- Since:
- 4.14
-
builder
AGraphicsOffload.Builderobject constructs aGraphicsOffloadwith the specified properties. Use the variousset...()methods to set properties, and finish construction withGraphicsOffload.Builder.build().- Returns:
- the builder object
-