diff options
author | 2019-11-13 06:25:21 +0000 | |
---|---|---|
committer | 2019-11-13 06:25:21 +0000 | |
commit | 95bc4d5a2144d65f1b150b0f3165a1700b27aa82 (patch) | |
tree | 6c8aed42a8db328adf4e7755cf062110d3ae7cf0 | |
parent | drm/i915: Support ro ppgtt mapped cmdparser shadow buffers (diff) | |
download | wireguard-openbsd-95bc4d5a2144d65f1b150b0f3165a1700b27aa82.tar.xz wireguard-openbsd-95bc4d5a2144d65f1b150b0f3165a1700b27aa82.zip |
drm/i915: Allow parsing of unsized batches
From Jon Bloomfield
fea688c5dd8197fe1ad14a5a2596fee36f993bb8 in linux 4.19.y/4.19.84
435e8fc059dbe0eec823a75c22da2972390ba9e0 in mainline linux
-rw-r--r-- | sys/dev/pci/drm/i915/i915_gem_execbuffer.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/pci/drm/i915/i915_gem_execbuffer.c b/sys/dev/pci/drm/i915/i915_gem_execbuffer.c index 7639a16df05..3f9aa19f108 100644 --- a/sys/dev/pci/drm/i915/i915_gem_execbuffer.c +++ b/sys/dev/pci/drm/i915/i915_gem_execbuffer.c @@ -316,7 +316,8 @@ static inline u64 gen8_noncanonical_addr(u64 address) static inline bool eb_use_cmdparser(const struct i915_execbuffer *eb) { return intel_engine_requires_cmd_parser(eb->engine) || - (intel_engine_using_cmd_parser(eb->engine) && eb->batch_len); + (intel_engine_using_cmd_parser(eb->engine) && + eb->args->batch_len); } static int eb_create(struct i915_execbuffer *eb) @@ -2373,6 +2374,9 @@ i915_gem_do_execbuffer(struct drm_device *dev, goto err_vma; } + if (eb.batch_len == 0) + eb.batch_len = eb.batch->size - eb.batch_start_offset; + if (eb_use_cmdparser(&eb)) { struct i915_vma *vma; @@ -2383,9 +2387,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, } } - if (eb.batch_len == 0) - eb.batch_len = eb.batch->size - eb.batch_start_offset; - /* * snb/ivb/vlv conflate the "batch in ppgtt" bit with the "non-secure * batch" bit. Hence we need to pin secure batches into the global gtt. |