vulkan/meta: Add key types

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Faith Ekstrand
2023-01-30 20:11:59 -06:00
committed by Marge Bot
parent 07530902b2
commit ecf5c5c46d
3 changed files with 17 additions and 0 deletions
+8
View File
@@ -134,6 +134,10 @@ vk_meta_lookup_object(struct vk_meta_device *meta,
VkObjectType obj_type,
const void *key_data, size_t key_size)
{
assert(key_size >= sizeof(enum vk_meta_object_key_type));
assert(*(enum vk_meta_object_key_type *)key_data !=
VK_META_OBJECT_KEY_TYPE_INVALD);
struct cache_key key = {
.obj_type = obj_type,
.key_size = key_size,
@@ -163,6 +167,10 @@ vk_meta_cache_object(struct vk_device *device,
VkObjectType obj_type,
uint64_t handle)
{
assert(key_size >= sizeof(enum vk_meta_object_key_type));
assert(*(enum vk_meta_object_key_type *)key_data !=
VK_META_OBJECT_KEY_TYPE_INVALD);
struct cache_key *key = cache_key_create(obj_type, key_data, key_size);
struct vk_object_base *obj =
vk_object_base_from_u64_handle(handle, obj_type);
+7
View File
@@ -74,6 +74,13 @@ VkResult vk_meta_device_init(struct vk_device *device,
void vk_meta_device_finish(struct vk_device *device,
struct vk_meta_device *meta);
/** Keys should start with one of these to ensure uniqueness */
enum vk_meta_object_key_type {
VK_META_OBJECT_KEY_TYPE_INVALD = 0,
VK_META_OBJECT_KEY_CLEAR_PIPELINE,
VK_META_OBJECT_KEY_BLIT_PIPELINE,
};
uint64_t vk_meta_lookup_object(struct vk_meta_device *meta,
VkObjectType obj_type,
const void *key_data, size_t key_size);
+2
View File
@@ -33,6 +33,7 @@
#include "nir_builder.h"
struct vk_meta_clear_key {
enum vk_meta_object_key_type key_type;
struct vk_meta_rendering_info render;
uint8_t color_attachments_cleared;
bool clear_depth;
@@ -208,6 +209,7 @@ vk_meta_clear_attachments(struct vk_command_buffer *cmd,
struct vk_meta_clear_key key;
memset(&key, 0, sizeof(key));
key.key_type = VK_META_OBJECT_KEY_CLEAR_PIPELINE;
vk_meta_rendering_info_copy(&key.render, render);
struct vk_meta_clear_push_data push = {0};