1. 24 11月, 2016 3 次提交
  2. 22 11月, 2016 3 次提交
  3. 29 10月, 2016 1 次提交
  4. 14 10月, 2016 1 次提交
    • A
      drm/i915: Allocate intel_engine_cs structure only for the enabled engines · 3b3f1650
      Akash Goel 提交于
      With the possibility of addition of many more number of rings in future,
      the drm_i915_private structure could bloat as an array, of type
      intel_engine_cs, is embedded inside it.
      	struct intel_engine_cs engine[I915_NUM_ENGINES];
      Though this is still fine as generally there is only a single instance of
      drm_i915_private structure used, but not all of the possible rings would be
      enabled or active on most of the platforms. Some memory can be saved by
      allocating intel_engine_cs structure only for the enabled/active engines.
      Currently the engine/ring ID is kept static and dev_priv->engine[] is simply
      indexed using the enums defined in intel_engine_id.
      To save memory and continue using the static engine/ring IDs, 'engine' is
      defined as an array of pointers.
      	struct intel_engine_cs *engine[I915_NUM_ENGINES];
      dev_priv->engine[engine_ID] will be NULL for disabled engine instances.
      
      There is a text size reduction of 928 bytes, from 1028200 to 1027272, for
      i915.o file (but for i915.ko file text size remain same as 1193131 bytes).
      
      v2:
      - Remove the engine iterator field added in drm_i915_private structure,
        instead pass a local iterator variable to the for_each_engine**
        macros. (Chris)
      - Do away with intel_engine_initialized() and instead directly use the
        NULL pointer check on engine pointer. (Chris)
      
      v3:
      - Remove for_each_engine_id() macro, as the updated macro for_each_engine()
        can be used in place of it. (Chris)
      - Protect the access to Render engine Fault register with a NULL check, as
        engine specific init is done later in Driver load sequence.
      
      v4:
      - Use !!dev_priv->engine[VCS] style for the engine check in getparam. (Chris)
      - Kill the superfluous init_engine_lists().
      
      v5:
      - Cleanup the intel_engines_init() & intel_engines_setup(), with respect to
        allocation of intel_engine_cs structure. (Chris)
      
      v6:
      - Rebase.
      
      v7:
      - Optimize the for_each_engine_masked() macro. (Chris)
      - Change the type of 'iter' local variable to enum intel_engine_id. (Chris)
      - Rebase.
      
      v8: Rebase.
      
      v9: Rebase.
      
      v10:
      - For index calculation use engine ID instead of pointer based arithmetic in
        intel_engine_sync_index() as engine pointers are not contiguous now (Chris)
      - For appropriateness, rename local enum variable 'iter' to 'id'. (Joonas)
      - Use for_each_engine macro for cleanup in intel_engines_init() and remove
        check for NULL engine pointer in cleanup() routines. (Joonas)
      
      v11: Rebase.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NAkash Goel <akash.goel@intel.com>
      Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1476378888-7372-1-git-send-email-akash.goel@intel.com
      3b3f1650
  5. 16 9月, 2016 1 次提交
  6. 19 8月, 2016 10 次提交
  7. 27 7月, 2016 1 次提交
  8. 06 6月, 2016 1 次提交
  9. 09 5月, 2016 2 次提交
  10. 05 5月, 2016 1 次提交
  11. 21 3月, 2016 5 次提交
  12. 16 3月, 2016 1 次提交
  13. 18 11月, 2015 2 次提交
  14. 06 10月, 2015 1 次提交
  15. 04 9月, 2015 1 次提交
  16. 01 9月, 2015 1 次提交
  17. 26 8月, 2015 1 次提交
  18. 29 7月, 2015 2 次提交
  19. 06 7月, 2015 1 次提交
    • A
      drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch · 9e000847
      Arun Siluvery 提交于
      In this WA we need to set GEN8_L3SQCREG4[21:21] and reset it after PIPE_CONTROL
      instruction but there is a slight complication as this is applied in WA batch
      where the values are only initialized once.
      Dave identified an issue with the current implementation where the register value
      is read once at the beginning and it is reused; this patch corrects this by saving
      the register value to memory, update register with the bit of our interest and
      restore it back with original value.
      
      This implementation uses MI_LOAD_REGISTER_MEM which is currently only used
      by command parser and was using a default length of 0. This is now updated
      with correct length and moved to appropriate place.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Dave Gordon <david.s.gordon@intel.com>
      Signed-off-by: NArun Siluvery <arun.siluvery@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      9e000847
  20. 15 6月, 2015 1 次提交