__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.21: ~ $
<!DOCTYPE html>

<html lang="en" data-content_root="../../../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>drm/amd/display - Display Core (DC) &#8212; The Linux Kernel  documentation</title>
    <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
    <link rel="stylesheet" type="text/css" href="../../../_static/alabaster.css?v=3918102e" />
    <script src="../../../_static/documentation_options.js?v=5929fcd5"></script>
    <script src="../../../_static/doctools.js?v=9bcbadda"></script>
    <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
    <link rel="index" title="Index" href="../../../genindex.html" />
    <link rel="search" title="Search" href="../../../search.html" />
    <link rel="next" title="AMDgpu Display Manager" href="display-manager.html" />
    <link rel="prev" title="MicroEngine Scheduler (MES)" href="../gc/mes.html" />
   
  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
  

  
  

  </head><body>
  <div class="document">
    
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../../../index.html">
              <img class="logo" src="../../../_static/logo.svg" alt="Logo of The Linux Kernel"/>
            </a></p>
<h1 class="logo"><a href="../../../index.html">The Linux Kernel</a></h1>



<p class="blurb">6.18.50</p>







<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../../../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>


<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>

<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../../subsystem-apis.html#human-interfaces">Human interfaces</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../../../input/index.html">Input Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../hid/index.html">Human Interface Devices (HID)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../sound/index.html">Sound Subsystem Documentation</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../../index.html">GPU Driver Developer’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../fb/index.html">Frame Buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../leds/index.html">LEDs</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../subsystem-apis.html#storage-interfaces">Storage interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../translations/index.html">Translations</a></li>
</ul>

</div>

<script type="text/javascript"> <!--
  var sbar = document.getElementsByClassName("sphinxsidebar")[0];
  let currents = document.getElementsByClassName("current")
  if (currents.length) {
    sbar.scrollTop = currents[currents.length - 1].offsetTop;
  }
  --> </script>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../../../_sources/gpu/amdgpu/display/index.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
        </div>
      </div>
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  



<section id="drm-amd-display-display-core-dc">
<span id="amdgpu-display-core"></span><h1>drm/amd/display - Display Core (DC)<a class="headerlink" href="#drm-amd-display-display-core-dc" title="Link to this heading">¶</a></h1>
<p>AMD display engine is partially shared with other operating systems; for this
reason, our Display Core Driver is divided into two pieces:</p>
<ol class="arabic simple">
<li><p><strong>Display Core (DC)</strong> contains the OS-agnostic components. Things like
hardware programming and resource management are handled here.</p></li>
<li><p><strong>Display Manager (DM)</strong> contains the OS-dependent components. Hooks to the
amdgpu base driver and DRM are implemented here. For example, you can check
display/amdgpu_dm/ folder.</p></li>
</ol>
<section id="dc-code-validation">
<h2>DC Code validation<a class="headerlink" href="#dc-code-validation" title="Link to this heading">¶</a></h2>
<p>Maintaining the same code base across multiple OSes requires a lot of
synchronization effort between repositories and exhaustive validation. In the
DC case, we maintain a tree to centralize code from different parts. The shared
repository has integration tests with our Internal Linux CI farm, and we run a
comprehensive set of IGT tests in various AMD GPUs/APUs (mostly recent dGPUs
and APUs). Our CI also checks ARM64/32, PPC64/32, and x86_64/32 compilation
with DCN enabled and disabled.</p>
<p>When we upstream a new feature or some patches, we pack them in a patchset with
the prefix <strong>DC Patches for &lt;DATE&gt;</strong>, which is created based on the latest
<a class="reference external" href="https://gitlab.freedesktop.org/agd5f/linux">amd-staging-drm-next</a>. All of
those patches are under a DC version tested as follows:</p>
<ul class="simple">
<li><p>Ensure that every patch compiles and the entire series pass our set of IGT
test in different hardware.</p></li>
<li><p>Prepare a branch with those patches for our validation team. If there is an
error, a developer will debug as fast as possible; usually, a simple bisect
in the series is enough to point to a bad change, and two possible actions
emerge: fix the issue or drop the patch. If it is not an easy fix, the bad
patch is dropped.</p></li>
<li><p>Finally, developers wait a few days for community feedback before we merge
the series.</p></li>
</ul>
<p>It is good to stress that the test phase is something that we take extremely
seriously, and we never merge anything that fails our validation. Follows an
overview of our test set:</p>
<ol class="arabic simple">
<li><dl class="simple">
<dt>Manual test</dt><dd><ul class="simple">
<li><p>Multiple Hotplugs with DP and HDMI.</p></li>
<li><p>Stress test with multiple display configuration changes via the user interface.</p></li>
<li><p>Validate VRR behaviour.</p></li>
<li><p>Check PSR.</p></li>
<li><p>Validate MPO when playing video.</p></li>
<li><p>Test more than two displays connected at the same time.</p></li>
<li><p>Check suspend/resume.</p></li>
<li><p>Validate FPO.</p></li>
<li><p>Check MST.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Automated test</dt><dd><ul class="simple">
<li><p>IGT tests in a farm with GPUs and APUs that support DCN and DCE.</p></li>
<li><p>Compilation validation with the latest GCC and Clang from LTS distro.</p></li>
<li><p>Cross-compilation for PowerPC 64/32, ARM 64/32, and x86 32.</p></li>
</ul>
</dd>
</dl>
</li>
</ol>
<p>In terms of test setup for CI and manual tests, we usually use:</p>
<ol class="arabic simple">
<li><p>The latest Ubuntu LTS.</p></li>
<li><p>In terms of userspace, we only use fully updated open-source components
provided by the distribution official package manager.</p></li>
<li><p>Regarding IGT, we use the latest code from the upstream.</p></li>
<li><p>Most of the manual tests are conducted in the GNome but we also use KDE.</p></li>
</ol>
<p>Notice that someone from our test team will always reply to the cover letter
with the test report.</p>
</section>
<section id="dc-information">
<h2>DC Information<a class="headerlink" href="#dc-information" title="Link to this heading">¶</a></h2>
<p>The display pipe is responsible for “scanning out” a rendered frame from the
GPU memory (also called VRAM, FrameBuffer, etc.) to a display. In other words,
it would:</p>
<ol class="arabic simple">
<li><p>Read frame information from memory;</p></li>
<li><p>Perform required transformation;</p></li>
<li><p>Send pixel data to sink devices.</p></li>
</ol>
<p>If you want to learn more about our driver details, take a look at the below
table of content:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="display-manager.html">AMDgpu Display Manager</a><ul>
<li class="toctree-l2"><a class="reference internal" href="display-manager.html#lifecycle">Lifecycle</a></li>
<li class="toctree-l2"><a class="reference internal" href="display-manager.html#interrupts">Interrupts</a></li>
<li class="toctree-l2"><a class="reference internal" href="display-manager.html#atomic-implementation">Atomic Implementation</a></li>
<li class="toctree-l2"><a class="reference internal" href="display-manager.html#color-management-properties">Color Management Properties</a><ul>
<li class="toctree-l3"><a class="reference internal" href="display-manager.html#dc-color-capabilities-between-dcn-generations">DC Color Capabilities between DCN generations</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="display-manager.html#blend-mode-properties">Blend Mode Properties</a><ul>
<li class="toctree-l3"><a class="reference internal" href="display-manager.html#blend-configuration-flow">Blend configuration flow</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="dcn-overview.html">Display Core Next (DCN)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="dcn-overview.html#front-end-and-back-end">Front End and Back End</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-overview.html#data-flow">Data Flow</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-overview.html#amd-hardware-pipeline">AMD Hardware Pipeline</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-overview.html#global-sync">Global Sync</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="dcn-blocks.html">DCN Blocks</a><ul>
<li class="toctree-l2"><a class="reference internal" href="dcn-blocks.html#dchubbub">DCHUBBUB</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-blocks.html#hubp">HUBP</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-blocks.html#dpp">DPP</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-blocks.html#mpc">MPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-blocks.html#opp">OPP</a></li>
<li class="toctree-l2"><a class="reference internal" href="dcn-blocks.html#dio">DIO</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="programming-model-dcn.html">DC Programming Model</a><ul>
<li class="toctree-l2"><a class="reference internal" href="programming-model-dcn.html#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="programming-model-dcn.html#display-driver-architecture-overview">Display Driver Architecture Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="programming-model-dcn.html#basic-objects">Basic Objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="programming-model-dcn.html#basic-operations">Basic Operations</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mpo-overview.html">Multiplane Overlay (MPO)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="mpo-overview.html#plane-restrictions">Plane Restrictions</a></li>
<li class="toctree-l2"><a class="reference internal" href="mpo-overview.html#cursor-restrictions">Cursor Restrictions</a></li>
<li class="toctree-l2"><a class="reference internal" href="mpo-overview.html#use-cases">Use Cases</a><ul>
<li class="toctree-l3"><a class="reference internal" href="mpo-overview.html#picture-in-picture-pip-playback-underlay-strategy">Picture-in-Picture (PIP) playback - Underlay strategy</a></li>
<li class="toctree-l3"><a class="reference internal" href="mpo-overview.html#multiple-display-mpo">Multiple Display MPO</a><ul>
<li class="toctree-l4"><a class="reference internal" href="mpo-overview.html#limitations">Limitations</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="dc-debug.html">Display Core Debug tools</a><ul>
<li class="toctree-l2"><a class="reference internal" href="dc-debug.html#narrow-down-display-issues">Narrow down display issues</a><ul>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#dc-dmesg-important-messages">DC dmesg important messages</a></li>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#avoid-loading-display-core">Avoid loading display core</a></li>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#display-flickering">Display flickering</a></li>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#display-artifacts">Display artifacts</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="dc-debug.html#disabling-enabling-specific-features">Disabling/Enabling specific features</a></li>
<li class="toctree-l2"><a class="reference internal" href="dc-debug.html#dc-visual-confirmation">DC Visual Confirmation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#multiple-planes-debug">Multiple Planes Debug</a></li>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#pipe-split-debug">Pipe Split Debug</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="dc-debug.html#dtn-debug">DTN Debug</a></li>
<li class="toctree-l2"><a class="reference internal" href="dc-debug.html#collect-firmware-information">Collect Firmware information</a></li>
<li class="toctree-l2"><a class="reference internal" href="dc-debug.html#dmub-firmware-debug">DMUB Firmware Debug</a><ul>
<li class="toctree-l3"><a class="reference internal" href="dc-debug.html#trace-groups">Trace Groups</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="display-contributing.html">AMDGPU - Display Contributions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="display-contributing.html#gitlab-issues">Gitlab issues</a></li>
<li class="toctree-l2"><a class="reference internal" href="display-contributing.html#igt">IGT</a></li>
<li class="toctree-l2"><a class="reference internal" href="display-contributing.html#compilation">Compilation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#fix-compilation-warnings">Fix compilation warnings</a></li>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#fix-compilation-issues-when-using-um-architecture">Fix compilation issues when using um architecture</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="display-contributing.html#code-refactor">Code Refactor</a><ul>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#add-prefix-to-dc-functions-to-improve-the-debug-with-ftrace">Add prefix to DC functions to improve the debug with ftrace</a></li>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#reduce-code-duplication">Reduce code duplication</a></li>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#make-atomic-commit-check-tail-more-readable">Make atomic_commit_[check|tail] more readable</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="display-contributing.html#documentation">Documentation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#expand-kernel-doc">Expand kernel-doc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="display-contributing.html#beyond-amdgpu">Beyond AMDGPU</a><ul>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#enable-underlay">Enable underlay</a></li>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#adaptive-backlight-modulation-abm">Adaptive Backlight Modulation (ABM)</a></li>
<li class="toctree-l3"><a class="reference internal" href="display-contributing.html#hdr-color-management-vrr">HDR &amp; Color management &amp; VRR</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="dc-glossary.html">DC Glossary</a></li>
</ul>
</div>
</section>
</section>


          </div>
          
        </div>
      </div>
    <div class="clearer"></div>
  </div>
    <div class="footer">
      &#169;The kernel development community.
      
      |
      Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
      &amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
      
      |
      <a href="../../../_sources/gpu/amdgpu/display/index.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>

Filemanager

Name Type Size Permission Actions
dc-debug.html File 27.7 KB 0644
dc-glossary.html File 18.75 KB 0644
dcn-blocks.html File 42.03 KB 0644
dcn-overview.html File 20.54 KB 0644
display-contributing.html File 16.96 KB 0644
display-manager.html File 125.24 KB 0644
index.html File 20.77 KB 0644
mpo-overview.html File 22.98 KB 0644
programming-model-dcn.html File 19.28 KB 0644
Filemanager