1. 28 3月, 2013 11 次提交
    • D
      drm/i915: clean up plane bpp confusion · baba133a
      Daniel Vetter 提交于
      - There is no 16bpc linear color format in our hw. gen4+ has a 16 bpc
        float layout, but we don't really support it.
      - 10bpc is a gen4+ feature, fix up the support for it.
      - Update_plane should never see a wrong fb bpp value, BUG in the
        corresponding cases.
      
      v2: Rebase on top of Ville's plane pixel layout changes.
      
      v3: Actually drop the old gen4 check for 10bpc planes, spotted
      by Ville Syrjälä.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      baba133a
    • D
      drm/i915: convert DP autodither code to new infrastructure · 36008365
      Daniel Vetter 提交于
      The old code only handled either 6bpc or 8bpc. Since it's easy to do,
      reorganize the code to be a bit more generic so that it can also handle
      10bpc and 12bpc. Note that we still start with 8bpc, so there's no
      functional change.
      
      Also, since we no don't need to compute the 6BPC flag in the mode_valid
      callback, we can consolidate things a bit. That requires though that
      the link bw computation is moved up in the compute_config callback.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      36008365
    • D
      drm/i915: precompute pipe bpp before touching the hw · 4e53c2e0
      Daniel Vetter 提交于
      The procedure has now 3 steps:
      
      1. Compute the bpp that the plane will output, this is done in
         pipe_config_set_bpp and stored into pipe_config->pipe_bpp. Also,
         this function clamps the pipe_bpp to whatever limit the EDID of any
         connected output specifies.
      2. Adjust the pipe_bpp in the encoder and crtc functions, according to
         whatever constraints there are.
      3. Decide whether to use dither by comparing the stored plane bpp with
         computed pipe_bpp.
      
      There are a few slight functional changes in this patch:
      - LVDS connector are now also going through the EDID clamping. But in
        a 2nd change we now unconditionally force the lvds bpc value - this
        shouldn't matter in reality when the panel setup is consistent, but
        better safe than sorry.
      - HDMI now forces the pipe_bpp to the selected value - I think that's
        what we actually want, since otherwise at least the pixelclock
        computations are wrong (I'm not sure whether the port would accept
        e.g. 10 bpc when in 12bpc mode). Contrary to the old code, we pick
        the next higher bpc value, since otherwise there's no way to make
        use of the 12 bpc mode (since the next patch will remove the 12bpc
        plane format, it doesn't exist).
      
      Both of these changes are due to the removal of the
      
      	pipe_bpp = min(display_bpp, plane_bpp);
      
      statement.
      
      Another slight change is the reworking of the dp bpc code:
      - For the mode_valid callback it's sufficient to only check whether
        the mode would fit at the lowest bpc.
      - The bandwidth computation code is a bit restructured: It now walks
        all available bpp values in an outer loop and the codeblock that
        computes derived values (once a good configuration is found) has been
        moved out of the for loop maze. This is prep work to allow us to
        successively fall back on bpc values, and also correctly support bpc
        values != 8 or 6.
      
      v2: Rebased on top of Paulo Zanoni's little refactoring to use more
      drm dp helper functions.
      
      v3: Rebased on top of Jani's eDP bpp fix and Ville's limited color
      range work.
      
      v4: Remove the INTEL_MODE_DP_FORCE_6BPC #define, no longer needed.
      
      v5: Remove intel_crtc->bpp, too, and fix up the 12bpc check in the
      hdmi code. Also fixup the bpp check in intel_dp.c, it'll get reworked
      in a later patch though again.
      
      v6: Fix spelling in a comment.
      
      v7: Debug output improvements for the bpp computation.
      
      v8: Fixup 6bpc lvds check - dual-link and 8bpc mode are different
      things!
      
      v9: Reinstate the fix to properly ignore the firmware edp bpp ... this
      was lost in a rebase.
      
      v10: Both g4x and vlv lack 12bpc pipes, so don't enforce that we have
      that. Still unsure whether this is the way to go, but at least 6bpc
      for a 8bpc hdmi output seems to work.
      
      v11: And g4x/vlv also lack 12bpc hdmi support, so only support high
      depth on DP. Adjust the code.
      
      v12: Rebased.
      
      v13: Split out the introduction of pipe_config->dither|pipe_bpp, as
      requested from Jesse Barnes.
      
      v14: Split out the special 6BPC handling for DP, as requested by Jesse
      Barnes.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4e53c2e0
    • D
      drm/i915: introduce pipe_config->dither|pipe_bpp · 965e0c48
      Daniel Vetter 提交于
      We want to compute this earlier. To avoid a big complicated patch,
      this patch here just does the big search&replace and still calls the
      old functions at the same places.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      965e0c48
    • D
      drm/i915: add pipe_config->limited_color_range · 50f3b016
      Daniel Vetter 提交于
      Now that we have a useful struct for this, let's use it. Some neat
      pointer-chasing required, but it's all there already.
      
      v2: Rebased on top of the added Haswell limited color range support.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      50f3b016
    • D
      drm/i915: add pipe_config->has_pch_encoder · 5bfe2ac0
      Daniel Vetter 提交于
      This is used way too often in the enable/disable paths. And will
      be even more useful in the future.
      
      Note that correct semantics of this change highly depend upon
      correct updating of intel_crtc->config: Like with all other
      modeset state, we need to call ->disable with the old config,
      but ->mode_set and ->enable with the new config.
      
      v2: Do not yet use the flag in the ->disable callbacks - atm we don't
      yet have support for the information stored in the pipe_config in the
      hw state readout code, so this will be wrong at boot-up/resume.
      
      v3: Rebased on top of the hdmi/dp ddi encoder merging.
      
      v4: Fixup stupid rebase error which lead to a NULL vfunc deref.
      
      v5: On haswell the VGA port is on the PCH!
      
      v6: s/IS_HASWELL/HAS_DDI/, spotted by Paulo Zanoni. Also add a missing
      parameter name in a function declaration.
      
      v7: Don't forget to git add ...
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5bfe2ac0
    • D
      drm/i915: add pipe_config->pixel_multiplier · 6cc5f341
      Daniel Vetter 提交于
      Used by SDVO (and hopefully, eventually HDMI, if we ever get around
      to fixing up the low dotclock CEA modes ...).
      
      This required adding a new encoder->mode_set callback to be able to
      pass around the intel_crtc_config.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6cc5f341
    • D
      drm/i915: add pipe_config->timings_set · 7ae89233
      Daniel Vetter 提交于
      Only used by the lvds encoder. Note that we shouldn't do the same
      simple conversion with the FORCE_6BPC flag, since that's much better
      handled by moving all the pipe_bpc computation around.
      
      This requires that we pass the pipe config around to encoders, so
      that they can set special attributes and set constraints. To do so
      introduce a new ->compute_config encoder callback, which is called in
      stead of the drm crtc helper's ->mode_fixup.
      
      To avoid massive churn all over the codebase we don't want to convert
      all existing ->mode_fixup functions. Instead I've opted to convert
      them on an as-needed basis (mostly to cut down on rebase conflicts and
      to have more freedom to experiment around while developing the
      patches).
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7ae89233
    • D
      drm/i915: compute pipe_config earlier · 460da916
      Daniel Vetter 提交于
      To make decent modeset state checking possible (e.g. for the check
      mode with atomic modesetting) we want to have the full pipe
      configuration and state checks done before we touch the hw.
      
      To ensure that all the little bits&pieces that are now moved to the
      pipe_config handle this correctly, move its computation to the right
      spot now, before we touch the hw in the disable_pipes step.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      460da916
    • D
      drm/i915: introduce struct intel_crtc_config · b8cecdf5
      Daniel Vetter 提交于
      Currently only containing the requested and the adjusted mode. And
      only crtc callbacks are converted somewhat to it, encoders will be
      done on a as-needed basis (simply too much churn in one patch
      otherwise).
      
      Future patches will add tons more useful stuff to this struct,
      starting with the very simple.
      
      v2: Store the pipe_config in the intel_crtc, so that the ->mode-set,
      ->enable and also ->disable have easy access to it.
      
      v3: Store the pipe config in the right crtc ...
      
      v4: Rebased.
      
      v5: Fixup an OOPS when trying to kfree an ERR_PTR.
      
      v6: Used drm_moode_copy and some other small cleanups as suggested
      by Ville Syrjälä.
      
      v7: drm_mode_copy preserves the mode id of the destination, so no need
      to clear it again (Ville).
      
      v8: Break a long line spotted by Paulo.
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b8cecdf5
    • C
      drm/i915: Apply alignment restrictions on scanout surfaces for VT-d · 693db184
      Chris Wilson 提交于
      From the w/a database:
      
      'To prevent false VT-d type 6 error:
      
        The primary display plane must be 256KiB aligned, and require an extra
        128 PTEs of padding afterward;
      
        The sprites planes must be 128KiB aligned, and require an extra 64 PTEs
        of padding afterward;
      
        The cursors must be 64KiB aligned, and require an extra 2 PTEs of
        padding afterward.'
      
      As we use the same function to pin the primary and sprite planes, we can
      simply use the more strict requirements for scanouts for both.
      
      Instead of using explicit padding PTEs following the scanout objects, we
      should be able to use the scratch page that is always mapped into the
      unused PTEs to avoid the VT-d error.
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=59626
      References: https://bugs.freedesktop.org/show_bug.cgi?id=59627
      References: https://bugs.freedesktop.org/show_bug.cgi?id=59631Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      [danvet: Apply s/vtd_wa/vtd_scanout_wa/ bikeshed since Damien likes
      it, too.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      693db184
  2. 27 3月, 2013 1 次提交
  3. 23 3月, 2013 8 次提交
  4. 18 3月, 2013 3 次提交
  5. 05 3月, 2013 3 次提交
  6. 04 3月, 2013 5 次提交
  7. 22 2月, 2013 1 次提交
  8. 20 2月, 2013 8 次提交