vulkan/meta: Add key types
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
committed by
Marge Bot
parent
07530902b2
commit
ecf5c5c46d
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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};
|
||||
|
||||
Reference in New Issue
Block a user