vkd3d-shader: Implement scanning compute shader thread group size information.

Metal doesn't allow the thread group size to be specified by shaders,
instead requiring it to be specified by the dispatch API.
This commit is contained in:
Henri Verbeet
2025-05-31 19:53:41 +02:00
parent 320c3c9652
commit 5bbd44c063
Notes: Henri Verbeet 2025-08-21 16:34:50 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1674
3 changed files with 105 additions and 0 deletions

View File

@@ -120,6 +120,11 @@ enum vkd3d_shader_structure_type
* \since 1.15
*/
VKD3D_SHADER_STRUCTURE_TYPE_SCAN_HULL_SHADER_TESSELLATION_INFO,
/**
* The structure is a vkd3d_shader_scan_thread_group_size_info structure.
* \since 1.18
*/
VKD3D_SHADER_STRUCTURE_TYPE_SCAN_THREAD_GROUP_SIZE_INFO,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STRUCTURE_TYPE),
};
@@ -2282,6 +2287,24 @@ struct vkd3d_shader_scan_hull_shader_tessellation_info
enum vkd3d_shader_tessellator_partitioning partitioning;
};
/**
* A chained structure describing the thread group size in a compute shader.
*
* This structure extends vkd3d_shader_compile_info.
*
* \since 1.18
*/
struct vkd3d_shader_scan_thread_group_size_info
{
/** Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_THREAD_GROUP_SIZE_INFO. */
enum vkd3d_shader_structure_type type;
/** Optional pointer to a structure containing further parameters. */
const void *next;
/** The thread group size in the x/y/z direction. */
unsigned int x, y, z;
};
/**
* Data type of a shader varying, returned as part of struct
* vkd3d_shader_signature_element.