1. 20 9月, 2013 1 次提交
  2. 19 9月, 2013 2 次提交
  3. 17 9月, 2013 18 次提交
  4. 13 9月, 2013 6 次提交
  5. 10 9月, 2013 3 次提交
    • C
      drm/i915: Write RING_TAIL once per-request · 09246732
      Chris Wilson 提交于
      Ignoring the legacy DRI1 code, and a couple of special cases (to be
      discussed later), all access to the ring is mediated through requests.
      The first write to a ring will grab a seqno and mark the ring as having
      an outstanding_lazy_request. Either through explicitly adding a request
      after an execbuffer or through an implicit wait (either by the CPU or by
      a semaphore), that sequence of writes will be terminated with a request.
      So we can ellide all the intervening writes to the tail register and
      send the entire command stream to the GPU at once. This will reduce the
      number of *serialising* writes to the tail register by a factor or 3-5
      times (depending upon architecture and number of workarounds, context
      switches, etc involved). This becomes even more noticeable when the
      register write is overloaded with a number of debugging tools. The
      astute reader will wonder if it is then possible to overflow the ring
      with a single command. It is not. When we start a command sequence to
      the ring, we check for available space and issue a wait in case we have
      not. The ring wait will in this case be forced to flush the outstanding
      register write and then poll the ACTHD for sufficient space to continue.
      
      The exception to the rule where everything is inside a request are a few
      initialisation cases where we may want to write GPU commands via the CS
      before userspace wakes up and page flips.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      09246732
    • V
      drm/i915: Call intel_update_watermarks() in specific place during modeset · f37fcc2a
      Ville Syrjälä 提交于
      Make the call to intel_update_watermarks() just once or twice during
      modeset. Ideally it should happen independently when each plane gets
      enabled/disabled, but for now it seems better to keep it in central
      place. We can improve things when we get all the planes sorted out
      in a better way.
      
      When enabling set up the watermarks just before the pipe is enabled.
      And when disabling we need to wait until we've marked the crtc as
      inactive, as otherwise intel_crtc_active() would still think the pipe
      is enabled and the computed watermarks would reflect that.
      
      v2: Pimp up the commit message a bit
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f37fcc2a
    • V
      drm/i915: Pass crtc to intel_update_watermarks() · 46ba614c
      Ville Syrjälä 提交于
      Passing the appropriate crtc to intel_update_watermarks() should help
      in avoiding needless work in the future.
      
      v2: Avoid clash with internal 'crtc' variable in some wm functions
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      46ba614c
  6. 05 9月, 2013 1 次提交
  7. 04 9月, 2013 9 次提交