From mboxrd@z Thu Jan 1 00:00:00 1970 From: oscar.mateo@intel.com Subject: [PATCH 00/53] Execlists v3 Date: Fri, 13 Jun 2014 16:37:18 +0100 Message-ID: <1402673891-14618-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 5C11E6EA3F for ; Fri, 13 Jun 2014 08:42:51 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org From: Oscar Mateo 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. [1] http://lists.freedesktop.org/archives/intel-gfx/2014-March/042563.html [2] http://lists.freedesktop.org/archives/intel-gfx/2014-May/044847.html [3] http://lists.freedesktop.org/archives/intel-gfx/2014-May/045139.html [4] http://lists.freedesktop.org/archives/intel-gfx/2014-May/044846.html 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 enabled 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 execbuffer 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 -- 1.9.0