[Intel-gfx] [PATCH 00/53] Execlists v3

oscar.mateo at intel.com oscar.mateo at intel.com
Fri Jun 13 17:37:18 CEST 2014

From: Oscar Mateo <oscar.mateo at intel.com>

For a description of this patchset, please check the previous cover letters: [1] and [2].

The main difference with v2 is in how we get to the point of context submission: this time
around, instead of massaging the legacy ringbuffer submission functions (mostly located in intel_ringebuffer.c), I have effectively created a separate path for Execlists submission
in intel_lrc.c (even though everybody knows you shouldn't mess with split timelines). The
alternative path is mostly a clone of the previous, but the idea is that it will differ
significantly in the (so in exchange for duplicated code, we gain the ability to perform
big changes without breaking legacy hardware support). This change was a suggestion by
Daniel Vetter [3].

I know many patches here will be very controversial, so I would appreciate early feedback
in the direction this effort is taking.

The previous IGT test [4] still applies.


Ben Widawsky (2):
  drm/i915/bdw: Implement context switching (somewhat)
  drm/i915/bdw: Print context state in debugfs

Michel Thierry (1):
  drm/i915/bdw: Two-stage execlist submit process

Oscar Mateo (48):
  drm/i915: Extract context backing object allocation
  drm/i915: Rename ctx->obj to ctx->render_obj
  drm/i915: Add a dev pointer to the context
  drm/i915: Extract ringbuffer destroy & make alloc outside accesible
  drm/i915: Move i915_gem_validate_context() to i915_gem_context.c
  drm/i915/bdw: Introduce one context backing object per engine
  drm/i915/bdw: New file for Logical Ring Contexts and Execlists
  drm/i915/bdw: Macro for LRCs and module option for Execlists
  drm/i915/bdw: Initialization for Logical Ring Contexts
  drm/i915/bdw: A bit more advanced context init/fini
  drm/i915/bdw: Allocate ringbuffers for Logical Ring Contexts
  drm/i915/bdw: Populate LR contexts (somewhat)
  drm/i915/bdw: Deferred creation of user-created LRCs
  drm/i915/bdw: Render moot context reset and switch when LRCs are
  drm/i915/bdw: Don't write PDP in the legacy way when using LRCs
  drm/i915/bdw: Skeleton for the new logical rings submission path
  drm/i915/bdw: Generic logical ring init and cleanup
  drm/i915/bdw: New header file for LRs, LRCs and Execlists
  drm/i915: Extract pipe control fini & make init outside accesible
  drm/i915/bdw: GEN-specific logical ring init
  drm/i915/bdw: GEN-specific logical ring set/get seqno
  drm/i915: Make ring_space more generic and outside accesible
  drm/i915: Generalize intel_ring_get_tail
  drm/i915: Make intel_ring_stopped outside accesible
  drm/i915/bdw: GEN-specific logical ring submit context (somewhat)
  drm/i915/bdw: New logical ring submission mechanism
  drm/i915/bdw: GEN-specific logical ring emit request
  drm/i915/bdw: GEN-specific logical ring emit flush
  drm/i915/bdw: Emission of requests with logical rings
  drm/i915/bdw: Ring idle and stop with logical rings
  drm/i915/bdw: Interrupts with logical rings
  drm/i915/bdw: GEN-specific logical ring emit batchbuffer start
  drm/i915: Extract the actual workload submission mechanism from
  drm/i915: Make move_to_active and retire_commands outside accesible
  drm/i915/bdw: Workload submission mechanism for Execlists
  drm/i915: Abstract the workload submission mechanism away
  drm/i915/bdw: Write the tail pointer, LRC style
  drm/i915/bdw: Avoid non-lite-restore preemptions
  drm/i915/bdw: Make sure gpu reset still works with Execlists
  drm/i915/bdw: Make sure error capture keeps working with Execlists
  drm/i915/bdw: Help out the ctx switch interrupt handler
  drm/i915/bdw: Do not call intel_runtime_pm_get() in an interrupt
  drm/i915/bdw: Display execlists info in debugfs
  drm/i915/bdw: Display context backing obj & ringbuffer info in debugfs
  drm/i915: Extract render state preparation
  drm/i915/bdw: Render state init for Execlists
  drm/i915/bdw: Document Logical Rings, LR contexts and Execlists
  drm/i915/bdw: Enable logical ring contexts

Sourab Gupta (1):
  !UPSTREAM: drm/i915: Use MMIO flips

Thomas Daniel (1):
  drm/i915/bdw: Handle context switch events

 drivers/gpu/drm/i915/Makefile                |    1 +
 drivers/gpu/drm/i915/i915_debugfs.c          |  150 +-
 drivers/gpu/drm/i915/i915_dma.c              |    1 +
 drivers/gpu/drm/i915/i915_drv.h              |   60 +-
 drivers/gpu/drm/i915/i915_gem.c              |   70 +-
 drivers/gpu/drm/i915/i915_gem_context.c      |  242 +++-
 drivers/gpu/drm/i915/i915_gem_execbuffer.c   |  328 ++---
 drivers/gpu/drm/i915/i915_gem_gtt.c          |    5 +
 drivers/gpu/drm/i915/i915_gem_render_state.c |   39 +-
 drivers/gpu/drm/i915/i915_gpu_error.c        |   16 +-
 drivers/gpu/drm/i915/i915_irq.c              |   53 +-
 drivers/gpu/drm/i915/i915_params.c           |   11 +
 drivers/gpu/drm/i915/i915_reg.h              |    5 +
 drivers/gpu/drm/i915/intel_display.c         |  148 +-
 drivers/gpu/drm/i915/intel_drv.h             |    6 +
 drivers/gpu/drm/i915/intel_lrc.c             | 1902 ++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_lrc.h             |   99 ++
 drivers/gpu/drm/i915/intel_renderstate.h     |   13 +
 drivers/gpu/drm/i915/intel_ringbuffer.c      |  101 +-
 drivers/gpu/drm/i915/intel_ringbuffer.h      |   53 +-
 20 files changed, 2974 insertions(+), 329 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/intel_lrc.c
 create mode 100644 drivers/gpu/drm/i915/intel_lrc.h


More information about the Intel-gfx mailing list