Mesa (main): anv: Require softpin on Gen8+
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jun 8 23:09:30 UTC 2021
Module: Mesa
Branch: main
Commit: 04ccfeae98f2b5ac03feb4425ac805a48ce6fac3
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=04ccfeae98f2b5ac03feb4425ac805a48ce6fac3
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Fri Apr 3 08:17:43 2020 -0500
anv: Require softpin on Gen8+
Softpin was added to i915 in
commit 506a8e87d8d2746b9e9d2433503fe237c54e4750
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Dec 8 11:55:07 2015 +0000
drm/i915: Add soft-pinning API for execbuffer
which was included in Linux 4.5. It's been over 5 years so it's
probably reasonable to make it a hard requirement.
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Acked-by: Emma Anholt <emma at anholt.net>
Acked-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11236>
---
src/intel/vulkan/anv_device.c | 21 +++++++++++++--------
src/intel/vulkan/anv_private.h | 1 -
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 2545623c8ea..547ed88522a 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -359,7 +359,6 @@ anv_physical_device_init_heaps(struct anv_physical_device *device, int fd)
* address is required for the vertex cache flush workaround.
*/
device->supports_48bit_addresses = (device->info.ver >= 8) &&
- device->has_softpin &&
device->gtt_size > (4ULL << 30 /* GiB */);
anv_init_meminfo(device, fd);
@@ -757,7 +756,14 @@ anv_physical_device_try_create(struct anv_instance *instance,
goto fail_base;
}
- device->has_softpin = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN);
+ if (device->info.ver >= 8 && !device->info.is_cherryview &&
+ !anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN)) {
+ result = vk_errorfi(device->instance, NULL,
+ VK_ERROR_INITIALIZATION_FAILED,
+ "kernel missing softpin");
+ goto fail_alloc;
+ }
+
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
device->has_exec_capture = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_CAPTURE);
device->has_exec_fence = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE);
@@ -777,8 +783,9 @@ anv_physical_device_try_create(struct anv_instance *instance,
if (result != VK_SUCCESS)
goto fail_base;
- device->use_softpin = device->has_softpin &&
- device->supports_48bit_addresses;
+ device->use_softpin = device->info.ver >= 8 &&
+ !device->info.is_cherryview;
+ assert(device->use_softpin == device->supports_48bit_addresses);
device->has_context_isolation =
anv_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION);
@@ -804,11 +811,9 @@ anv_physical_device_try_create(struct anv_instance *instance,
device->has_a64_buffer_access = device->info.ver >= 8 &&
device->use_softpin;
- /* We first get bindless image access on Skylake and we can only really do
- * it if we don't have any relocations so we need softpin.
+ /* We first get bindless image access on Skylake.
*/
- device->has_bindless_images = device->info.ver >= 9 &&
- device->use_softpin;
+ device->has_bindless_images = device->info.ver >= 9;
/* We've had bindless samplers since Ivy Bridge (forever in Vulkan terms)
* because it's just a matter of setting the sampler address in the sample
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 660fcf040ec..059319fe609 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -910,7 +910,6 @@ struct anv_physical_device {
*/
uint32_t n_perf_query_commands;
int cmd_parser_version;
- bool has_softpin;
bool has_exec_async;
bool has_exec_capture;
bool has_exec_fence;
More information about the mesa-commit
mailing list