xsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget1/translations/zh_CN/gpu/intel-display/frontbuffermodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/zh_TW/gpu/intel-display/frontbuffermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/it_IT/gpu/intel-display/frontbuffermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ja_JP/gpu/intel-display/frontbuffermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ko_KR/gpu/intel-display/frontbuffermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/pt_BR/gpu/intel-display/frontbuffermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/sp_SP/gpu/intel-display/frontbuffermodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(hSPDX-License-Identifier: MITh]hSPDX-License-Identifier: MIT}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhK/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer.rsthKubh)}(h#Copyright © 2026 Intel Corporationh]h#Copyright © 2026 Intel Corporation}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsection)}(hhh](htitle)}(hFrontbuffer Trackingh]hFrontbuffer Tracking}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hMany features require us to track changes to the currently active frontbuffer, especially rendering targeted at the frontbuffer.h]hMany features require us to track changes to the currently active frontbuffer, especially rendering targeted at the frontbuffer.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhhhhubh)}(hX To be able to do so we track frontbuffers using a bitmask for all possible frontbuffer slots through intel_frontbuffer_track(). The functions in this file are then called when the contents of the frontbuffer are invalidated, when frontbuffer rendering has stopped again to flush out all the changes and when the frontbuffer is exchanged with a flip. Subsystems interested in frontbuffer changes (e.g. PSR, FBC, DRRS) should directly put their callbacks into the relevant places and filter for the frontbuffer slots that they are interested int.h]hX To be able to do so we track frontbuffers using a bitmask for all possible frontbuffer slots through intel_frontbuffer_track(). The functions in this file are then called when the contents of the frontbuffer are invalidated, when frontbuffer rendering has stopped again to flush out all the changes and when the frontbuffer is exchanged with a flip. Subsystems interested in frontbuffer changes (e.g. PSR, FBC, DRRS) should directly put their callbacks into the relevant places and filter for the frontbuffer slots that they are interested int.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhhhhubh)}(hX&On a high level there are two types of powersaving features. The first one work like a special cache (FBC and PSR) and are interested when they should stop caching and when to restart caching. This is done by placing callbacks into the invalidate and the flush functions: At invalidate the caching must be stopped and at flush time it can be restarted. And maybe they need to know when the frontbuffer changes (e.g. when the hw doesn't initiate an invalidate and flush on its own) which can be achieved with placing callbacks into the flip functions.h]hX(On a high level there are two types of powersaving features. The first one work like a special cache (FBC and PSR) and are interested when they should stop caching and when to restart caching. This is done by placing callbacks into the invalidate and the flush functions: At invalidate the caching must be stopped and at flush time it can be restarted. And maybe they need to know when the frontbuffer changes (e.g. when the hw doesn’t initiate an invalidate and flush on its own) which can be achieved with placing callbacks into the flip functions.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chK(hhhhubh)}(hXRThe other type of display power saving feature only cares about busyness (e.g. DRRS). In that case all three (invalidate, flush and flip) indicate busyness. There is no direct way to detect idleness. Instead an idle timer work delayed work should be started from the flush and flip functions and cancelled as soon as busyness is detected.h]hXRThe other type of display power saving feature only cares about busyness (e.g. DRRS). In that case all three (invalidate, flush and flip) indicate busyness. There is no direct way to detect idleness. Instead an idle timer work delayed work should be started from the flush and flip functions and cancelled as soon as busyness is detected.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chK1hhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single)intel_frontbuffer_invalidate (C function)c.intel_frontbuffer_invalidatehNtauh1j)hhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h]bool intel_frontbuffer_invalidate (struct intel_frontbuffer *front, enum fb_op_origin origin)h]hdesc_signature_line)}(h\bool intel_frontbuffer_invalidate(struct intel_frontbuffer *front, enum fb_op_origin origin)h](hdesc_sig_keyword_type)}(hboolh]hbool}(hjMhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jKhjGhhh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKJubhdesc_sig_space)}(h h]h }(hj_hhhNhNubah}(h]h ]wah"]h$]h&]uh1j]hjGhhhj\hKJubh desc_name)}(hintel_frontbuffer_invalidateh]h desc_sig_name)}(hintel_frontbuffer_invalidateh]hintel_frontbuffer_invalidate}(hjvhhhNhNubah}(h]h ]nah"]h$]h&]uh1jthjpubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jnhjGhhhj\hKJubhdesc_parameterlist)}(h;(struct intel_frontbuffer *front, enum fb_op_origin origin)h](hdesc_parameter)}(hstruct intel_frontbuffer *fronth](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubh)}(hhh]ju)}(hintel_frontbufferh]hintel_frontbuffer}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjxsbc.intel_frontbuffer_invalidateasbuh1hhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubju)}(hfronth]hfront}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum fb_op_origin originh](j)}(henumh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h h]h }(hj*hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubh)}(hhh]ju)}(h fb_op_originh]h fb_op_origin}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]jc.intel_frontbuffer_invalidateasbuh1hhjubj^)}(h h]h }(hjYhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubju)}(horiginh]horigin}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjGhhhj\hKJubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jEsphinx_line_type declaratorhjAhhhj\hKJubah}(h]j8ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j?hj\hKJhj<hhubh desc_content)}(hhh]h)}(hinvalidate frontbuffer objecth]hinvalidate frontbuffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKJhjhhubah}(h]h ]h"]h$]h&]uh1jhj<hhhj\hKJubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j:hhhhhNhNubh container)}(hX**Parameters** ``struct intel_frontbuffer *front`` GEM object to invalidate ``enum fb_op_origin origin`` which operation caused the invalidation **Description** This function gets called every time rendering on the given object starts and frontbuffer caching (fbc, low refresh rate for DRRS, panel self refresh) must be invalidated. For ORIGIN_CS any subsequent invalidation will be delayed until the rendering completes or a flip on this frontbuffer plane is scheduled.h](h)}(h**Parameters**h]hstrong)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKNhjubhdefinition_list)}(hhh](hdefinition_list_item)}(h=``struct intel_frontbuffer *front`` GEM object to invalidate h](hterm)}(h#``struct intel_frontbuffer *front``h]hliteral)}(hjh]hstruct intel_frontbuffer *front}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKKhjubh definition)}(hhh]h)}(hGEM object to invalidateh]hGEM object to invalidate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKKhjubj)}(hE``enum fb_op_origin origin`` which operation caused the invalidation h](j)}(h``enum fb_op_origin origin``h]j)}(hj)h]henum fb_op_origin origin}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKLhj#ubj)}(hhh]h)}(h'which operation caused the invalidationh]h'which operation caused the invalidation}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKLhj?ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hKLhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjdh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKNhjubh)}(hX5This function gets called every time rendering on the given object starts and frontbuffer caching (fbc, low refresh rate for DRRS, panel self refresh) must be invalidated. For ORIGIN_CS any subsequent invalidation will be delayed until the rendering completes or a flip on this frontbuffer plane is scheduled.h]hX5This function gets called every time rendering on the given object starts and frontbuffer caching (fbc, low refresh rate for DRRS, panel self refresh) must be invalidated. For ORIGIN_CS any subsequent invalidation will be delayed until the rendering completes or a flip on this frontbuffer plane is scheduled.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj*)}(hhh]h}(h]h ]h"]h$]h&]entries](j6$intel_frontbuffer_flush (C function)c.intel_frontbuffer_flushhNtauh1j)hhhhhNhNubj;)}(hhh](j@)}(hXvoid intel_frontbuffer_flush (struct intel_frontbuffer *front, enum fb_op_origin origin)h]jF)}(hWvoid intel_frontbuffer_flush(struct intel_frontbuffer *front, enum fb_op_origin origin)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKiubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjhhhjhKiubjo)}(hintel_frontbuffer_flushh]ju)}(hintel_frontbuffer_flushh]hintel_frontbuffer_flush}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ](jjeh"]h$]h&]hhuh1jnhjhhhjhKiubj)}(h;(struct intel_frontbuffer *front, enum fb_op_origin origin)h](j)}(hstruct intel_frontbuffer *fronth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubh)}(hhh]ju)}(hintel_frontbufferh]hintel_frontbuffer}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.intel_frontbuffer_flushasbuh1hhjubj^)}(h h]h }(hj$hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubju)}(hfronth]hfront}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum fb_op_origin originh](j)}(hjh]henum}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj^)}(h h]h }(hjehhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjTubh)}(hhh]ju)}(h fb_op_originh]h fb_op_origin}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j c.intel_frontbuffer_flushasbuh1hhjTubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjTubju)}(horiginh]horigin}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKiubeh}(h]h ]h"]h$]h&]hhjuh1jEjjhjhhhjhKiubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j?hjhKihjhhubj)}(hhh]h)}(hflush frontbuffer objecth]hflush frontbuffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKihjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKiubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j:hhhhhNhNubj)}(hX**Parameters** ``struct intel_frontbuffer *front`` GEM object to flush ``enum fb_op_origin origin`` which operation caused the flush **Description** This function gets called every time rendering on the given object has completed and frontbuffer caching can be started again.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKmhjubj)}(hhh](j)}(h8``struct intel_frontbuffer *front`` GEM object to flush h](j)}(h#``struct intel_frontbuffer *front``h]j)}(hj h]hstruct intel_frontbuffer *front}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKjhjubj)}(hhh]h)}(hGEM object to flushh]hGEM object to flush}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKjhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj"hKjhjubj)}(h>``enum fb_op_origin origin`` which operation caused the flush h](j)}(h``enum fb_op_origin origin``h]j)}(hjFh]henum fb_op_origin origin}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKkhj@ubj)}(hhh]h)}(h which operation caused the flushh]h which operation caused the flush}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hKkhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hKkhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKmhjubh)}(h~This function gets called every time rendering on the given object has completed and frontbuffer caching can be started again.h]h~This function gets called every time rendering on the given object has completed and frontbuffer caching can be started again.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.hhKlhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj*)}(hhh]h}(h]h ]h"]h$]h&]entries](j6frontbuffer_flush (C function)c.frontbuffer_flushhNtauh1j)hhhhhNhNubj;)}(hhh](j@)}(hovoid frontbuffer_flush (struct intel_display *display, unsigned int frontbuffer_bits, enum fb_op_origin origin)h]jF)}(hnvoid frontbuffer_flush(struct intel_display *display, unsigned int frontbuffer_bits, enum fb_op_origin origin)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKHubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjhhhjhKHubjo)}(hfrontbuffer_flushh]ju)}(hfrontbuffer_flushh]hfrontbuffer_flush}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ](jjeh"]h$]h&]hhuh1jnhjhhhjhKHubj)}(hX(struct intel_display *display, unsigned int frontbuffer_bits, enum fb_op_origin origin)h](j)}(hstruct intel_display *displayh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubh)}(hhh]ju)}(h intel_displayh]h intel_display}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jjsbc.frontbuffer_flushasbuh1hhjubj^)}(h h]h }(hjAhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubju)}(hdisplayh]hdisplay}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int frontbuffer_bitsh](jL)}(hunsignedh]hunsigned}(hjuhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjqubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjqubjL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjqubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjqubju)}(hfrontbuffer_bitsh]hfrontbuffer_bits}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum fb_op_origin originh](j)}(hjh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubh)}(hhh]ju)}(h fb_op_originh]h fb_op_origin}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j=c.frontbuffer_flushasbuh1hhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubju)}(horiginh]horigin}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKHubeh}(h]h ]h"]h$]h&]hhjuh1jEjjhjhhhjhKHubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j?hjhKHhjhhubj)}(hhh]h)}(hflush frontbufferh]hflush frontbuffer}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKHhj7hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKHubeh}(h]h ](jfunctioneh"]h$]h&]jjjjRjjRjjjuh1j:hhhhhNhNubj)}(hX**Parameters** ``struct intel_display *display`` display device ``unsigned int frontbuffer_bits`` frontbuffer plane tracking bits ``enum fb_op_origin origin`` which operation caused the flush **Description** This function gets called every time rendering on the given planes has completed and frontbuffer caching can be started again. Flushes will get delayed if they're blocked by some outstanding asynchronous rendering. Can be called without any locks held.h](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKLhjVubj)}(hhh](j)}(h1``struct intel_display *display`` display device h](j)}(h!``struct intel_display *display``h]j)}(hj{h]hstruct intel_display *display}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKIhjuubj)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKIhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjhKIhjrubj)}(hB``unsigned int frontbuffer_bits`` frontbuffer plane tracking bits h](j)}(h!``unsigned int frontbuffer_bits``h]j)}(hjh]hunsigned int frontbuffer_bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKJhjubj)}(hhh]h)}(hfrontbuffer plane tracking bitsh]hfrontbuffer plane tracking bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKJhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKJhjrubj)}(h>``enum fb_op_origin origin`` which operation caused the flush h](j)}(h``enum fb_op_origin origin``h]j)}(hjh]henum fb_op_origin origin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKKhjubj)}(hhh]h)}(h which operation caused the flushh]h which operation caused the flush}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKKhjrubeh}(h]h ]h"]h$]h&]uh1jhjVubh)}(h**Description**h]j)}(hj(h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKMhjVubh)}(hThis function gets called every time rendering on the given planes has completed and frontbuffer caching can be started again. Flushes will get delayed if they're blocked by some outstanding asynchronous rendering.h]hThis function gets called every time rendering on the given planes has completed and frontbuffer caching can be started again. Flushes will get delayed if they’re blocked by some outstanding asynchronous rendering.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKLhjVubh)}(h%Can be called without any locks held.h]h%Can be called without any locks held.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKPhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj*)}(hhh]h}(h]h ]h"]h$]h&]entries](j6#intel_frontbuffer_flip (C function)c.intel_frontbuffer_fliphNtauh1j)hhhhhNhNubj;)}(hhh](j@)}(hVvoid intel_frontbuffer_flip (struct intel_display *display, unsigned frontbuffer_bits)h]jF)}(hUvoid intel_frontbuffer_flip(struct intel_display *display, unsigned frontbuffer_bits)h](jL)}(hvoidh]hvoid}(hj|hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjxhhh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKiubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjxhhhjhKiubjo)}(hintel_frontbuffer_fliph]ju)}(hintel_frontbuffer_fliph]hintel_frontbuffer_flip}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ](jjeh"]h$]h&]hhuh1jnhjxhhhjhKiubj)}(h:(struct intel_display *display, unsigned frontbuffer_bits)h](j)}(hstruct intel_display *displayh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubh)}(hhh]ju)}(h intel_displayh]h intel_display}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.intel_frontbuffer_flipasbuh1hhjubj^)}(h h]h }(hjhhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubju)}(hdisplayh]hdisplay}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned frontbuffer_bitsh](jL)}(hunsignedh]hunsigned}(hj+ hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj' ubj^)}(h h]h }(hj9 hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj' ubju)}(hfrontbuffer_bitsh]hfrontbuffer_bits}(hjG hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj' ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjxhhhjhKiubeh}(h]h ]h"]h$]h&]hhjuh1jEjjhjthhhjhKiubah}(h]joah ](jjeh"]h$]h&]jj)jhuh1j?hjhKihjqhhubj)}(hhh]h)}(hsynchronous frontbuffer fliph]hsynchronous frontbuffer flip}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKihjn hhubah}(h]h ]h"]h$]h&]uh1jhjqhhhjhKiubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1j:hhhhhNhNubj)}(hX~**Parameters** ``struct intel_display *display`` display device ``unsigned frontbuffer_bits`` frontbuffer plane tracking bits **Description** This function gets called after scheduling a flip on **obj**. This is for synchronous plane updates which will happen on the next vblank and which will not get delayed by pending gpu rendering. Can be called without any locks held.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKmhj ubj)}(hhh](j)}(h1``struct intel_display *display`` display device h](j)}(h!``struct intel_display *display``h]j)}(hj h]hstruct intel_display *display}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKjhj ubj)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKjhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKjhj ubj)}(h>``unsigned frontbuffer_bits`` frontbuffer plane tracking bits h](j)}(h``unsigned frontbuffer_bits``h]j)}(hj h]hunsigned frontbuffer_bits}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKkhj ubj)}(hhh]h)}(hfrontbuffer plane tracking bitsh]hfrontbuffer plane tracking bits}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKkhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKkhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj& h]h Description}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKmhj ubh)}(hThis function gets called after scheduling a flip on **obj**. This is for synchronous plane updates which will happen on the next vblank and which will not get delayed by pending gpu rendering.h](h5This function gets called after scheduling a flip on }(hj< hhhNhNubj)}(h**obj**h]hobj}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj< ubh. This is for synchronous plane updates which will happen on the next vblank and which will not get delayed by pending gpu rendering.}(hj< hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKlhj ubh)}(h%Can be called without any locks held.h]h%Can be called without any locks held.}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKphj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj*)}(hhh]h}(h]h ]h"]h$]h&]entries](j6*intel_frontbuffer_queue_flush (C function)c.intel_frontbuffer_queue_flushhNtauh1j)hhhhhNhNubj;)}(hhh](j@)}(hDvoid intel_frontbuffer_queue_flush (struct intel_frontbuffer *front)h]jF)}(hCvoid intel_frontbuffer_queue_flush(struct intel_frontbuffer *front)h](jL)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj hhh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj hhhj hKubjo)}(hintel_frontbuffer_queue_flushh]ju)}(hintel_frontbuffer_queue_flushh]hintel_frontbuffer_queue_flush}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj ubah}(h]h ](jjeh"]h$]h&]hhuh1jnhj hhhj hKubj)}(h!(struct intel_frontbuffer *front)h]j)}(hstruct intel_frontbuffer *fronth](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubh)}(hhh]ju)}(hintel_frontbufferh]hintel_frontbuffer}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.intel_frontbuffer_queue_flushasbuh1hhj ubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubju)}(hfronth]hfront}(hj" hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjuh1jEjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j?hj hKhj hhubj)}(hhh]h)}(h!queue flushing frontbuffer objecth]h!queue flushing frontbuffer object}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhjI hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjd jjd jjjuh1j:hhhhhNhNubj)}(h**Parameters** ``struct intel_frontbuffer *front`` GEM object to flush **Description** This function is targeted for our dirty callback for queueing flush when dma fence is signalsh](h)}(h**Parameters**h]j)}(hjn h]h Parameters}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhjh ubj)}(hhh]j)}(h8``struct intel_frontbuffer *front`` GEM object to flush h](j)}(h#``struct intel_frontbuffer *front``h]j)}(hj h]hstruct intel_frontbuffer *front}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj ubj)}(hhh]h)}(hGEM object to flushh]hGEM object to flush}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjh ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhjh ubh)}(h]This function is targeted for our dirty callback for queueing flush when dma fence is signalsh]h]This function is targeted for our dirty callback for queueing flush when dma fence is signals}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhjh ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj*)}(hhh]h}(h]h ]h"]h$]h&]entries](j6$intel_frontbuffer_track (C function)c.intel_frontbuffer_trackhNtauh1j)hhhhhNhNubj;)}(hhh](j@)}(hzvoid intel_frontbuffer_track (struct intel_frontbuffer *old, struct intel_frontbuffer *new, unsigned int frontbuffer_bits)h]jF)}(hyvoid intel_frontbuffer_track(struct intel_frontbuffer *old, struct intel_frontbuffer *new, unsigned int frontbuffer_bits)h](jL)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj hhh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj hhhj hKubjo)}(hintel_frontbuffer_trackh]ju)}(hintel_frontbuffer_trackh]hintel_frontbuffer_track}(hj. hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj* ubah}(h]h ](jjeh"]h$]h&]hhuh1jnhj hhhj hKubj)}(h](struct intel_frontbuffer *old, struct intel_frontbuffer *new, unsigned int frontbuffer_bits)h](j)}(hstruct intel_frontbuffer *oldh](j)}(hjh]hstruct}(hjJ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF ubj^)}(h h]h }(hjW hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjF ubh)}(hhh]ju)}(hintel_frontbufferh]hintel_frontbuffer}(hjh hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthje ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjj modnameN classnameNjj)}j]j)}jj0 sbc.intel_frontbuffer_trackasbuh1hhjF ubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hjF ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF ubju)}(holdh]hold}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthjF ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjB ubj)}(hstruct intel_frontbuffer *newh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubh)}(hhh]ju)}(hintel_frontbufferh]hintel_frontbuffer}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.intel_frontbuffer_trackasbuh1hhj ubj^)}(h h]h }(hj hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubju)}(hnewh]hnew}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjB ubj)}(hunsigned int frontbuffer_bitsh](jL)}(hunsignedh]hunsigned}(hj, hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj( ubj^)}(h h]h }(hj: hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj( ubjL)}(hinth]hint}(hjH hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj( ubj^)}(h h]h }(hjV hhhNhNubah}(h]h ]jjah"]h$]h&]uh1j]hj( ubju)}(hfrontbuffer_bitsh]hfrontbuffer_bits}(hjd hhhNhNubah}(h]h ]jah"]h$]h&]uh1jthj( ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjB ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjuh1jEjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j?hj hKhj hhubj)}(hhh]h)}(hupdate frontbuffer trackingh]hupdate frontbuffer tracking}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1j:hhhhhNhNubj)}(hX**Parameters** ``struct intel_frontbuffer *old`` current buffer for the frontbuffer slots ``struct intel_frontbuffer *new`` new buffer for the frontbuffer slots ``unsigned int frontbuffer_bits`` bitmask of frontbuffer slots **Description** This updates the frontbuffer tracking bits **frontbuffer_bits** by clearing them from **old** and setting them in **new**. Both **old** and **new** can be NULL.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj ubj)}(hhh](j)}(hK``struct intel_frontbuffer *old`` current buffer for the frontbuffer slots h](j)}(h!``struct intel_frontbuffer *old``h]j)}(hj h]hstruct intel_frontbuffer *old}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj ubj)}(hhh]h)}(h(current buffer for the frontbuffer slotsh]h(current buffer for the frontbuffer slots}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(hG``struct intel_frontbuffer *new`` new buffer for the frontbuffer slots h](j)}(h!``struct intel_frontbuffer *new``h]j)}(hjh]hstruct intel_frontbuffer *new}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhjubj)}(hhh]h)}(h$new buffer for the frontbuffer slotsh]h$new buffer for the frontbuffer slots}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubj)}(h?``unsigned int frontbuffer_bits`` bitmask of frontbuffer slots h](j)}(h!``unsigned int frontbuffer_bits``h]j)}(hjAh]hunsigned int frontbuffer_bits}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj;ubj)}(hhh]h)}(hbitmask of frontbuffer slotsh]hbitmask of frontbuffer slots}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj|h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj ubh)}(hThis updates the frontbuffer tracking bits **frontbuffer_bits** by clearing them from **old** and setting them in **new**. Both **old** and **new** can be NULL.h](h+This updates the frontbuffer tracking bits }(hjhhhNhNubj)}(h**frontbuffer_bits**h]hfrontbuffer_bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh by clearing them from }(hjhhhNhNubj)}(h**old**h]hold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and setting them in }(hjhhhNhNubj)}(h**new**h]hnew}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. Both }(hjhhhNhNubj)}(h**old**h]hold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**new**h]hnew}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh can be NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]frontbuffer-trackingah ]h"]frontbuffer trackingah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj-error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jjs nametypes}jsh}(jhj8jAjjjjjojtj j j j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.