vulkan/meta: Add a create_sampler helper
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
committed by
Marge Bot
parent
c13c6d04d7
commit
edef53c337
@@ -96,6 +96,9 @@ destroy_object(struct vk_device *device, struct vk_object_base *obj)
|
||||
case VK_OBJECT_TYPE_PIPELINE:
|
||||
disp->DestroyPipeline(_device, (VkPipeline)(uintptr_t)obj, NULL);
|
||||
break;
|
||||
case VK_OBJECT_TYPE_SAMPLER:
|
||||
disp->DestroySampler(_device, (VkSampler)(uintptr_t)obj, NULL);
|
||||
break;
|
||||
default:
|
||||
unreachable("Unsupported object type");
|
||||
}
|
||||
@@ -195,6 +198,28 @@ vk_meta_cache_object(struct vk_device *device,
|
||||
}
|
||||
}
|
||||
|
||||
VkResult
|
||||
vk_meta_create_sampler(struct vk_device *device,
|
||||
struct vk_meta_device *meta,
|
||||
const VkSamplerCreateInfo *info,
|
||||
const void *key_data, size_t key_size,
|
||||
VkSampler *sampler_out)
|
||||
{
|
||||
const struct vk_device_dispatch_table *disp = &device->dispatch_table;
|
||||
VkDevice _device = vk_device_to_handle(device);
|
||||
|
||||
VkSampler sampler;
|
||||
VkResult result = disp->CreateSampler(_device, info, NULL, &sampler);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
*sampler_out = (VkSampler)
|
||||
vk_meta_cache_object(device, meta, key_data, key_size,
|
||||
VK_OBJECT_TYPE_SAMPLER,
|
||||
(uint64_t)sampler);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult
|
||||
vk_meta_create_descriptor_set_layout(struct vk_device *device,
|
||||
struct vk_meta_device *meta,
|
||||
|
||||
@@ -117,6 +117,14 @@ vk_meta_lookup_pipeline(struct vk_meta_device *meta,
|
||||
key_data, key_size);
|
||||
}
|
||||
|
||||
static inline VkSampler
|
||||
vk_meta_lookup_sampler(struct vk_meta_device *meta,
|
||||
const void *key_data, size_t key_size)
|
||||
{
|
||||
return (VkSampler)vk_meta_lookup_object(meta, VK_OBJECT_TYPE_SAMPLER,
|
||||
key_data, key_size);
|
||||
}
|
||||
|
||||
struct vk_meta_rendering_info {
|
||||
uint32_t view_mask;
|
||||
uint32_t samples;
|
||||
@@ -155,6 +163,13 @@ vk_meta_create_compute_pipeline(struct vk_device *device,
|
||||
const void *key_data, size_t key_size,
|
||||
VkPipeline *pipeline_out);
|
||||
|
||||
VkResult
|
||||
vk_meta_create_sampler(struct vk_device *device,
|
||||
struct vk_meta_device *meta,
|
||||
const VkSamplerCreateInfo *info,
|
||||
const void *key_data, size_t key_size,
|
||||
VkSampler *sampler_out);
|
||||
|
||||
struct vk_meta_object_list {
|
||||
struct util_dynarray arr;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user