summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Justen <[email protected]>2018-03-28 01:42:50 -0700
committerJordan Justen <[email protected]>2019-10-28 00:09:13 -0700
commitd4a3299ba1a40c48f74e963a6451e9ebb63993b8 (patch)
treeb6d9e321739a228512f0001271f83cc29997426d /src
parent0d0290bb3f74ecb794ec5f0d8fa07709ba3e4ad4 (diff)
anv/gen12: Initialize aux map context
Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/intel/vulkan/anv_device.c21
-rw-r--r--src/intel/vulkan/anv_private.h3
2 files changed, 22 insertions, 2 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 9f7dc9aaaeb..9e6eaab8c80 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -43,7 +43,7 @@
#include "util/xmlpool.h"
#include "git_sha1.h"
#include "vk_util.h"
-#include "common/gen_buffer_alloc.h"
+#include "common/gen_aux_map.h"
#include "common/gen_defines.h"
#include "compiler/glsl_types.h"
@@ -2655,9 +2655,16 @@ VkResult anv_CreateDevice(
goto fail_surface_state_pool;
}
+ if (device->info.gen >= 12) {
+ device->aux_map_ctx = gen_aux_map_init(device, &aux_map_allocator,
+ &physical_device->info);
+ if (!device->aux_map_ctx)
+ goto fail_binding_table_pool;
+ }
+
result = anv_bo_init_new(&device->workaround_bo, device, 4096);
if (result != VK_SUCCESS)
- goto fail_binding_table_pool;
+ goto fail_surface_aux_map_pool;
if (physical_device->use_softpin)
device->workaround_bo.flags |= EXEC_OBJECT_PINNED;
@@ -2721,6 +2728,11 @@ VkResult anv_CreateDevice(
anv_scratch_pool_finish(device, &device->scratch_pool);
anv_gem_munmap(device->workaround_bo.map, device->workaround_bo.size);
anv_gem_close(device, device->workaround_bo.gem_handle);
+ fail_surface_aux_map_pool:
+ if (device->info.gen >= 12) {
+ gen_aux_map_finish(device->aux_map_ctx);
+ device->aux_map_ctx = NULL;
+ }
fail_binding_table_pool:
if (physical_device->use_softpin)
anv_state_pool_finish(&device->binding_table_pool);
@@ -2789,6 +2801,11 @@ void anv_DestroyDevice(
if (device->info.gen >= 10)
anv_gem_close(device, device->hiz_clear_bo.gem_handle);
+ if (device->info.gen >= 12) {
+ gen_aux_map_finish(device->aux_map_ctx);
+ device->aux_map_ctx = NULL;
+ }
+
if (physical_device->use_softpin)
anv_state_pool_finish(&device->binding_table_pool);
anv_state_pool_finish(&device->surface_state_pool);
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 30f1da39425..33614bb9426 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -73,6 +73,7 @@ struct anv_buffer_view;
struct anv_image_view;
struct anv_instance;
+struct gen_aux_map_context;
struct gen_l3_config;
struct gen_perf_config;
@@ -1174,6 +1175,8 @@ struct anv_device {
int perf_fd; /* -1 if no opened */
uint64_t perf_metric; /* 0 if unset */
+
+ struct gen_aux_map_context *aux_map_ctx;
};
static inline struct anv_state_pool *