€•xËŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ1/translations/zh_CN/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/zh_TW/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/it_IT/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ja_JP/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ko_KR/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/pt_BR/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/sp_SP/gpu/intel-display/frontbuffer”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒSPDX-License-Identifier: MIT”h]”hŒSPDX-License-Identifier: MIT”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒK/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer.rst”h´Kubh¶)�”}”(hŒ#Copyright © 2026 Intel Corporation”h]”hŒ#Copyright © 2026 Intel Corporation”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒFrontbuffer Tracking”h]”hŒFrontbuffer Tracking”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ€Many features require us to track changes to the currently active frontbuffer, especially rendering targeted at the frontbuffer.”h]”hŒ€Many features require us to track changes to the currently active frontbuffer, especially rendering targeted at the frontbuffer.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KhhØh²hubhì)�”}”(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.”…”�”}”(hhüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KhhØh²hubhì)�”}”(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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K(hhØh²hubhì)�”}”(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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ}/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:7: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K1hhØh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ)intel_frontbuffer_invalidate (C function)”Œc.intel_frontbuffer_invalidate”hNt”auh1j)hhØh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ]bool intel_frontbuffer_invalidate (struct intel_frontbuffer *front, enum fb_op_origin origin)”h]”hŒdesc_signature_line”“”)�”}”(hŒ\bool intel_frontbuffer_invalidate(struct intel_frontbuffer *front, enum fb_op_origin origin)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jKhjGh²hh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KJubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j]hjGh²hh³j\h´KJubhŒ desc_name”“”)�”}”(hŒintel_frontbuffer_invalidate”h]”hŒ desc_sig_name”“”)�”}”(hŒintel_frontbuffer_invalidate”h]”hŒintel_frontbuffer_invalidate”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jthjpubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jnhjGh²hh³j\h´KJubhŒdesc_parameterlist”“”)�”}”(hŒ;(struct intel_frontbuffer *front, enum fb_op_origin origin)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct intel_frontbuffer *front”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j™hj•ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj•ubh)�”}”(hhh]”ju)�”}”(hŒintel_frontbuffer”h]”hŒintel_frontbuffer”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j½Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j׌ ASTIdentifier”“”)�”}”jÒjxsbŒc.intel_frontbuffer_invalidate”†”asbuh1hhj•ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj•ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jòhj•ubju)�”}”(hŒfront”h]”hŒfront”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hj�ubj”)�”}”(hŒenum fb_op_origin origin”h]”(jš)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjubh)�”}”(hhh]”ju)�”}”(hŒ fb_op_origin”h]”hŒ fb_op_origin”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”j=Œmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”jàŒc.intel_frontbuffer_invalidate”†”asbuh1hhjubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjubju)�”}”(hŒorigin”h]”hŒorigin”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hj�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�hjGh²hh³j\h´KJubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jEŒsphinx_line_type”Œ declarator”hjAh²hh³j\h´KJubah}”(h]”j8ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j?h³j\h´KJhj<h²hubhŒ desc_content”“”)�”}”(hhh]”hì)�”}”(hŒinvalidate frontbuffer object”h]”hŒinvalidate frontbuffer object”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KJhj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j–hj<h²hh³j\h´KJubeh}”(h]”h ]”(jÐŒfunction”eh"]”h$]”h&]”Œdomain”jÐŒobjtype”j³Œdesctype”j³Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j:h²hhhØh³Nh´NubhŒ 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]”hŒstrong”“”)�”}”(hjÅh]”hŒ Parameters”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KNhj¿ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ=``struct intel_frontbuffer *front`` GEM object to invalidate ”h]”(hŒterm”“”)�”}”(hŒ#``struct intel_frontbuffer *front``”h]”hŒliteral”“”)�”}”(hjìh]”hŒstruct intel_frontbuffer *front”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KKhjäubhŒ definition”“”)�”}”(hhh]”hì)�”}”(hŒGEM object to invalidate”h]”hŒGEM object to invalidate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´KKhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jh´KKhjßubjã)�”}”(hŒE``enum fb_op_origin origin`` which operation caused the invalidation ”h]”(jé)�”}”(hŒ``enum fb_op_origin origin``”h]”jï)�”}”(hj)h]”hŒenum fb_op_origin origin”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KLhj#ubj)�”}”(hhh]”hì)�”}”(hŒ'which operation caused the invalidation”h]”hŒ'which operation caused the invalidation”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>h´KLhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³j>h´KLhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÝhj¿ubhì)�”}”(hŒ**Description**”h]”jÈ)�”}”(hjdh]”hŒ Description”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KNhj¿ubhì)�”}”(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.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KMhj¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j½hhØh²hh³Nh´Nubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j6Œ$intel_frontbuffer_flush (C function)”Œc.intel_frontbuffer_flush”hNt”auh1j)hhØh²hh³Nh´Nubj;)�”}”(hhh]”(j@)�”}”(hŒXvoid intel_frontbuffer_flush (struct intel_frontbuffer *front, enum fb_op_origin origin)”h]”jF)�”}”(hŒWvoid intel_frontbuffer_flush(struct intel_frontbuffer *front, enum fb_op_origin origin)”h]”(jL)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¥h²hh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´Kiubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj¥h²hh³j·h´Kiubjo)�”}”(hŒintel_frontbuffer_flush”h]”ju)�”}”(hŒintel_frontbuffer_flush”h]”hŒintel_frontbuffer_flush”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjÆubah}”(h]”h ]”(jˆj‰eh"]”h$]”h&]”hÅhÆuh1jnhj¥h²hh³j·h´KiubjŽ)�”}”(hŒ;(struct intel_frontbuffer *front, enum fb_op_origin origin)”h]”(j”)�”}”(hŒstruct intel_frontbuffer *front”h]”(jš)�”}”(hj�h]”hŒstruct”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjâubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjâubh)�”}”(hhh]”ju)�”}”(hŒintel_frontbuffer”h]”hŒintel_frontbuffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jŒmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”jß)�”}”jÒjÌsbŒc.intel_frontbuffer_flush”†”asbuh1hhjâubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjâubjó)�”}”(hjöh]”hŒ*”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jòhjâubju)�”}”(hŒfront”h]”hŒfront”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjÞubj”)�”}”(hŒenum fb_op_origin origin”h]”(jš)�”}”(hjh]”hŒenum”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjTubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjTubh)�”}”(hhh]”ju)�”}”(hŒ fb_op_origin”h]”hŒ fb_op_origin”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jxŒmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”j Œc.intel_frontbuffer_flush”†”asbuh1hhjTubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjTubju)�”}”(hŒorigin”h]”hŒorigin”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjÞubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�hj¥h²hh³j·h´Kiubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆˆuh1jEj‰jŠhj¡h²hh³j·h´Kiubah}”(h]”jœah ]”(jŽj�eh"]”h$]”h&]”j“ˆj”)j•huh1j?h³j·h´Kihjžh²hubj—)�”}”(hhh]”hì)�”}”(hŒflush frontbuffer object”h]”hŒflush frontbuffer object”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KihjÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j–hjžh²hh³j·h´Kiubeh}”(h]”h ]”(jÐŒfunction”eh"]”h$]”h&]”j·jÐj¸jäj¹jäjº‰j»‰j¼‰uh1j:h²hhhØh³Nh´Nubj¾)�”}”(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È)�”}”(hjîh]”hŒ Parameters”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´KmhjèubjÞ)�”}”(hhh]”(jã)�”}”(hŒ8``struct intel_frontbuffer *front`` GEM object to flush ”h]”(jé)�”}”(hŒ#``struct intel_frontbuffer *front``”h]”jï)�”}”(hj h]”hŒstruct intel_frontbuffer *front”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´Kjhjubj)�”}”(hhh]”hì)�”}”(hŒGEM object to flush”h]”hŒGEM object to flush”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j"h´Kjhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³j"h´Kjhjubjã)�”}”(hŒ>``enum fb_op_origin origin`` which operation caused the flush ”h]”(jé)�”}”(hŒ``enum fb_op_origin origin``”h]”jï)�”}”(hjFh]”hŒenum fb_op_origin origin”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´Kkhj@ubj)�”}”(hhh]”hì)�”}”(hŒ which operation caused the flush”h]”hŒ which operation caused the flush”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[h´Kkhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³j[h´Kkhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjèubhì)�”}”(hŒ**Description**”h]”jÈ)�”}”(hj�h]”hŒ Description”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´Kmhjèubhì)�”}”(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.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:10: ./drivers/gpu/drm/i915/display/intel_frontbuffer.h”h´Klhjèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j½hhØh²hh³Nh´Nubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j6Œfrontbuffer_flush (C function)”Œc.frontbuffer_flush”hNt”auh1j)hhØh²hh³Nh´Nubj;)�”}”(hhh]”(j@)�”}”(hŒovoid frontbuffer_flush (struct intel_display *display, unsigned int frontbuffer_bits, enum fb_op_origin origin)”h]”jF)�”}”(hŒnvoid frontbuffer_flush(struct intel_display *display, unsigned int frontbuffer_bits, enum fb_op_origin origin)”h]”(jL)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÂh²hh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KHubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÂh²hh³jÔh´KHubjo)�”}”(hŒfrontbuffer_flush”h]”ju)�”}”(hŒfrontbuffer_flush”h]”hŒfrontbuffer_flush”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjãubah}”(h]”h ]”(jˆj‰eh"]”h$]”h&]”hÅhÆuh1jnhjÂh²hh³jÔh´KHubjŽ)�”}”(hŒX(struct intel_display *display, unsigned int frontbuffer_bits, enum fb_op_origin origin)”h]”(j”)�”}”(hŒstruct intel_display *display”h]”(jš)�”}”(hj�h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjÿubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÿubh)�”}”(hhh]”ju)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”j#Œmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”jß)�”}”jÒjésbŒc.frontbuffer_flush”†”asbuh1hhjÿubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÿubjó)�”}”(hjöh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jòhjÿubju)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjûubj”)�”}”(hŒunsigned int frontbuffer_bits”h]”(jL)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjqubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjqubjL)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjqubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjqubju)�”}”(hŒfrontbuffer_bits”h]”hŒfrontbuffer_bits”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjûubj”)�”}”(hŒenum fb_op_origin origin”h]”(jš)�”}”(hjh]”hŒenum”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjÂubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÂubh)�”}”(hhh]”ju)�”}”(hŒ fb_op_origin”h]”hŒ fb_op_origin”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jæŒmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”j=Œc.frontbuffer_flush”†”asbuh1hhjÂubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÂubju)�”}”(hŒorigin”h]”hŒorigin”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjûubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�hjÂh²hh³jÔh´KHubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆˆuh1jEj‰jŠhj¾h²hh³jÔh´KHubah}”(h]”j¹ah ]”(jŽj�eh"]”h$]”h&]”j“ˆj”)j•huh1j?h³jÔh´KHhj»h²hubj—)�”}”(hhh]”hì)�”}”(hŒflush frontbuffer”h]”hŒflush frontbuffer”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KHhj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j–hj»h²hh³jÔh´KHubeh}”(h]”h ]”(jÐŒfunction”eh"]”h$]”h&]”j·jÐj¸jRj¹jRjº‰j»‰j¼‰uh1j:h²hhhØh³Nh´Nubj¾)�”}”(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^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KLhjVubjÞ)�”}”(hhh]”(jã)�”}”(hŒ1``struct intel_display *display`` display device ”h]”(jé)�”}”(hŒ!``struct intel_display *display``”h]”jï)�”}”(hj{h]”hŒstruct intel_display *display”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KIhjuubj)�”}”(hhh]”hì)�”}”(hŒdisplay device”h]”hŒdisplay device”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´KIhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³j�h´KIhjrubjã)�”}”(hŒB``unsigned int frontbuffer_bits`` frontbuffer plane tracking bits ”h]”(jé)�”}”(hŒ!``unsigned int frontbuffer_bits``”h]”jï)�”}”(hj´h]”hŒunsigned int frontbuffer_bits”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KJhj®ubj)�”}”(hhh]”hì)�”}”(hŒfrontbuffer plane tracking bits”h]”hŒfrontbuffer plane tracking bits”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉh´KJhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jÉh´KJhjrubjã)�”}”(hŒ>``enum fb_op_origin origin`` which operation caused the flush ”h]”(jé)�”}”(hŒ``enum fb_op_origin origin``”h]”jï)�”}”(hjíh]”hŒenum fb_op_origin origin”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KKhjçubj)�”}”(hhh]”hì)�”}”(hŒ which operation caused the flush”h]”hŒ which operation caused the flush”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´KKhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jh´KKhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjVubhì)�”}”(hŒ**Description**”h]”jÈ)�”}”(hj(h]”hŒ Description”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KMhjVubhì)�”}”(hŒÖ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.”h]”hŒØ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.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KLhjVubhì)�”}”(hŒ%Can be called without any locks held.”h]”hŒ%Can be called without any locks held.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KPhjVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j½hhØh²hh³Nh´Nubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j6Œ#intel_frontbuffer_flip (C function)”Œc.intel_frontbuffer_flip”hNt”auh1j)hhØh²hh³Nh´Nubj;)�”}”(hhh]”(j@)�”}”(hŒVvoid intel_frontbuffer_flip (struct intel_display *display, unsigned frontbuffer_bits)”h]”jF)�”}”(hŒUvoid intel_frontbuffer_flip(struct intel_display *display, unsigned frontbuffer_bits)”h]”(jL)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjxh²hh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kiubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjxh²hh³jŠh´Kiubjo)�”}”(hŒintel_frontbuffer_flip”h]”ju)�”}”(hŒintel_frontbuffer_flip”h]”hŒintel_frontbuffer_flip”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj™ubah}”(h]”h ]”(jˆj‰eh"]”h$]”h&]”hÅhÆuh1jnhjxh²hh³jŠh´KiubjŽ)�”}”(hŒ:(struct intel_display *display, unsigned frontbuffer_bits)”h]”(j”)�”}”(hŒstruct intel_display *display”h]”(jš)�”}”(hj�h]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjµubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjµubh)�”}”(hhh]”ju)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jÙŒmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”jß)�”}”jÒjŸsbŒc.intel_frontbuffer_flip”†”asbuh1hhjµubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjµubjó)�”}”(hjöh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jòhjµubju)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hj±ubj”)�”}”(hŒunsigned frontbuffer_bits”h]”(jL)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj' ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj' ubju)�”}”(hŒfrontbuffer_bits”h]”hŒfrontbuffer_bits”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj' ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hj±ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�hjxh²hh³jŠh´Kiubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆˆuh1jEj‰jŠhjth²hh³jŠh´Kiubah}”(h]”joah ]”(jŽj�eh"]”h$]”h&]”j“ˆj”)j•huh1j?h³jŠh´Kihjqh²hubj—)�”}”(hhh]”hì)�”}”(hŒsynchronous frontbuffer flip”h]”hŒsynchronous frontbuffer flip”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kihjn h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j–hjqh²hh³jŠh´Kiubeh}”(h]”h ]”(jÐŒfunction”eh"]”h$]”h&]”j·jÐj¸j‰ j¹j‰ jº‰j»‰j¼‰uh1j:h²hhhØh³Nh´Nubj¾)�”}”(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• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kmhj� ubjÞ)�”}”(hhh]”(jã)�”}”(hŒ1``struct intel_display *display`` display device ”h]”(jé)�”}”(hŒ!``struct intel_display *display``”h]”jï)�”}”(hj² h]”hŒstruct intel_display *display”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kjhj¬ ubj)�”}”(hhh]”hì)�”}”(hŒdisplay device”h]”hŒdisplay device”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÇ h´KjhjÈ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jÇ h´Kjhj© ubjã)�”}”(hŒ>``unsigned frontbuffer_bits`` frontbuffer plane tracking bits ”h]”(jé)�”}”(hŒ``unsigned frontbuffer_bits``”h]”jï)�”}”(hjë h]”hŒunsigned frontbuffer_bits”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kkhjå ubj)�”}”(hhh]”hì)�”}”(hŒfrontbuffer plane tracking bits”h]”hŒfrontbuffer plane tracking bits”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´Kkhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³j h´Kkhj© ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÝhj� ubhì)�”}”(hŒ**Description**”h]”jÈ)�”}”(hj& h]”hŒ Description”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kmhj� ubhì)�”}”(hŒÁ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.”h]”(hŒ5This function gets called after scheduling a flip on ”…”�”}”(hj< h²hh³Nh´NubjÈ)�”}”(hŒ**obj**”h]”hŒobj”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj< 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< h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Klhj� ubhì)�”}”(hŒ%Can be called without any locks held.”h]”hŒ%Can be called without any locks held.”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kphj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j½hhØh²hh³Nh´Nubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j6Œ*intel_frontbuffer_queue_flush (C function)”Œc.intel_frontbuffer_queue_flush”hNt”auh1j)hhØh²hh³Nh´Nubj;)�”}”(hhh]”(j@)�”}”(hŒDvoid intel_frontbuffer_queue_flush (struct intel_frontbuffer *front)”h]”jF)�”}”(hŒCvoid intel_frontbuffer_queue_flush(struct intel_frontbuffer *front)”h]”(jL)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjˆ h²hh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K±ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjˆ h²hh³jš h´K±ubjo)�”}”(hŒintel_frontbuffer_queue_flush”h]”ju)�”}”(hŒintel_frontbuffer_queue_flush”h]”hŒintel_frontbuffer_queue_flush”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj© ubah}”(h]”h ]”(jˆj‰eh"]”h$]”h&]”hÅhÆuh1jnhjˆ h²hh³jš h´K±ubjŽ)�”}”(hŒ!(struct intel_frontbuffer *front)”h]”j”)�”}”(hŒstruct intel_frontbuffer *front”h]”(jš)�”}”(hj�h]”hŒstruct”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjÅ ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÅ ubh)�”}”(hhh]”ju)�”}”(hŒintel_frontbuffer”h]”hŒintel_frontbuffer”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjä ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jé Œmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”jß)�”}”jÒj¯ sbŒc.intel_frontbuffer_queue_flush”†”asbuh1hhjÅ ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjÅ ubjó)�”}”(hjöh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jòhjÅ ubju)�”}”(hŒfront”h]”hŒfront”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjÁ ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�hjˆ h²hh³jš h´K±ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆˆuh1jEj‰jŠhj„ h²hh³jš h´K±ubah}”(h]”j ah ]”(jŽj�eh"]”h$]”h&]”j“ˆj”)j•huh1j?h³jš h´K±hj� h²hubj—)�”}”(hhh]”hì)�”}”(hŒ!queue flushing frontbuffer object”h]”hŒ!queue flushing frontbuffer object”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K±hjI h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j–hj� h²hh³jš h´K±ubeh}”(h]”h ]”(jÐŒfunction”eh"]”h$]”h&]”j·jÐj¸jd j¹jd jº‰j»‰j¼‰uh1j:h²hhhØh³Nh´Nubj¾)�”}”(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 signals”h]”(hì)�”}”(hŒ**Parameters**”h]”jÈ)�”}”(hjn h]”hŒ Parameters”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´Kµhjh ubjÞ)�”}”(hhh]”jã)�”}”(hŒ8``struct intel_frontbuffer *front`` GEM object to flush ”h]”(jé)�”}”(hŒ#``struct intel_frontbuffer *front``”h]”jï)�”}”(hj� h]”hŒstruct intel_frontbuffer *front”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K²hj‡ ubj)�”}”(hhh]”hì)�”}”(hŒGEM object to flush”h]”hŒGEM object to flush”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¢ h´K²hj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³j¢ h´K²hj„ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjh ubhì)�”}”(hŒ**Description**”h]”jÈ)�”}”(hjÈ h]”hŒ Description”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K´hjh ubhì)�”}”(hŒ]This function is targeted for our dirty callback for queueing flush when dma fence is signals”h]”hŒ]This function is targeted for our dirty callback for queueing flush when dma fence is signals”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´K³hjh ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j½hhØh²hh³Nh´Nubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j6Œ$intel_frontbuffer_track (C function)”Œc.intel_frontbuffer_track”hNt”auh1j)hhØh²hh³Nh´Nubj;)�”}”(hhh]”(j@)�”}”(hŒzvoid intel_frontbuffer_track (struct intel_frontbuffer *old, struct intel_frontbuffer *new, unsigned int frontbuffer_bits)”h]”jF)�”}”(hŒyvoid intel_frontbuffer_track(struct intel_frontbuffer *old, struct intel_frontbuffer *new, unsigned int frontbuffer_bits)”h]”(jL)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj h²hh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÎubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj h²hh³j h´KÎubjo)�”}”(hŒintel_frontbuffer_track”h]”ju)�”}”(hŒintel_frontbuffer_track”h]”hŒintel_frontbuffer_track”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj* ubah}”(h]”h ]”(jˆj‰eh"]”h$]”h&]”hÅhÆuh1jnhj h²hh³j h´KÎubjŽ)�”}”(hŒ](struct intel_frontbuffer *old, struct intel_frontbuffer *new, unsigned int frontbuffer_bits)”h]”(j”)�”}”(hŒstruct intel_frontbuffer *old”h]”(jš)�”}”(hj�h]”hŒstruct”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjF ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjF ubh)�”}”(hhh]”ju)�”}”(hŒintel_frontbuffer”h]”hŒintel_frontbuffer”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthje ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jj Œmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”jß)�”}”jÒj0 sbŒc.intel_frontbuffer_track”†”asbuh1hhjF ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hjF ubjó)�”}”(hjöh]”hŒ*”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jòhjF ubju)�”}”(hŒold”h]”hŒold”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthjF ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjB ubj”)�”}”(hŒstruct intel_frontbuffer *new”h]”(jš)�”}”(hj�h]”hŒstruct”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hj¸ ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj¸ ubh)�”}”(hhh]”ju)�”}”(hŒintel_frontbuffer”h]”hŒintel_frontbuffer”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj× ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÐŒreftype”jÒŒ reftarget”jÜ Œmodname”NŒ classname”NjÖjÙ)�”}”jÜ]”j„ Œc.intel_frontbuffer_track”†”asbuh1hhj¸ ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj¸ ubjó)�”}”(hjöh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jòhj¸ ubju)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj¸ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjB ubj”)�”}”(hŒunsigned int frontbuffer_bits”h]”(jL)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj( ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj( ubjL)�”}”(hŒint”h]”hŒint”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj( ubj^)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”jjah"]”h$]”h&]”uh1j]hj( ubju)�”}”(hŒfrontbuffer_bits”h]”hŒfrontbuffer_bits”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1jthj( ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“hjB ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�hj h²hh³j h´KÎubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆˆuh1jEj‰jŠhj h²hh³j h´KÎubah}”(h]”j ah ]”(jŽj�eh"]”h$]”h&]”j“ˆj”)j•huh1j?h³j h´KÎhj h²hubj—)�”}”(hhh]”hì)�”}”(hŒupdate frontbuffer tracking”h]”hŒupdate frontbuffer tracking”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÎhj‹ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j–hj h²hh³j h´KÎubeh}”(h]”h ]”(jÐŒfunction”eh"]”h$]”h&]”j·jÐj¸j¦ j¹j¦ jº‰j»‰j¼‰uh1j:h²hhhØh³Nh´Nubj¾)�”}”(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² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÒhjª ubjÞ)�”}”(hhh]”(jã)�”}”(hŒK``struct intel_frontbuffer *old`` current buffer for the frontbuffer slots ”h]”(jé)�”}”(hŒ!``struct intel_frontbuffer *old``”h]”jï)�”}”(hjÏ h]”hŒstruct intel_frontbuffer *old”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjÍ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÏhjÉ ubj)�”}”(hhh]”hì)�”}”(hŒ(current buffer for the frontbuffer slots”h]”hŒ(current buffer for the frontbuffer slots”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jä h´KÏhjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jä h´KÏhjÆ ubjã)�”}”(hŒG``struct intel_frontbuffer *new`` new buffer for the frontbuffer slots ”h]”(jé)�”}”(hŒ!``struct intel_frontbuffer *new``”h]”jï)�”}”(hjh]”hŒstruct intel_frontbuffer *new”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÐhjubj)�”}”(hhh]”hì)�”}”(hŒ$new buffer for the frontbuffer slots”h]”hŒ$new buffer for the frontbuffer slots”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´KÐhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jh´KÐhjÆ ubjã)�”}”(hŒ?``unsigned int frontbuffer_bits`` bitmask of frontbuffer slots ”h]”(jé)�”}”(hŒ!``unsigned int frontbuffer_bits``”h]”jï)�”}”(hjAh]”hŒunsigned int frontbuffer_bits”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÑhj;ubj)�”}”(hhh]”hì)�”}”(hŒbitmask of frontbuffer slots”h]”hŒbitmask of frontbuffer slots”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jVh´KÑhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jâh³jVh´KÑhjÆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjª ubhì)�”}”(hŒ**Description**”h]”jÈ)�”}”(hj|h]”hŒ Description”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÓhjª ubhì)�”}”(hŒ 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Œ+This updates the frontbuffer tracking bits ”…”�”}”(hj’h²hh³Nh´NubjÈ)�”}”(hŒ**frontbuffer_bits**”h]”hŒfrontbuffer_bits”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj’ubhŒ by clearing them from ”…”�”}”(hj’h²hh³Nh´NubjÈ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj’ubhŒ and setting them in ”…”�”}”(hj’h²hh³Nh´NubjÈ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj’ubhŒ. Both ”…”�”}”(hj’h²hh³Nh´NubjÈ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj’ubhŒ and ”…”�”}”(hj’h²hh³Nh´NubjÈ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj’ubhŒ can be NULL.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ~/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/frontbuffer:13: ./drivers/gpu/drm/i915/display/intel_frontbuffer.c”h´KÒhjª ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j½hhØh²hh³Nh´Nubeh}”(h]”Œfrontbuffer-tracking”ah ]”h"]”Œfrontbuffer tracking”ah$]”h&]”uh1hÖhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j-Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”jjsŒ nametypes”}”j‰sh}”(jhØj8jAjœj¡j¹j¾jojtj j„ j j uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.