vkd3d: Simplify meta operation API a bit.
Passing the main struct to the public functions allows us to share common data between multiple types of operations. Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
082999fd71
commit
e74a48cdc6
|
@ -5083,10 +5083,10 @@ static void d3d12_command_list_clear_uav(struct d3d12_command_list *list,
|
|||
layer_count = view->info.texture.vk_view_type == VK_IMAGE_VIEW_TYPE_3D
|
||||
? d3d12_resource_desc_get_depth(&resource->desc, miplevel_idx)
|
||||
: view->info.texture.layer_count;
|
||||
pipeline = vkd3d_clear_uav_ops_get_clear_image_pipeline(
|
||||
&list->device->meta_ops.clear_uav, view->info.texture.vk_view_type,
|
||||
pipeline = vkd3d_meta_get_clear_image_uav_pipeline(
|
||||
&list->device->meta_ops, view->info.texture.vk_view_type,
|
||||
view->format->type == VKD3D_FORMAT_TYPE_UINT);
|
||||
workgroup_size = vkd3d_get_clear_image_uav_workgroup_size(view->info.texture.vk_view_type);
|
||||
workgroup_size = vkd3d_meta_get_clear_image_uav_workgroup_size(view->info.texture.vk_view_type);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -5097,10 +5097,9 @@ static void d3d12_command_list_clear_uav(struct d3d12_command_list *list,
|
|||
|
||||
miplevel_idx = 0;
|
||||
layer_count = 1;
|
||||
pipeline = vkd3d_clear_uav_ops_get_clear_buffer_pipeline(
|
||||
&list->device->meta_ops.clear_uav,
|
||||
view->format->type == VKD3D_FORMAT_TYPE_UINT);
|
||||
workgroup_size = vkd3d_get_clear_buffer_uav_workgroup_size();
|
||||
pipeline = vkd3d_meta_get_clear_buffer_uav_pipeline(
|
||||
&list->device->meta_ops, view->format->type == VKD3D_FORMAT_TYPE_UINT);
|
||||
workgroup_size = vkd3d_meta_get_clear_buffer_uav_workgroup_size();
|
||||
}
|
||||
|
||||
if (!(write_set.dstSet = d3d12_command_allocator_allocate_descriptor_set(
|
||||
|
|
|
@ -255,9 +255,10 @@ void vkd3d_clear_uav_ops_cleanup(struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
|||
}
|
||||
}
|
||||
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_clear_uav_ops_get_clear_buffer_pipeline(const struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_meta_get_clear_buffer_uav_pipeline(struct vkd3d_meta_ops *meta_ops,
|
||||
bool as_uint)
|
||||
{
|
||||
struct vkd3d_clear_uav_ops *meta_clear_uav_ops = &meta_ops->clear_uav;
|
||||
struct vkd3d_clear_uav_pipeline info;
|
||||
|
||||
const struct vkd3d_clear_uav_pipelines *pipelines = as_uint
|
||||
|
@ -270,9 +271,10 @@ struct vkd3d_clear_uav_pipeline vkd3d_clear_uav_ops_get_clear_buffer_pipeline(co
|
|||
return info;
|
||||
}
|
||||
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_clear_uav_ops_get_clear_image_pipeline(const struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_meta_get_clear_image_uav_pipeline(struct vkd3d_meta_ops *meta_ops,
|
||||
VkImageViewType image_view_type, bool as_uint)
|
||||
{
|
||||
struct vkd3d_clear_uav_ops *meta_clear_uav_ops = &meta_ops->clear_uav;
|
||||
struct vkd3d_clear_uav_pipeline info;
|
||||
|
||||
const struct vkd3d_clear_uav_pipelines *pipelines = as_uint
|
||||
|
@ -307,7 +309,7 @@ struct vkd3d_clear_uav_pipeline vkd3d_clear_uav_ops_get_clear_image_pipeline(con
|
|||
return info;
|
||||
}
|
||||
|
||||
VkExtent3D vkd3d_get_clear_image_uav_workgroup_size(VkImageViewType view_type)
|
||||
VkExtent3D vkd3d_meta_get_clear_image_uav_workgroup_size(VkImageViewType view_type)
|
||||
{
|
||||
switch (view_type)
|
||||
{
|
||||
|
|
|
@ -1391,17 +1391,6 @@ HRESULT vkd3d_clear_uav_ops_init(struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
|||
struct d3d12_device *device) DECLSPEC_HIDDEN;
|
||||
void vkd3d_clear_uav_ops_cleanup(struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
||||
struct d3d12_device *device) DECLSPEC_HIDDEN;
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_clear_uav_ops_get_clear_buffer_pipeline(const struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
||||
bool as_uint) DECLSPEC_HIDDEN;
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_clear_uav_ops_get_clear_image_pipeline(const struct vkd3d_clear_uav_ops *meta_clear_uav_ops,
|
||||
VkImageViewType image_view_type, bool as_uint) DECLSPEC_HIDDEN;
|
||||
VkExtent3D vkd3d_get_clear_image_uav_workgroup_size(VkImageViewType view_type) DECLSPEC_HIDDEN;
|
||||
|
||||
static inline VkExtent3D vkd3d_get_clear_buffer_uav_workgroup_size()
|
||||
{
|
||||
VkExtent3D result = { 128, 1, 1 };
|
||||
return result;
|
||||
}
|
||||
|
||||
struct vkd3d_meta_ops
|
||||
{
|
||||
|
@ -1411,6 +1400,18 @@ struct vkd3d_meta_ops
|
|||
HRESULT vkd3d_meta_ops_init(struct vkd3d_meta_ops *meta_ops, struct d3d12_device *device) DECLSPEC_HIDDEN;
|
||||
HRESULT vkd3d_meta_ops_cleanup(struct vkd3d_meta_ops *meta_ops, struct d3d12_device *device) DECLSPEC_HIDDEN;
|
||||
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_meta_get_clear_buffer_uav_pipeline(struct vkd3d_meta_ops *meta_ops,
|
||||
bool as_uint) DECLSPEC_HIDDEN;
|
||||
struct vkd3d_clear_uav_pipeline vkd3d_meta_get_clear_image_uav_pipeline(struct vkd3d_meta_ops *meta_ops,
|
||||
VkImageViewType image_view_type, bool as_uint) DECLSPEC_HIDDEN;
|
||||
VkExtent3D vkd3d_meta_get_clear_image_uav_workgroup_size(VkImageViewType view_type) DECLSPEC_HIDDEN;
|
||||
|
||||
inline VkExtent3D vkd3d_meta_get_clear_buffer_uav_workgroup_size()
|
||||
{
|
||||
VkExtent3D result = { 128, 1, 1 };
|
||||
return result;
|
||||
}
|
||||
|
||||
struct vkd3d_physical_device_info
|
||||
{
|
||||
/* properties */
|
||||
|
|
Loading…
Reference in New Issue