From c8626a20bbe1435cab8bb73f1d6b075e1790ec00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Tue, 7 Feb 2023 08:42:00 -0800 Subject: [PATCH] anv: Start to move anv_gem_stubs.c to kmd backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Roberto de Souza Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/dev/intel_kmd.h | 1 + src/intel/vulkan/anv_allocator.c | 6 ++++-- src/intel/vulkan/anv_gem.c | 14 +++++--------- src/intel/vulkan/anv_gem_stubs.c | 17 +++++++++++++---- src/intel/vulkan/anv_kmd_backend.c | 2 ++ src/intel/vulkan/anv_kmd_backend.h | 1 + src/intel/vulkan/anv_private.h | 3 --- src/intel/vulkan/tests/block_pool_grow_first.c | 1 + src/intel/vulkan/tests/block_pool_no_free.c | 1 + src/intel/vulkan/tests/state_pool.c | 1 + .../vulkan/tests/state_pool_free_list_only.c | 1 + src/intel/vulkan/tests/state_pool_no_free.c | 1 + src/intel/vulkan/tests/state_pool_padding.c | 1 + 13 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/intel/dev/intel_kmd.h b/src/intel/dev/intel_kmd.h index d30cf819163..4babbdfdc78 100644 --- a/src/intel/dev/intel_kmd.h +++ b/src/intel/dev/intel_kmd.h @@ -26,6 +26,7 @@ enum intel_kmd_type { INTEL_KMD_TYPE_INVALID = 0, INTEL_KMD_TYPE_I915, + INTEL_KMD_TYPE_STUB, /* Only used by ANV to run tests */ INTEL_KMD_TYPE_LAST }; diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 157f5792b6b..aef11a702bf 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -1478,8 +1478,10 @@ anv_device_alloc_bo(struct anv_device *device, regions[nregions++] = device->physical->sys.region; } - uint32_t gem_handle = anv_gem_create(device, size + ccs_size, alloc_flags, - nregions, regions); + uint32_t gem_handle = device->kmd_backend->gem_create(device, regions, + nregions, + size + ccs_size, + alloc_flags); if (gem_handle == 0) return vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY); diff --git a/src/intel/vulkan/anv_gem.c b/src/intel/vulkan/anv_gem.c index eacc7fb5057..87a4df2893d 100644 --- a/src/intel/vulkan/anv_gem.c +++ b/src/intel/vulkan/anv_gem.c @@ -42,15 +42,6 @@ anv_gem_close(struct anv_device *device, uint32_t gem_handle) intel_ioctl(device->fd, DRM_IOCTL_GEM_CLOSE, &close); } -uint32_t -anv_gem_create(struct anv_device *device, uint64_t anv_bo_size, - enum anv_bo_alloc_flags alloc_flags, uint32_t num_regions, - const struct intel_memory_class_instance **regions) -{ - return device->kmd_backend->gem_create(device, regions, num_regions, - anv_bo_size, alloc_flags); -} - /** * Wrapper around DRM_IOCTL_I915_GEM_MMAP. Returns MAP_FAILED on error. */ @@ -255,3 +246,8 @@ anv_gem_fd_to_handle(struct anv_device *device, int fd) return args.handle; } + +const struct anv_kmd_backend *anv_stub_kmd_backend_get(void) +{ + return NULL; +} diff --git a/src/intel/vulkan/anv_gem_stubs.c b/src/intel/vulkan/anv_gem_stubs.c index 82ddc41a59e..1a15e0074c1 100644 --- a/src/intel/vulkan/anv_gem_stubs.c +++ b/src/intel/vulkan/anv_gem_stubs.c @@ -33,10 +33,11 @@ anv_gem_close(struct anv_device *device, uint32_t gem_handle) close(gem_handle); } -uint32_t -anv_gem_create(struct anv_device *device, uint64_t size, - enum anv_bo_alloc_flags alloc_flags, uint32_t num_regions, - const struct intel_memory_class_instance **regions) +static uint32_t +stub_gem_create(struct anv_device *device, + const struct intel_memory_class_instance **regions, + uint16_t num_regions, uint64_t size, + enum anv_bo_alloc_flags alloc_flags) { int fd = os_create_anonymous_file(size, "fake bo"); if (fd == -1) @@ -123,3 +124,11 @@ anv_i915_query(int fd, uint64_t query_id, void *buffer, { unreachable("Unused"); } + +const struct anv_kmd_backend *anv_stub_kmd_backend_get(void) +{ + static const struct anv_kmd_backend stub_backend = { + .gem_create = stub_gem_create, + }; + return &stub_backend; +} diff --git a/src/intel/vulkan/anv_kmd_backend.c b/src/intel/vulkan/anv_kmd_backend.c index 1cc2aa5840a..c532ad8c339 100644 --- a/src/intel/vulkan/anv_kmd_backend.c +++ b/src/intel/vulkan/anv_kmd_backend.c @@ -31,6 +31,8 @@ anv_kmd_backend_get(enum intel_kmd_type type) switch (type) { case INTEL_KMD_TYPE_I915: return anv_i915_kmd_backend_get(); + case INTEL_KMD_TYPE_STUB: + return anv_stub_kmd_backend_get(); default: return NULL; } diff --git a/src/intel/vulkan/anv_kmd_backend.h b/src/intel/vulkan/anv_kmd_backend.h index 092cfbfc6f5..02fdf69cfa8 100644 --- a/src/intel/vulkan/anv_kmd_backend.h +++ b/src/intel/vulkan/anv_kmd_backend.h @@ -46,3 +46,4 @@ const struct anv_kmd_backend *anv_kmd_backend_get(enum intel_kmd_type type); /* Internal functions, should only be called by anv_kmd_backend_get() */ const struct anv_kmd_backend *anv_i915_kmd_backend_get(void); +const struct anv_kmd_backend *anv_stub_kmd_backend_get(void); diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 5435f2a9726..faf72358f8d 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1348,9 +1348,6 @@ void* anv_gem_mmap(struct anv_device *device, struct anv_bo *bo, uint64_t offset, uint64_t size, uint32_t flags); void anv_gem_munmap(struct anv_device *device, void *p, uint64_t size); void anv_gem_close(struct anv_device *device, uint32_t gem_handle); -uint32_t anv_gem_create(struct anv_device *device, uint64_t anv_bo_size, - enum anv_bo_alloc_flags alloc_flags, uint32_t num_regions, - const struct intel_memory_class_instance **regions); uint32_t anv_gem_userptr(struct anv_device *device, void *mem, size_t size); int anv_gem_wait(struct anv_device *device, uint32_t gem_handle, int64_t *timeout_ns); int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle, diff --git a/src/intel/vulkan/tests/block_pool_grow_first.c b/src/intel/vulkan/tests/block_pool_grow_first.c index 7359b66cb2a..50eabc8329f 100644 --- a/src/intel/vulkan/tests/block_pool_grow_first.c +++ b/src/intel/vulkan/tests/block_pool_grow_first.c @@ -37,6 +37,7 @@ int main(void) const uint32_t initial_size = block_size / 2; anv_device_set_physical(&device, &physical_device); + device.kmd_backend = anv_kmd_backend_get(INTEL_KMD_TYPE_STUB); pthread_mutex_init(&device.mutex, NULL); anv_bo_cache_init(&device.bo_cache, &device); anv_block_pool_init(&pool, &device, "test", 4096, initial_size); diff --git a/src/intel/vulkan/tests/block_pool_no_free.c b/src/intel/vulkan/tests/block_pool_no_free.c index 9a9f49cb965..1824b677d42 100644 --- a/src/intel/vulkan/tests/block_pool_no_free.c +++ b/src/intel/vulkan/tests/block_pool_no_free.c @@ -105,6 +105,7 @@ static void run_test() struct anv_block_pool pool; anv_device_set_physical(&device, &physical_device); + device.kmd_backend = anv_kmd_backend_get(INTEL_KMD_TYPE_STUB); pthread_mutex_init(&device.mutex, NULL); anv_bo_cache_init(&device.bo_cache, &device); anv_block_pool_init(&pool, &device, "test", 4096, 4096); diff --git a/src/intel/vulkan/tests/state_pool.c b/src/intel/vulkan/tests/state_pool.c index 57cfa73d54e..26d0b7b67fa 100644 --- a/src/intel/vulkan/tests/state_pool.c +++ b/src/intel/vulkan/tests/state_pool.c @@ -40,6 +40,7 @@ int main(void) struct anv_state_pool state_pool; anv_device_set_physical(&device, &physical_device); + device.kmd_backend = anv_kmd_backend_get(INTEL_KMD_TYPE_STUB); pthread_mutex_init(&device.mutex, NULL); anv_bo_cache_init(&device.bo_cache, &device); diff --git a/src/intel/vulkan/tests/state_pool_free_list_only.c b/src/intel/vulkan/tests/state_pool_free_list_only.c index 602346fedae..50dc97ffb1d 100644 --- a/src/intel/vulkan/tests/state_pool_free_list_only.c +++ b/src/intel/vulkan/tests/state_pool_free_list_only.c @@ -39,6 +39,7 @@ int main(void) struct anv_state_pool state_pool; anv_device_set_physical(&device, &physical_device); + device.kmd_backend = anv_kmd_backend_get(INTEL_KMD_TYPE_STUB); pthread_mutex_init(&device.mutex, NULL); anv_bo_cache_init(&device.bo_cache, &device); anv_state_pool_init(&state_pool, &device, "test", 4096, 0, 4096); diff --git a/src/intel/vulkan/tests/state_pool_no_free.c b/src/intel/vulkan/tests/state_pool_no_free.c index fe076830406..bd3e20d70e5 100644 --- a/src/intel/vulkan/tests/state_pool_no_free.c +++ b/src/intel/vulkan/tests/state_pool_no_free.c @@ -60,6 +60,7 @@ static void run_test() struct anv_state_pool state_pool; anv_device_set_physical(&device, &physical_device); + device.kmd_backend = anv_kmd_backend_get(INTEL_KMD_TYPE_STUB); pthread_mutex_init(&device.mutex, NULL); anv_bo_cache_init(&device.bo_cache, &device); anv_state_pool_init(&state_pool, &device, "test", 4096, 0, 64); diff --git a/src/intel/vulkan/tests/state_pool_padding.c b/src/intel/vulkan/tests/state_pool_padding.c index b76ba8ad608..8d613a2859f 100644 --- a/src/intel/vulkan/tests/state_pool_padding.c +++ b/src/intel/vulkan/tests/state_pool_padding.c @@ -31,6 +31,7 @@ int main(void) struct anv_state_pool state_pool; anv_device_set_physical(&device, &physical_device); + device.kmd_backend = anv_kmd_backend_get(INTEL_KMD_TYPE_STUB); pthread_mutex_init(&device.mutex, NULL); anv_bo_cache_init(&device.bo_cache, &device); anv_state_pool_init(&state_pool, &device, "test", 4096, 0, 4096);